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

#include <PardisoSolver.h>

Inheritance diagram for PardisoSolver:
DoubleLinearSolver

Public Member Functions

virtual void firstCall ()
 
 PardisoSolver (SparseSymMatrix *sgm, const int numOfNegEigVal_in=-1)
 
 PardisoSolver (DenseSymMatrix *m)
 
virtual void diagonalChanged (int idiag, int extent)
 
virtual int matrixChanged ()
 
virtual void solve (OoqpVector &rhs)
 
virtual void solve (GenMatrix &rhs)
 
virtual void solve (GenMatrix &rhs, int *colSparsity)
 
- 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 ()
 

Private Member Functions

 PardisoSolver ()
 
void SetUpPardisoSolver (SparseSymMatrix *sgm)
 
int getNumberOfNonZeros (DenseSymMatrix &m)
 
virtual ~PardisoSolver ()
 

Private Attributes

SparseSymMatrixMsys
 
DenseSymMatrixMdsys
 
bool first
 
void * pt [64]
 
int iparm [64]
 
int num_threads
 
double dparm [64]
 
int n
 
int numOfNegEigVal
 
int * krowM
 
int * jcolM
 
double * M
 
int nnz
 
std::map< int, int > diagMap
 
map< int, int > elementMap_A
 
map< int, int > elementMap_BD
 
map< int, int > elementMap_C
 
double * nvec
 
double * sol
 
int sz_sol
 

Additional Inherited Members

- Public Attributes inherited from DoubleLinearSolver
int negEigVal
 
int KryIter
 

Detailed Description

implements the linear solver class using the Pardiso solver

Constructor & Destructor Documentation

PardisoSolver::PardisoSolver ( )
inlineprivate
PardisoSolver::PardisoSolver ( SparseSymMatrix sgm,
const int  numOfNegEigVal_in = -1 
)

sets mStorage to refer to the argument sgm

PardisoSolver::PardisoSolver ( DenseSymMatrix m)
PardisoSolver::~PardisoSolver ( )
privatevirtual

Member Function Documentation

void PardisoSolver::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 PardisoSolver::firstCall ( )
virtual
int PardisoSolver::getNumberOfNonZeros ( DenseSymMatrix m)
private
int PardisoSolver::matrixChanged ( )
virtual

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

Implements DoubleLinearSolver.

void PardisoSolver::SetUpPardisoSolver ( SparseSymMatrix sgm)
private
void PardisoSolver::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 PardisoSolver::solve ( GenMatrix rhs)
virtual

Reimplemented from DoubleLinearSolver.

void PardisoSolver::solve ( GenMatrix rhs,
int *  colSparsity 
)
virtual

Member Data Documentation

std::map<int,int> PardisoSolver::diagMap
private

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

double PardisoSolver::dparm[64]
private
map<int,int> PardisoSolver::elementMap_A
private

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

map<int,int> PardisoSolver::elementMap_BD
private
map<int,int> PardisoSolver::elementMap_C
private
bool PardisoSolver::first
private
int PardisoSolver::iparm[64]
private
int * PardisoSolver::jcolM
private
int* PardisoSolver::krowM
private

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

double* PardisoSolver::M
private
DenseSymMatrix* PardisoSolver::Mdsys
private
SparseSymMatrix* PardisoSolver::Msys
private
int PardisoSolver::n
private
int PardisoSolver::nnz
private

number of nonzeros in the matrix

int PardisoSolver::num_threads
private
int PardisoSolver::numOfNegEigVal
private
double* PardisoSolver::nvec
private

temporary storage for the factorization process

void* PardisoSolver::pt[64]
private
double* PardisoSolver::sol
private
int PardisoSolver::sz_sol
private

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