Go to the documentation of this file.
10 #ifndef __IPPARDISOSOLVERINTERFACE_HPP__
11 #define __IPPARDISOSOLVERINTERFACE_HPP__
38 const std::string& prefix);
59 Index numberOfNegEVals);
122 #ifdef PARDISO_MATCHING_PREPROCESS
213 Index numberOfNegEVals);
ESymSolverStatus Solve(const Index *ia, const Index *ja, Index nrhs, double *rhs_vals)
Call Pardiso to do the Solve.
ESymSolverStatus
Enum to report outcome of a linear solve.
ipfint MAXFCT_
Maximal number of factors with identical nonzero structure.
EMatrixFormat
Enum to specify sparse matrix format.
void operator=(const PardisoSolverInterface &)
Overloaded Equals Operator.
virtual double * GetValuesArrayPtr()
Method returing an internal array into which the nonzero elements are to be stored.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
PardisoSolverInterface()
Constructor.
double * DPARM_
Parameter and info array for Pardiso.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
PardisoMatchingStrategy match_strat_
Option that controls the matching strategy.
ESymSolverStatus SymbolicFactorization(const Index *ia, const Index *ja)
Call Pardiso to do the analysis phase.
@ CSR_Format_1_Offset
Compressed sparse row format for lower triangular part, with 1 offset.
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal stuctures.
Index dim_
Number of rows and columns of the matrix.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
ESymSolverStatus Factorization(const Index *ia, const Index *ja, bool check_NegEVals, Index numberOfNegEVals)
Call Pardiso to factorize the Matrix.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
int Index
Type of all indices of vectors, matrices etc.
bool skip_inertia_check_
Flag indicating if the interia is always assumed to be correct.
Interface to the linear solver Pardiso, derived from SparseSymLinearSolverInterface.
bool initialized_
Flag indicating if internal data is initialized.
Template class for Smart Pointers.
FORTRAN_INTEGER_TYPE ipfint
bool have_symbolic_factorization_
Flag indicating if symbolic factorization has already been performed.
bool pardiso_repeated_perturbation_means_singular_
Flag indicating whether repeated perturbed elements even after a new symbolic factorization should be...
ipfint MNUM_
Actual matrix for the solution phase.
double * a_
Array for storing the values of the matrix.
virtual ~PardisoSolverInterface()
Destructor.
ipfint MSGLVL_
Message level.
Index pardiso_max_droptol_corrections_
Maximal number of decreases of drop tolerance during one solve.
ipfint MTYPE_
Matrix type; real and symmetric indefinite.
void ** PT_
Internal data address pointers.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
PardisoMatchingStrategy
Type for mathcing strategies.
This class stores a list of user set options.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
ipfint * IPARM_
Parameter and info array for Pardiso.
Index negevals_
Number of negative eigenvalues.
Index nonzeros_
Number of nonzeros of the matrix in triplet representation.
bool pardiso_redo_symbolic_fact_only_if_inertia_wrong_
Flag indicating whether the symbolic factorization should only be done after perturbed elements,...
bool pardiso_iterative_
Flag indicating whether we are using the iterative solver in Pardiso.
virtual ESymSolverStatus MultiSolve(bool new_matrix, const Index *ia, const Index *ja, Index nrhs, double *rhs_vals, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.