PIPS-NLP
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
MtxSchurDecompSolver Class Reference

#include <MtxSchurDecompSolver.h>

Inheritance diagram for MtxSchurDecompSolver:
DoubleLinearSolver

Public Member Functions

virtual int getSchurDim ()
 
virtual int getSchurNNz ()
 
virtual void buildDenseSchurMat (DoubleMatrix *MatIn, int *schurVarIDX)
 
virtual int matrixChanged ()
 
virtual void initializeKKT_Dense (DenseSymMatrix *dkktSC)
 
virtual void addTermToDenseSchurCompl (SparseSymMatrix *DiagMat, SparseGenMatrix *BordMat, DenseSymMatrix &SC)
 
virtual void addLnizi (SparseGenMatrix *borderMat, OoqpVector &z0_, OoqpVector &zi_)
 
virtual void LniTransMult (SparseGenMatrix *borderMat, SimpleVector &y, double alpha, SimpleVector &x)
 
virtual void finalizeKKT (SparseSymMatrix *diag0Mat, DenseSymMatrix *kktd)
 
 MtxSchurDecompSolver ()
 
 MtxSchurDecompSolver (DoubleMatrix *MatIn, const int schurDim, int *inputMatType, int *schurVarIDX, const int localNegaEigVal_in)
 
 ~MtxSchurDecompSolver ()
 
virtual void solve1stVarOnly (OoqpVector &rhs_, OoqpVector &sol_SC)
 
- Public Member Functions inherited from DoubleLinearSolver
 DoubleLinearSolver ()
 
virtual void solveTrans (OoqpVector &x)
 
virtual void solve (GenMatrix &rhs)
 
virtual void Lsolve (OoqpVector &x)
 
virtual void Dsolve (OoqpVector &x)
 
virtual void Ltsolve (OoqpVector &x)
 
virtual ~DoubleLinearSolver ()
 

Protected Member Functions

void newMtxSchurDecompSolver (DoubleMatrix *MatIn, const int schurDim, int *inputMatType)
 
virtual void firstCall ()
 
virtual void _buildDenseSchurMat_RLSS (DoubleMatrix *MatIn, int *schurVarIDX)
 
virtual void _firstCall_RLSS ()
 
virtual int _numericalFact_RLSS ()
 
virtual void Lsolve (OoqpVector *diag0_Rhs, OoqpVector *diag1_Rhs)
 
virtual void Dsolve (OoqpVector *diag0_Rhs, OoqpVector *diag1_Rhs)
 
virtual void Ltsolve (OoqpVector *diag0_Rhs, OoqpVector *diag1_Rhs)
 
virtual void diagonalChanged (int idiag, int extent)
 
virtual void solve (OoqpVector &x)
 

Protected Attributes

DoubleLinearSolversolver_schur
 
DoubleLinearSolversolver_diag1
 
int requireUpdate
 
int firstCallFlag
 
int mtxCase
 
int borderDim_m
 
int borderDim_n
 
int diag0MatDim
 
int diag1MatDim
 
int fullMatDim
 
int borderMatNNz
 
int diag0MatNNz
 
int diag1MatNNz
 
int fullMatNNz
 
double * borderMat_ele
 
double * diag0Mat_ele
 
double * diag1Mat_ele
 
int * borderMat_rowBeg
 
int * diag0Mat_rowBeg
 
int * diag1Mat_rowBeg
 
int * borderMat_colIdx
 
int * diag0Mat_colIdx
 
int * diag1Mat_colIdx
 
int * Border_Full_eleMap
 
int * Diag1_Full_eleMap
 
int * Diag0_Full_eleMap
 
int * schurVarIDinFull
 
int schurMatDim
 
int schurMatNNz
 
double * schurMat_ele
 
DenseSymMatrixdkktSC
 
SparseSymMatrixdiag0Mat
 
SparseSymMatrixdiag1Mat
 
SparseGenMatrixborderMat
 
SparseSymMatrixMsys
 
int localNegaEigVal
 

Private Attributes

int * diag1VarIDinFull
 
int * FullVarIDinDiag01
 

Additional Inherited Members

- Public Attributes inherited from DoubleLinearSolver
int negEigVal
 
int KryIter
 

Detailed Description

fullMat =

diag1Mat | borderMat

borderMat' | diag0Mat

Constructor & Destructor Documentation

MtxSchurDecompSolver::MtxSchurDecompSolver ( )
MtxSchurDecompSolver::MtxSchurDecompSolver ( DoubleMatrix MatIn,
const int  schurDim,
int *  inputMatType,
int *  schurVarIDX,
const int  localNegaEigVal_in 
)
MtxSchurDecompSolver::~MtxSchurDecompSolver ( )
inline

Member Function Documentation

virtual void MtxSchurDecompSolver::_buildDenseSchurMat_RLSS ( DoubleMatrix MatIn,
int *  schurVarIDX 
)
inlineprotectedvirtual
void MtxSchurDecompSolver::_firstCall_RLSS ( )
protectedvirtual
int MtxSchurDecompSolver::_numericalFact_RLSS ( )
protectedvirtual
void MtxSchurDecompSolver::addLnizi ( SparseGenMatrix borderMat,
OoqpVector z0_,
OoqpVector zi_ 
)
virtual

z0 -= Border^T * Li\ [ zi ]

