Ipopt  3.11.9
IpIterativePardisoSolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2008 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpIterativePardisoSolverInterface.hpp 2442 2013-11-26 11:32:00Z stefan $
6 //
7 // Authors: Andreas Waechter IBM 2008-09-18
8 // based on IpPardisoSolverInterface.hpp rev 1119
9 
10 
11 #ifndef __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
12 #define __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
13 
15 #include "IpInexactCq.hpp"
17 
18 namespace Ipopt
19 {
20 
26  {
27  public:
33 
37 
39  bool InitializeImpl(const OptionsList& options,
40  const std::string& prefix);
41 
42 
46  virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
47  const Index *ia,
48  const Index *ja);
49 
52  virtual double* GetValuesArrayPtr();
53 
55  virtual ESymSolverStatus MultiSolve(bool new_matrix,
56  const Index* ia,
57  const Index* ja,
58  Index nrhs,
59  double* rhs_vals,
60  bool check_NegEVals,
61  Index numberOfNegEVals);
62 
66  virtual Index NumberOfNegEVals() const;
68 
69  //* @name Options of Linear solver */
71 
73  virtual bool IncreaseQuality();
74 
78  virtual bool ProvidesInertia() const
79  {
80  return true;
81  }
86  {
87  return CSR_Format_1_Offset;
88  }
90 
93  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
95 
96  private:
107 
110 
114 
119 
122 
124  double* a_;
126 
132 
137  {
141  };
160 
171 
181 
184 
192 
199 
203  void** PT_;
214  double* DPARM_;
218 
224 
230  const Index* ja);
231 
235  const Index* ja,
236  bool check_NegEVals,
237  Index numberOfNegEVals);
238 
241  ESymSolverStatus Solve(const Index* ia,
242  const Index* ja,
243  Index nrhs,
244  double *rhs_vals);
246 
249  {
250  InexactData& inexact_data =
251  static_cast<InexactData&>(IpData().AdditionalData());
252  DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
253  return inexact_data;
254  }
255 
258  {
259  InexactCq& inexact_cq =
260  static_cast<InexactCq&>(IpCq().AdditionalCq());
261  DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
262  return inexact_cq;
263  }
264 
267 
270 
271  };
272 
273 } // namespace Ipopt
274 #endif
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_max_levels_
Index normal_pardiso_iter_max_levels_
Definition: IpIterativePardisoSolverInterface.hpp:175
Ipopt::IterativePardisoSolverInterface::MultiSolve
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.
Ipopt::IterativePardisoSolverInterface::IPARM_
ipfint * IPARM_
Parameter and info array for Pardiso.
Definition: IpIterativePardisoSolverInterface.hpp:212
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:21
Ipopt::IterativePardisoSolverInterface::pardiso_iter_dropping_schur_
Number pardiso_iter_dropping_schur_
Definition: IpIterativePardisoSolverInterface.hpp:168
Ipopt::IterativePardisoSolverInterface::match_strat_
PardisoMatchingStrategy match_strat_
Option that controls the matching strategy.
Definition: IpIterativePardisoSolverInterface.hpp:143
Ipopt::IterativePardisoSolverInterface::pardiso_max_iter_
Index pardiso_max_iter_
Options for the preconditioner.
Definition: IpIterativePardisoSolverInterface.hpp:163
Ipopt::AlgorithmStrategyObject::IpCq
IpoptCalculatedQuantities & IpCq() const
Definition: IpAlgStrategy.hpp:137
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_relative_tol_
Number normal_pardiso_iter_relative_tol_
Definition: IpIterativePardisoSolverInterface.hpp:173
Ipopt::SparseSymLinearSolverInterface::EMatrixFormat
EMatrixFormat
Enum to specify sparse matrix format.
Definition: IpSparseSymLinearSolverInterface.hpp:102
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_dropping_factor_
Number normal_pardiso_iter_dropping_factor_
Definition: IpIterativePardisoSolverInterface.hpp:176
Ipopt::IterativePardisoSolverInterface::have_symbolic_factorization_
bool have_symbolic_factorization_
Flag indicating if symbolic factorization has already been performed.
Definition: IpIterativePardisoSolverInterface.hpp:146
Ipopt::IterativePardisoSolverInterface::normal_pardiso_max_iter_
Index normal_pardiso_max_iter_
Definition: IpIterativePardisoSolverInterface.hpp:172
IpInexactCq.hpp
Ipopt::IterativePardisoSolverInterface::pardiso_iter_dropping_factor_
Number pardiso_iter_dropping_factor_
Definition: IpIterativePardisoSolverInterface.hpp:167
Ipopt::IterativePardisoSolverInterface::operator=
void operator=(const IterativePardisoSolverInterface &)
Overloaded Equals Operator.
Ipopt::IterativePardisoSolverInterface::pardiso_iter_max_levels_
Index pardiso_iter_max_levels_
Definition: IpIterativePardisoSolverInterface.hpp:166
Ipopt::InexactData
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm.
Definition: IpInexactData.hpp:19
Ipopt
Definition: matlabjournal.hpp:14
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_inverse_norm_factor_
Number normal_pardiso_iter_inverse_norm_factor_
Definition: IpIterativePardisoSolverInterface.hpp:179
Ipopt::IterativePardisoSolverInterface::MTYPE_
ipfint MTYPE_
Matrix type; real and symmetric indefinite.
Definition: IpIterativePardisoSolverInterface.hpp:210
Ipopt::IterativePardisoSolverInterface::DPARM_
double * DPARM_
Parameter and info array for Pardiso.
Definition: IpIterativePardisoSolverInterface.hpp:214
Ipopt::IterativePardisoSolverInterface::InitializeStructure
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal stuctures.
Ipopt::IterativePardisoSolverInterface::PardisoMatchingStrategy
PardisoMatchingStrategy
Type for mathcing strategies.
Definition: IpIterativePardisoSolverInterface.hpp:136
Ipopt::IterativePardisoSolverInterface::PT_
void ** PT_
Internal data address pointers.
Definition: IpIterativePardisoSolverInterface.hpp:203
Ipopt::AlgorithmStrategyObject::IpData
IpoptData & IpData() const
Definition: IpAlgStrategy.hpp:131
IpIterativeSolverTerminationTester.hpp
Ipopt::IterativePardisoSolverInterface::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
Ipopt::IterativePardisoSolverInterface::pardiso_iter_relative_tol_
Number pardiso_iter_relative_tol_
Definition: IpIterativePardisoSolverInterface.hpp:164
Ipopt::SparseSymLinearSolverInterface::CSR_Format_1_Offset
@ CSR_Format_1_Offset
Compressed sparse row format for lower triangular part, with 1 offset.
Definition: IpSparseSymLinearSolverInterface.hpp:110
Ipopt::SparseSymLinearSolverInterface
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
Definition: IpSparseSymLinearSolverInterface.hpp:98
Ipopt::IterativePardisoSolverInterface::Solve
ESymSolverStatus Solve(const Index *ia, const Index *ja, Index nrhs, double *rhs_vals)
Call Pardiso to do the Solve.
Ipopt::IterativePardisoSolverInterface::pardiso_iter_dropping_factor_used_
Number pardiso_iter_dropping_factor_used_
Actualy used dropping tolerances.
Definition: IpIterativePardisoSolverInterface.hpp:187
Ipopt::IterativePardisoSolverInterface::negevals_
Index negevals_
Number of negative eigenvalues.
Definition: IpIterativePardisoSolverInterface.hpp:130
Ipopt::IterativePardisoSolverInterface::initialized_
bool initialized_
Flag indicating if internal data is initialized.
Definition: IpIterativePardisoSolverInterface.hpp:197
Ipopt::IterativePardisoSolverInterface::GetValuesArrayPtr
virtual double * GetValuesArrayPtr()
Method returing an internal array into which the nonzero elements are to be stored.
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_dropping_factor_used_
Number normal_pardiso_iter_dropping_factor_used_
Definition: IpIterativePardisoSolverInterface.hpp:189
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Ipopt::IterativePardisoSolverInterface::MSGLVL_
ipfint MSGLVL_
Message level.
Definition: IpIterativePardisoSolverInterface.hpp:216
Ipopt::IterativePardisoSolverInterface::pardiso_redo_symbolic_fact_only_if_inertia_wrong_
bool pardiso_redo_symbolic_fact_only_if_inertia_wrong_
Flag indicating whether the symbolic factorization should only be done after perturbed elements,...
Definition: IpIterativePardisoSolverInterface.hpp:149
Ipopt::IterativePardisoSolverInterface::pardiso_iter_coarse_size_
Index pardiso_iter_coarse_size_
Definition: IpIterativePardisoSolverInterface.hpp:165
Ipopt::IterativePardisoSolverInterface::InexData
InexactData & InexData()
Method to easily access Inexact data.
Definition: IpIterativePardisoSolverInterface.hpp:248
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_coarse_size_
Index normal_pardiso_iter_coarse_size_
Definition: IpIterativePardisoSolverInterface.hpp:174
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:182
Ipopt::IterativePardisoSolverInterface::pardiso_iter_max_row_fill_
Index pardiso_iter_max_row_fill_
Definition: IpIterativePardisoSolverInterface.hpp:169
Ipopt::IpoptData::AdditionalData
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
Definition: IpIpoptData.hpp:494
ipfint
FORTRAN_INTEGER_TYPE ipfint
Definition: IpTypes.hpp:26
Ipopt::IterativePardisoSolverInterface::~IterativePardisoSolverInterface
virtual ~IterativePardisoSolverInterface()
Destructor.
Ipopt::IterativePardisoSolverInterface::decr_factor_
Number decr_factor_
Decrease factor for dropping tolerances.
Definition: IpIterativePardisoSolverInterface.hpp:183
Ipopt::IterativePardisoSolverInterface::Factorization
ESymSolverStatus Factorization(const Index *ia, const Index *ja, bool check_NegEVals, Index numberOfNegEVals)
Call Pardiso to factorize the Matrix.
Ipopt::IterativePardisoSolverInterface::dim_
Index dim_
Number of rows and columns of the matrix.
Definition: IpIterativePardisoSolverInterface.hpp:118
Ipopt::IterativePardisoSolverInterface::COMPLETE
@ COMPLETE
Definition: IpIterativePardisoSolverInterface.hpp:138
Ipopt::IterativePardisoSolverInterface::MNUM_
ipfint MNUM_
Actual matrix for the solution phase.
Definition: IpIterativePardisoSolverInterface.hpp:208
Ipopt::IterativePardisoSolverInterface::SymbolicFactorization
ESymSolverStatus SymbolicFactorization(const Index *ia, const Index *ja)
Call Pardiso to do the analysis phase.
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_dropping_schur_
Number normal_pardiso_iter_dropping_schur_
Definition: IpIterativePardisoSolverInterface.hpp:177
Ipopt::IterativePardisoSolverInterface::pardiso_max_droptol_corrections_
Index pardiso_max_droptol_corrections_
Maximal number of decreases of drop tolerance during one solve.
Definition: IpIterativePardisoSolverInterface.hpp:158
Ipopt::IterativePardisoSolverInterface::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Ipopt::IterativePardisoSolverInterface::pardiso_iter_dropping_schur_used_
Number pardiso_iter_dropping_schur_used_
Definition: IpIterativePardisoSolverInterface.hpp:188
Ipopt::IterativeSolverTerminationTester
This base class is for the termination tests for the iterative linear solver in the inexact version o...
Definition: IpIterativeSolverTerminationTester.hpp:21
Ipopt::IterativePardisoSolverInterface::nonzeros_
Index nonzeros_
Number of nonzeros of the matrix in triplet representation.
Definition: IpIterativePardisoSolverInterface.hpp:121
Ipopt::IpoptCalculatedQuantities::AdditionalCq
IpoptAdditionalCq & AdditionalCq()
Definition: IpIpoptCalculatedQuantities.hpp:452
Ipopt::IterativePardisoSolverInterface::InexCq
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
Definition: IpIterativePardisoSolverInterface.hpp:257
Ipopt::IterativePardisoSolverInterface
Interface to the linear solver Pardiso, derived from SparseSymLinearSolverInterface.
Definition: IpIterativePardisoSolverInterface.hpp:25
Ipopt::IterativePardisoSolverInterface::pd_tester_
SmartPtr< IterativeSolverTerminationTester > pd_tester_
Termination tester for primal-dual step computation.
Definition: IpIterativePardisoSolverInterface.hpp:269
Ipopt::IterativePardisoSolverInterface::COMPLETE2x2
@ COMPLETE2x2
Definition: IpIterativePardisoSolverInterface.hpp:139
Ipopt::IterativePardisoSolverInterface::skip_inertia_check_
bool skip_inertia_check_
Flag indicating if the interia is always assumed to be correct.
Definition: IpIterativePardisoSolverInterface.hpp:156
Ipopt::IterativePardisoSolverInterface::IterativePardisoSolverInterface
IterativePardisoSolverInterface()
Default Constructor.
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_dropping_schur_used_
Number normal_pardiso_iter_dropping_schur_used_
Definition: IpIterativePardisoSolverInterface.hpp:190
Ipopt::IterativePardisoSolverInterface::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::IterativePardisoSolverInterface::normal_pardiso_iter_max_row_fill_
Index normal_pardiso_iter_max_row_fill_
Definition: IpIterativePardisoSolverInterface.hpp:178
Ipopt::IterativePardisoSolverInterface::MAXFCT_
ipfint MAXFCT_
Maximal number of factors with identical nonzero structure.
Definition: IpIterativePardisoSolverInterface.hpp:206
IpSparseSymLinearSolverInterface.hpp
Ipopt::IterativePardisoSolverInterface::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Definition: IpIterativePardisoSolverInterface.hpp:78
Ipopt::IterativePardisoSolverInterface::debug_last_iter_
Index debug_last_iter_
Definition: IpIterativePardisoSolverInterface.hpp:221
Ipopt::IterativePardisoSolverInterface::RegisterOptions
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
Ipopt::IterativePardisoSolverInterface::normal_tester_
SmartPtr< IterativeSolverTerminationTester > normal_tester_
Termination tester for normal step computation.
Definition: IpIterativePardisoSolverInterface.hpp:266
Ipopt::IterativePardisoSolverInterface::debug_cnt_
Index debug_cnt_
Definition: IpIterativePardisoSolverInterface.hpp:222
Ipopt::IterativePardisoSolverInterface::pardiso_iter_inverse_norm_factor_
Number pardiso_iter_inverse_norm_factor_
Definition: IpIterativePardisoSolverInterface.hpp:170
DBG_ASSERT
#define DBG_ASSERT(test)
Definition: IpDebug.hpp:38
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::IterativePardisoSolverInterface::a_
double * a_
Array for storing the values of the matrix.
Definition: IpIterativePardisoSolverInterface.hpp:124
Ipopt::IterativePardisoSolverInterface::MatrixFormat
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
Definition: IpIterativePardisoSolverInterface.hpp:85
Ipopt::InexactCq
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Definition: IpInexactCq.hpp:22
Ipopt::IterativePardisoSolverInterface::CONSTRAINT
@ CONSTRAINT
Definition: IpIterativePardisoSolverInterface.hpp:140
Ipopt::IterativePardisoSolverInterface::pardiso_repeated_perturbation_means_singular_
bool pardiso_repeated_perturbation_means_singular_
Flag indicating whether repeated perturbed elements even after a new symbolic factorization should be...
Definition: IpIterativePardisoSolverInterface.hpp:153