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

#include <PardisoSchurSolver.h>

Inheritance diagram for PardisoSchurSolver:
DoubleLinearSolver PardisoSchur32Solver

Public Member Functions

virtual void firstCall ()
 
void firstSolveCall (SparseGenMatrix &R, SparseGenMatrix &A, SparseGenMatrix &C)
 
 PardisoSchurSolver (SparseSymMatrix *sgm)
 
 PardisoSchurSolver (SparseSymMatrix *sgm, const int numOfNegEigVal_in)
 
virtual void diagonalChanged (int idiag, int extent)
 
virtual int matrixChanged ()
 
virtual void solve (OoqpVector &rhs)
 
virtual void solve (GenMatrix &rhs)
 
virtual void schur_solve (SparseGenMatrix &R, SparseGenMatrix &A, SparseGenMatrix &C, DenseSymMatrix &SC)
 
- 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

 PardisoSchurSolver ()
 
void SetUpPardisoSchurSolver (SparseSymMatrix *sgm)
 
virtual ~PardisoSchurSolver ()
 

Protected Attributes

SparseSymMatrixMsys
 
bool first
 
bool firstSolve
 
void * pt [64]
 
int iparm [64]
 
double dparm [64]
 
int num_threads
 
int n
 
int nSC
 
int nnz
 
int * rowptrAug
 
int * colidxAug
 
double * eltsAug
 
int * index_LowTri
 
map< int, int > diagMap
 
int * elementMap_R
 
int * elementMap_A
 
int * elementMap_C
 
int numOfNegEigVal
 
double * nvec
 

Additional Inherited Members

- Public Attributes inherited from DoubleLinearSolver
int negEigVal
 
int KryIter
 

Detailed Description

implements the linear solver class using the Pardiso SC solver

Constructor & Destructor Documentation

PardisoSchurSolver::PardisoSchurSolver ( )
inlineprotected
PardisoSchurSolver::PardisoSchurSolver ( SparseSymMatrix sgm)

sets mStorage to refer to the argument sgm

PardisoSchurSolver::PardisoSchurSolver ( SparseSymMatrix sgm,
const int  numOfNegEigVal_in 
)
PardisoSchurSolver::~PardisoSchurSolver ( )
protectedvirtual

Member Function Documentation

void PardisoSchurSolver::diagonalChanged ( int  idiag,
int  extent 
)
virtual

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 PardisoSchurSolver::firstCall ( )
virtual

Reimplemented in PardisoSchur32Solver.

void PardisoSchurSolver::firstSolveCall ( SparseGenMatrix R,
SparseGenMatrix A,
SparseGenMatrix C 
)
void PardisoSchurSolver::matrixChanged ( )
virtual

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

Implements DoubleLinearSolver.

void PardisoSchurSolver::schur_solve ( SparseGenMatrix R,
SparseGenMatrix A,
SparseGenMatrix C,
DenseSymMatrix SC 
)
virtual

Functions specific to the Schur approach. The last argument is the Schur first stage matrix that will be updated.

  1. schur_solver( rhs, SC)
    • this is the generic function
  2. schur_solve(R,A,B, SC)
    • avoids forming the matrix rhs [R' A' B']'
    • assumes rhs block matrices does not change
void PardisoSchurSolver::SetUpPardisoSchurSolver ( SparseSymMatrix sgm)
protected
void PardisoSchurSolver::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.

Reimplemented in PardisoSchur32Solver.

void PardisoSchurSolver::solve ( GenMatrix rhs)
virtual

Reimplemented from DoubleLinearSolver.

Member Data Documentation

int * PardisoSchurSolver::colidxAug
protected
map<int,int> PardisoSchurSolver::diagMap
protected

mapping from from the diagonals of the PIPS linear systems to the diagonal elements of the (1,1) block in the augmented system

double PardisoSchurSolver::dparm[64]
protected
int* PardisoSchurSolver::elementMap_A
protected
int* PardisoSchurSolver::elementMap_C
protected
int* PardisoSchurSolver::elementMap_R
protected

mapping from the element of the PIPS linear systems to the elements of the (1,1) block in the augmented system, hence we can update Jac

double* PardisoSchurSolver::eltsAug
protected
bool PardisoSchurSolver::first
protected
bool PardisoSchurSolver::firstSolve
protected
int* PardisoSchurSolver::index_LowTri
protected
int PardisoSchurSolver::iparm[64]
protected
SparseSymMatrix* PardisoSchurSolver::Msys
protected
int PardisoSchurSolver::n
protected

dimension of the PARDISO augmented system

int PardisoSchurSolver::nnz
protected

number of nonzeros in the PARDISO augmented matrix

int PardisoSchurSolver::nSC
protected

dimension of the Schur complement (# of rhs)

int PardisoSchurSolver::num_threads
protected
int PardisoSchurSolver::numOfNegEigVal
protected
double* PardisoSchurSolver::nvec
protected
void* PardisoSchurSolver::pt[64]
protected
int* PardisoSchurSolver::rowptrAug
protected

storage for the upper triangular (in row-major format)


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