void MtxSchurDecompSolver::addTermToDenseSchurCompl ( SparseSymMatrix DiagMat,
SparseGenMatrix BordMat,
DenseSymMatrix SC 
)
virtual

Computes C = Border^T * inv(Diag_1) * Border.

void MtxSchurDecompSolver::buildDenseSchurMat ( DoubleMatrix MatIn,
int *  schurVarIDX 
)
virtual
virtual void MtxSchurDecompSolver::diagonalChanged ( int  idiag,
int  extent 
)
inlineprotectedvirtual

called if the diagonal elements of the matrix have changed. Triggers a refactorization of the matrix, if necessary.

Parameters
idiagindex of the first diagonal element that changed
extentthe number of diagonal element that changed.

Implements DoubleLinearSolver.

void MtxSchurDecompSolver::Dsolve ( OoqpVector diag0_Rhs,
OoqpVector diag1_Rhs 
)
protectedvirtual

commented - already done in addLnizi

void MtxSchurDecompSolver::finalizeKKT ( SparseSymMatrix diag0Mat,
DenseSymMatrix kktd 
)
virtual
void MtxSchurDecompSolver::firstCall ( )
protectedvirtual
virtual int MtxSchurDecompSolver::getSchurDim ( )
inlinevirtual
virtual int MtxSchurDecompSolver::getSchurNNz ( )
inlinevirtual
void MtxSchurDecompSolver::initializeKKT_Dense ( DenseSymMatrix dkktSC)
virtual
void MtxSchurDecompSolver::LniTransMult ( SparseGenMatrix borderMat,
SimpleVector y,
double  alpha,
SimpleVector x 
)
virtual

memopt

void MtxSchurDecompSolver::Lsolve ( OoqpVector diag0_Rhs,
OoqpVector diag1_Rhs 
)
protectedvirtual
void MtxSchurDecompSolver::Ltsolve ( OoqpVector diag0_Rhs,
OoqpVector diag1_Rhs 
)
protectedvirtual

commented - already done in addLnizi

int MtxSchurDecompSolver::matrixChanged ( )
virtual

called if some elements of the matrix have changed. Triggers a refactorization of the matrix, if necessary.

Implements DoubleLinearSolver.

void MtxSchurDecompSolver::newMtxSchurDecompSolver ( DoubleMatrix MatIn,
const int  schurDim,
int *  inputMatType 
)
protected
void MtxSchurDecompSolver::solve ( OoqpVector x)
protectedvirtual

solves a linear system.

Parameters
xon entry the right hand side of the system to be solved. On exit, the solution.

Implements DoubleLinearSolver.

void MtxSchurDecompSolver::solve1stVarOnly ( OoqpVector rhs_,
OoqpVector sol_SC 
)
virtual

Member Data Documentation

int* MtxSchurDecompSolver::Border_Full_eleMap
protected
int MtxSchurDecompSolver::borderDim_m
protected
int MtxSchurDecompSolver::borderDim_n
protected
SparseGenMatrix* MtxSchurDecompSolver::borderMat
protected
int* MtxSchurDecompSolver::borderMat_colIdx
protected
double* MtxSchurDecompSolver::borderMat_ele
protected
int* MtxSchurDecompSolver::borderMat_rowBeg
protected
int MtxSchurDecompSolver::borderMatNNz
protected
int* MtxSchurDecompSolver::Diag0_Full_eleMap
protected
SparseSymMatrix* MtxSchurDecompSolver::diag0Mat
protected
int * MtxSchurDecompSolver::diag0Mat_colIdx
protected
double * MtxSchurDecompSolver::diag0Mat_ele
protected
int * MtxSchurDecompSolver::diag0Mat_rowBeg
protected
int MtxSchurDecompSolver::diag0MatDim
protected
int MtxSchurDecompSolver::diag0MatNNz
protected
int* MtxSchurDecompSolver::Diag1_Full_eleMap
protected
SparseSymMatrix * MtxSchurDecompSolver::diag1Mat
protected
int * MtxSchurDecompSolver::diag1Mat_colIdx
protected
double * MtxSchurDecompSolver::diag1Mat_ele
protected
int * MtxSchurDecompSolver::diag1Mat_rowBeg
protected
int MtxSchurDecompSolver::diag1MatDim
protected
int MtxSchurDecompSolver::diag1MatNNz
protected
int* MtxSchurDecompSolver::diag1VarIDinFull
private
DenseSymMatrix* MtxSchurDecompSolver::dkktSC
protected
int MtxSchurDecompSolver::firstCallFlag
protected
int MtxSchurDecompSolver::fullMatDim
protected
int MtxSchurDecompSolver::fullMatNNz
protected
int* MtxSchurDecompSolver::FullVarIDinDiag01
private
int MtxSchurDecompSolver::localNegaEigVal
protected
SparseSymMatrix* MtxSchurDecompSolver::Msys
protected
int MtxSchurDecompSolver::mtxCase
protected
int MtxSchurDecompSolver::requireUpdate
protected
double* MtxSchurDecompSolver::schurMat_ele
protected
int MtxSchurDecompSolver::schurMatDim
protected
int MtxSchurDecompSolver::schurMatNNz
protected
int* MtxSchurDecompSolver::schurVarIDinFull
protected
DoubleLinearSolver* MtxSchurDecompSolver::solver_diag1
protected
DoubleLinearSolver* MtxSchurDecompSolver::solver_schur
protected

The documentation for this class was generated from the following files: