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

#include <PartitionAugSolver.h>

Inheritance diagram for PartitionAugSolver:
DoubleLinearSolver

Public Member Functions

 PartitionAugSolver ()
 
 PartitionAugSolver (DoubleMatrix *MatIn, int *var_Part_idx_in, int *con_Part_idx_in, const int localNegaEigVal_in, const int fullVarSize, const int fullConSize, const int nPart)
 
 ~PartitionAugSolver ()
 
virtual int matrixChanged ()
 
virtual void solve (OoqpVector &rhs_)
 
virtual void solve (GenMatrix &rhs_in)
 
- Public Member Functions inherited from DoubleLinearSolver
 DoubleLinearSolver ()
 
virtual void solveTrans (OoqpVector &x)
 
virtual void Lsolve (OoqpVector &x)
 
virtual void Dsolve (OoqpVector &x)
 
virtual void Ltsolve (OoqpVector &x)
 
virtual ~DoubleLinearSolver ()
 

Protected Member Functions

virtual void firstCall ()
 
virtual void initializeKKT_Dense ()
 
virtual int _numericalFact ()
 
virtual void finalizeKKT ()
 
virtual void addTermToDenseSchurCompl ()
 
virtual void addLnizi (OoqpVector &z0_, OoqpVector &zi_, const int block)
 
virtual void LDLtsolve_SC (OoqpVector *lastDiag_Rhs)
 
virtual void diagonalChanged (int idiag, int extent)
 
virtual void LniTransMult (SparseGenMatrix *borderMat, SimpleVector &y, double alpha, SimpleVector &x, const int block)
 

Protected Attributes

int nb_part
 
int firstCallFlag
 
int firstSCsolve
 
SparseSymMatrixM_sys
 
int M_Dim
 
int M_Nnz
 
int M_nb_Var
 
int M_nb_Con
 
DenseSymMatrixdkktSC
 
DoubleLinearSolverschur_solver
 
int sc_Dim
 
int sc_Nnz
 
double * sc_ele
 
int * FullIDin_Diag
 
SparseSymMatrixkkt_diag_last
 
int diag_last_Dim
 
int diag_last_Nnz
 
int * diag_last_rowBeg
 
int * diag_last_colIdx
 
double * diag_last_ele
 
int * diag_last_ele_Map
 
int diag_last_nb_Var
 
int diag_last_nb_Con
 
int * diag_last_IDinFull
 
std::vector< SparseSymMatrix * > kkt_diag
 
std::vector< DoubleLinearSolver * > diag_solver
 
std::vector< int > diag_Dim
 
std::vector< int > diag_Nnz
 
std::vector< int * > diag_rowBeg
 
std::vector< int * > diag_colIdx
 
std::vector< double * > diag_ele
 
std::vector< int * > diag_ele_Map
 
std::vector< int > diag_nb_Var
 
std::vector< int > diag_nb_Con
 
std::vector< int * > diag_IDinFull
 
std::vector< SparseGenMatrix * > kkt_bord
 
std::vector< int > bord_Dim_m
 
std::vector< int > bord_Dim_n
 
std::vector< int > bord_Nnz
 
std::vector< int * > bord_rowBeg
 
std::vector< int * > bord_colIdx
 
std::vector< double * > bord_ele
 
std::vector< int * > bord_ele_Map
 
int * var_Part_idx
 
int * con_Part_idx
 
int localNegaEigVal
 

Additional Inherited Members

- Public Attributes inherited from DoubleLinearSolver
int negEigVal
 
int KryIter
 

Detailed Description

for each diagonal, after we remove all the 1st stage var Aug fullMat = H | A' | = r_p (1) A | 0 | r_d =

x1 | x2 | xp | y1 | y2 | yp

H1 | | H1p | A1' | | p_1 | H2 | H2p | | A2' | p_2 Hp1 | Hp2 | Hp | A1p' | A2p' | Ap' = p_p (1) A1 | | A1p | | | d_1 | A2 | A2p | | | d_2 | | Ap | | | d_p

Reorder it

x1 | y1 | x2 | y2 | xp | yp

H1 | A1' | | | H1p | p11 A1 | | | | A1p | d_1 | | H2 | A2' | H2p | = p_2 (1) | | A2 | | A2p | d_2 H1p' | A1p' | H2p' | A2p' | Hp | Ap' p_p | | | | Ap | d_p

