7 #ifndef __IPPARDISOSOLVERINTERFACE_HPP__ 8 #define __IPPARDISOSOLVERINTERFACE_HPP__ 19 #define IPOPT_DECL_PARDISOINIT(x) void (x)( \ 21 const ipindex* MTYPE, \ 22 const ipindex* SOLVER, \ 29 #define IPOPT_DECL_PARDISO(x) void (x)( \ 31 const ipindex* MAXFCT, \ 32 const ipindex* MNUM, \ 33 const ipindex* MTYPE, \ 34 const ipindex* PHASE, \ 39 const ipindex* PERM, \ 40 const ipindex* NRHS, \ 42 const ipindex* MSGLVL, \ 50 #define IPOPT_DECL_SMAT_REORDERING_PARDISO_WSMP(x) void (x)( \ 86 const std::string& prefix
107 Index numberOfNegEVals);
142 #ifndef PARDISO_MATCHING_PREPROCESS
177 #ifdef PARDISO_MATCHING_PREPROCESS 265 #ifdef PARDISO_MATCHING_PREPROCESS 285 Index numberOfNegEVals
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
Index * IPARM_
Parameter and info array for Pardiso.
#define IPOPT_DECL_PARDISO(x)
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
Number * a_
Array for storing the values of the matrix.
ESymSolverStatus
Enum to report outcome of a linear solve.
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
Index pardiso_max_droptol_corrections_
Maximal number of decreases of drop tolerance during one solve.
ESymSolverStatus Solve(const Index *ia, const Index *ja, Index nrhs, Number *rhs_vals)
Call Pardiso to do the Solve.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
bool initialized_
Flag indicating if internal data is initialized.
PardisoMatchingStrategy match_strat_
Option that controls the matching strategy.
PardisoMatchingStrategy
Type for matching strategies.
bool skip_inertia_check_
Flag indicating if the inertia is always assumed to be correct.
ESymSolverStatus SymbolicFactorization(const Index *ia, const Index *ja)
Call Pardiso to do the analysis phase.
Index MSGLVL_
Message level.
Index MAXFCT_
Maximal number of factors with identical nonzero structure.
ipindex Index
Type of all indices of vectors, matrices etc.
#define IPOPT_DECL_SMAT_REORDERING_PARDISO_WSMP(x)
virtual ESymSolverStatus MultiSolve(bool new_matrix, const Index *ia, const Index *ja, Index nrhs, Number *rhs_vals, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.
Compressed sparse row format for upper triangular part, with 1 offset.
This file contains a base class for all exceptions and a set of macros to help with exceptions...
IPOPT_DECL_PARDISOINIT * pardisoinit
Template class for Smart Pointers.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal structures.
This class stores a list of user set options.
bool pardiso_redo_symbolic_fact_only_if_inertia_wrong_
Flag indicating whether the symbolic factorization should only be done after perturbed elements...
Interface to the linear solver Pardiso as distributed by pardiso-project.org, derived from SparseSymL...
bool pardiso_exist_parallel
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Index negevals_
Number of negative eigenvalues.
IPOPT_DECL_PARDISO * pardiso
Number * DPARM_
Parameter and info array for Pardiso.
#define IPOPT_DECL_PARDISOINIT(x)
void operator=(const PardisoSolverInterface &)
Default Assignment Operator.
bool pardiso_repeated_perturbation_means_singular_
Flag indicating whether repeated perturbed elements even after a new symbolic factorization should be...
ipnumber Number
Type of all numbers.
bool pardiso_iterative_
Flag indicating whether we are using the iterative solver in Pardiso.
Index MNUM_
Actual matrix for the solution phase.
SmartPtr< LibraryLoader > pardisoloader
Index MTYPE_
Matrix type; real and symmetric indefinite.
EMatrixFormat
Enum to specify sparse matrix format.
PardisoSolverInterface(SmartPtr< LibraryLoader > pardisoloader_)
Constructor.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
void ** PT_
Internal data address pointers.
static void SetFunctions(IPOPT_DECL_PARDISOINIT(*pardisoinit), IPOPT_DECL_PARDISO(*pardiso), bool isparallel,=NULL)
set Pardiso functions to use for every instantiation of this class
ESymSolverStatus Factorization(const Index *ia, const Index *ja, bool check_NegEVals, Index numberOfNegEVals)
Call Pardiso to factorize the Matrix.
Index nonzeros_
Number of nonzeros of the matrix in triplet representation.
virtual Number * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
virtual ~PardisoSolverInterface()
Destructor.
bool have_symbolic_factorization_
Flag indicating if symbolic factorization has already been performed.
Index dim_
Number of rows and columns of the matrix.