Ipopt Documentation  
 
Loading...
Searching...
No Matches
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// Authors: Andreas Waechter IBM 2008-09-18
6// based on IpPardisoSolverInterface.hpp rev 1119
7
8#ifndef __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
9#define __IPITERATIVEPARDISOSOLVERINTERFACE_HPP__
10
12#include "IpInexactCq.hpp"
14
15namespace Ipopt
16{
17
22{
23public:
26
30 );
31
35
37 const OptionsList& options,
38 const std::string& prefix
39 );
40
43
45 Index dim,
46 Index nonzeros,
47 const Index* ia,
48 const Index* ja
49 );
50
54 virtual double* GetValuesArrayPtr();
55
58 bool new_matrix,
59 const Index* ia,
60 const Index* ja,
61 Index nrhs,
62 double* rhs_vals,
63 bool check_NegEVals,
64 Index numberOfNegEVals
65 );
66
70 virtual Index NumberOfNegEVals() const;
72
73 //* @name Options of Linear solver */
75
77 virtual bool IncreaseQuality();
78
83 virtual bool ProvidesInertia() const
84 {
85 return true;
86 }
87
92 {
94 }
96
97 static void RegisterOptions(
99 );
100
101private:
112
114
118 );
119
123 );
125
128
130
133
135 double* a_;
137
140
143
146
148 {
152 };
173
184
194
197
205
208
214
217
218 void** PT_;
231 double* DPARM_;
235
241
244
246 const Index* ia,
247 const Index* ja
248 );
249
252 const Index* ia,
253 const Index* ja,
254 bool check_NegEVals,
255 Index numberOfNegEVals
256 );
257
261 const Index* ia,
262 const Index* ja,
263 Index nrhs,
264 double* rhs_vals
265 );
267
270 {
271 InexactData& inexact_data = static_cast<InexactData&>(IpData().AdditionalData());
272 DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
273 return inexact_data;
274 }
275
278 {
279 InexactCq& inexact_cq = static_cast<InexactCq&>(IpCq().AdditionalCq());
280 DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
281 return inexact_cq;
282 }
283
286
289
290};
291
292} // namespace Ipopt
293
294#endif
#define DBG_ASSERT(test)
Definition: IpDebug.hpp:27
IPOPT_FORTRAN_INTEGER_TYPE ipfint
Definition: IpTypes.hpp:24
IpoptCalculatedQuantities & IpCq() const
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Definition: IpInexactCq.hpp:21
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm.
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.
ipfint MAXFCT_
Maximal number of factors with identical nonzero structure.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Number pardiso_iter_dropping_factor_used_
Actually used dropping tolerances.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
bool have_symbolic_factorization_
Flag indicating if symbolic factorization has already been performed.
IterativePardisoSolverInterface(const IterativePardisoSolverInterface &)
Copy Constructor.
IterativePardisoSolverInterface()
Default Constructor.
InexactData & InexData()
Method to easily access Inexact data.
double * DPARM_
Parameter and info array for Pardiso.
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.
void operator=(const IterativePardisoSolverInterface &)
Overloaded Assignment Operator.
SmartPtr< IterativeSolverTerminationTester > pd_tester_
Termination tester for primal-dual step computation.
Number decr_factor_
Decrease factor for dropping tolerances.
ipfint MTYPE_
Matrix type; real and symmetric indefinite.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class.
Index pardiso_max_iter_
Options for the preconditioner.
virtual double * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements are to be stored.
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.
ipfint MNUM_
Actual matrix for the solution phase.
double * a_
Array for storing the values of the matrix.
Index dim_
Number of rows and columns of the matrix.
Index pardiso_max_droptol_corrections_
Maximal number of decreases of drop tolerance during one solve.
ipfint * IPARM_
Parameter and info array for Pardiso.
PardisoMatchingStrategy match_strat_
Option that controls the matching strategy.
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.
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
ESymSolverStatus Solve(const Index *ia, const Index *ja, Index nrhs, double *rhs_vals)
Call Pardiso to do the Solve.
bool initialized_
Flag indicating if internal data is initialized.
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.
bool pardiso_redo_symbolic_fact_only_if_inertia_wrong_
Flag indicating whether the symbolic factorization should only be done after perturbed elements,...
IterativePardisoSolverInterface(IterativeSolverTerminationTester &normal_tester, IterativeSolverTerminationTester &pd_tester)
Constructor.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
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.
Definition: IpSmartPtr.hpp:172
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 lower 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.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
double Number
Type of all numbers.
Definition: IpTypes.hpp:15