can do SC on [ Hp | Ap' ] [ Ap | ]

Constructor & Destructor Documentation

PartitionAugSolver::PartitionAugSolver ( )
inline
PartitionAugSolver::PartitionAugSolver ( DoubleMatrix MatIn,
int *  var_Part_idx_in,
int *  con_Part_idx_in,
const int  localNegaEigVal_in,
const int  fullVarSize,
const int  fullConSize,
const int  nPart 
)
PartitionAugSolver::~PartitionAugSolver ( )
inline

Member Function Documentation

int PartitionAugSolver::_numericalFact ( )
protectedvirtual
void PartitionAugSolver::addLnizi ( OoqpVector z0_,
OoqpVector zi_,
const int  block 
)
protectedvirtual

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

void PartitionAugSolver::addTermToDenseSchurCompl ( )
protectedvirtual

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

virtual void PartitionAugSolver::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 PartitionAugSolver::finalizeKKT ( )
protectedvirtual
void PartitionAugSolver::firstCall ( )
protectedvirtual
void PartitionAugSolver::initializeKKT_Dense ( )
protectedvirtual
void PartitionAugSolver::LDLtsolve_SC ( OoqpVector lastDiag_Rhs)
protectedvirtual
void PartitionAugSolver::LniTransMult ( SparseGenMatrix borderMat,
SimpleVector y,
double  alpha,
SimpleVector x,
const int  block 
)
protectedvirtual

memopt

virtual int PartitionAugSolver::matrixChanged ( )
inlinevirtual

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

Implements DoubleLinearSolver.

void PartitionAugSolver::solve ( OoqpVector x)
virtual

solves a linear system.

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

Implements DoubleLinearSolver.

void PartitionAugSolver::solve ( GenMatrix rhs_in)
virtual

Reimplemented from DoubleLinearSolver.

Member Data Documentation

std::vector<int*> PartitionAugSolver::bord_colIdx
protected
std::vector<int> PartitionAugSolver::bord_Dim_m
protected
std::vector<int> PartitionAugSolver::bord_Dim_n
protected
std::vector<double*> PartitionAugSolver::bord_ele
protected
std::vector<int*> PartitionAugSolver::bord_ele_Map
protected
std::vector<int> PartitionAugSolver::bord_Nnz
protected
std::vector<int*> PartitionAugSolver::bord_rowBeg
protected
int* PartitionAugSolver::con_Part_idx
protected
std::vector<int*> PartitionAugSolver::diag_colIdx
protected
std::vector<int> PartitionAugSolver::diag_Dim
protected
std::vector<double*> PartitionAugSolver::diag_ele
protected
std::vector<int*> PartitionAugSolver::diag_ele_Map
protected
std::vector<int*> PartitionAugSolver::diag_IDinFull
protected
int* PartitionAugSolver::diag_last_colIdx
protected
int PartitionAugSolver::diag_last_Dim
protected
double* PartitionAugSolver::diag_last_ele
protected
int* PartitionAugSolver::diag_last_ele_Map
protected
int* PartitionAugSolver::diag_last_IDinFull
protected
int PartitionAugSolver::diag_last_nb_Con
protected
int PartitionAugSolver::diag_last_nb_Var
protected
int PartitionAugSolver::diag_last_Nnz
protected
int* PartitionAugSolver::diag_last_rowBeg
protected
std::vector<int> PartitionAugSolver::diag_nb_Con
protected
std::vector<int> PartitionAugSolver::diag_nb_Var
protected
std::vector<int> PartitionAugSolver::diag_Nnz
protected
std::vector<int*> PartitionAugSolver::diag_rowBeg
protected
std::vector<DoubleLinearSolver*> PartitionAugSolver::diag_solver
protected
DenseSymMatrix* PartitionAugSolver::dkktSC
protected
int PartitionAugSolver::firstCallFlag
protected
int PartitionAugSolver::firstSCsolve
protected
int* PartitionAugSolver::FullIDin_Diag
protected
std::vector<SparseGenMatrix*> PartitionAugSolver::kkt_bord
protected
std::vector<SparseSymMatrix*> PartitionAugSolver::kkt_diag
protected
SparseSymMatrix* PartitionAugSolver::kkt_diag_last
protected
int PartitionAugSolver::localNegaEigVal
protected
int PartitionAugSolver::M_Dim
protected
int PartitionAugSolver::M_nb_Con
protected
int PartitionAugSolver::M_nb_Var
protected
int PartitionAugSolver::M_Nnz
protected
SparseSymMatrix* PartitionAugSolver::M_sys
protected
int PartitionAugSolver::nb_part
protected
int PartitionAugSolver::sc_Dim
protected
double* PartitionAugSolver::sc_ele
protected
int PartitionAugSolver::sc_Nnz
protected
DoubleLinearSolver* PartitionAugSolver::schur_solver
protected
int* PartitionAugSolver::var_Part_idx
protected

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