8#ifndef __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
9#define __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
17#define IPOPT_DECL_SETIPOPTCALLBACKFUNCTION(x) void (x)( \
18 int (*IpoptFunction)( \
51 const std::string& prefix
77 Index numberOfNegEVals
280 Index numberOfNegEVals
#define IPOPT_DECL_SETIPOPTCALLBACKFUNCTION(x)
#define IPOPT_DECL_PARDISO(x)
#define IPOPT_DECL_PARDISOINIT(x)
IpoptData & IpData() const
IpoptCalculatedQuantities & IpCq() const
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm.
IpoptAdditionalCq & AdditionalCq()
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
Interface to the linear solver Pardiso, derived from SparseSymLinearSolverInterface.
SmartPtr< IterativeSolverTerminationTester > normal_tester_
Termination tester for normal step computation.
Number normal_pardiso_iter_dropping_schur_used_
Index pardiso_iter_max_row_fill_
Number * DPARM_
Parameter and info array for Pardiso.
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.
Index normal_pardiso_iter_coarse_size_
Index negevals_
Number of negative eigenvalues.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Index normal_pardiso_iter_max_levels_
Number pardiso_iter_dropping_factor_used_
Actually used dropping tolerances.
ESymSolverStatus Solve(const Index *ia, const Index *ja, Index nrhs, Number *rhs_vals)
Call Pardiso to do the Solve.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
void ** PT_
Internal data address pointers.
bool have_symbolic_factorization_
Flag indicating if symbolic factorization has already been performed.
Index MTYPE_
Matrix type; real and symmetric indefinite.
IterativePardisoSolverInterface(const IterativePardisoSolverInterface &)
Copy Constructor.
Index pardiso_iter_max_levels_
IterativePardisoSolverInterface()
Default Constructor.
InexactData & InexData()
Method to easily access Inexact data.
Number pardiso_iter_inverse_norm_factor_
bool skip_inertia_check_
Flag indicating if the inertia is always assumed to be correct.
ESymSolverStatus Factorization(const Index *ia, const Index *ja, bool check_NegEVals, Index numberOfNegEVals)
Call Pardiso to factorize the Matrix.
IterativePardisoSolverInterface(IterativeSolverTerminationTester &normal_tester, IterativeSolverTerminationTester &pd_tester, SmartPtr< LibraryLoader > pardisoloader_)
Constructor.
void operator=(const IterativePardisoSolverInterface &)
Overloaded Assignment Operator.
Number pardiso_iter_dropping_factor_
PardisoMatchingStrategy
Type for matching strategies.
Number normal_pardiso_iter_relative_tol_
IPOPT_DECL_PARDISO * pardiso
SmartPtr< IterativeSolverTerminationTester > pd_tester_
Termination tester for primal-dual step computation.
Number decr_factor_
Decrease factor for dropping tolerances.
Index MAXFCT_
Maximal number of factors with identical nonzero structure.
virtual Number * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements are to be stored.
Number pardiso_iter_dropping_schur_
Index MSGLVL_
Message level.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class.
IPOPT_DECL_PARDISOINIT * pardisoinit
bool pardiso_exist_parallel
IPOPT_DECL_SETIPOPTCALLBACKFUNCTION * SetIpoptCallbackFunction
Index pardiso_iter_coarse_size_
Number normal_pardiso_iter_dropping_factor_
Index pardiso_max_iter_
Options for the preconditioner.
Number pardiso_iter_dropping_schur_used_
Index MNUM_
Actual matrix for the solution phase.
Index dim_
Number of rows and columns of the matrix.
Index normal_pardiso_iter_max_row_fill_
Index pardiso_max_droptol_corrections_
Maximal number of decreases of drop tolerance during one solve.
Number * a_
Array for storing the values of the matrix.
SmartPtr< LibraryLoader > pardisoloader
PardisoMatchingStrategy match_strat_
Option that controls the matching strategy.
Number normal_pardiso_iter_inverse_norm_factor_
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
ESymSolverStatus SymbolicFactorization(const Index *ia, const Index *ja)
Call Pardiso to do the analysis phase.
Number normal_pardiso_iter_dropping_factor_used_
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
bool initialized_
Flag indicating if internal data is initialized.
Index * IPARM_
Parameter and info array for Pardiso.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal structures.
bool pardiso_repeated_perturbation_means_singular_
Flag indicating whether repeated perturbed elements even after a new symbolic factorization should be...
Index nonzeros_
Number of nonzeros of the matrix in triplet representation.
Index normal_pardiso_max_iter_
bool pardiso_redo_symbolic_fact_only_if_inertia_wrong_
Flag indicating whether the symbolic factorization should only be done after perturbed elements,...
Number pardiso_iter_relative_tol_
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Number normal_pardiso_iter_dropping_schur_
virtual ~IterativePardisoSolverInterface()
Destructor.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
This base class is for the termination tests for the iterative linear solver in the inexact version o...
This class stores a list of user set options.
Template class for Smart Pointers.
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
EMatrixFormat
Enum to specify sparse matrix format.
@ CSR_Format_1_Offset
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.
ESymSolverStatus
Enum to report outcome of a linear solve.
ipindex Index
Type of all indices of vectors, matrices etc.
ipnumber Number
Type of all numbers.