Ipopt  3.11.9
IpMa27TSolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpMa27TSolverInterface.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2005-03-17
8 
9 #ifndef __IPMA27TSOLVERINTERFACE_HPP__
10 #define __IPMA27TSOLVERINTERFACE_HPP__
11 
13 
14 namespace Ipopt
15 {
20  {
21  public:
26 
30 
32  bool InitializeImpl(const OptionsList& options,
33  const std::string& prefix);
34 
35 
44  const Index *airn,
45  const Index *ajcn);
46 
52  virtual double* GetValuesArrayPtr();
53 
57  virtual ESymSolverStatus MultiSolve(bool new_matrix,
58  const Index* airn,
59  const Index* ajcn,
60  Index nrhs,
61  double* rhs_vals,
62  bool check_NegEVals,
63  Index numberOfNegEVals);
64 
71  virtual Index NumberOfNegEVals() const;
73 
74  //* @name Options of Linear solver */
76 
81  virtual bool IncreaseQuality();
82 
86  virtual bool ProvidesInertia() const
87  {
88  return true;
89  }
94  {
95  return Triplet_Format;
96  }
98 
103 
104  private:
115 
119 
124 
128 
134 
148 
153 
156 
173 
181  double cntl_[5];
182 
187 
194 
198  double* a_;
199 
207 
215  const Index* ajcn);
216 
222  const Index* ajcn,
223  bool check_NegEVals,
224  Index numberOfNegEVals);
225 
229  double *rhs_vals);
231  };
232 
233 } // namespace Ipopt
234 #endif
FORTRAN_INTEGER_TYPE ipfint
Definition: IpTypes.hpp:26
Interface to the symmetric linear solver MA27, derived from SparseSymLinearSolverInterface.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
ipfint icntl_[30]
integer control values
bool initialized_
Flag indicating if internal data is initialized.
virtual ~Ma27TSolverInterface()
Destructor.
Ma27TSolverInterface(const Ma27TSolverInterface &)
Copy Constructor.
bool refactorize_
Flag that is true if we just requested the values of the matrix again (SYMSOLVER_CALL_AGAIN) and have...
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
double * a_
factor A of matrix
Number la_init_factor_
Factor for estimating initial value of la.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
bool ignore_singularity_
Flag indicating if MA27 should continue if a singular matrix is detected, but right hands sides are s...
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *airn, const Index *ajcn)
Method for initializing internal stuctures.
Number liw_init_factor_
Factor for estimating initial value of liw.
ESymSolverStatus SymbolicFactorization(const Index *airn, const Index *ajcn)
Call MA27AD and reserve memory for MA27 data.
double cntl_[5]
real control values
bool skip_inertia_check_
Flag indicating if the interia is always assumed to be correct.
void operator=(const Ma27TSolverInterface &)
Overloaded Equals Operator.
bool liw_increase_
flag indicating that liw should be increased before next factorization
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
ipfint * iw_
integer work space
bool pivtol_changed_
Flag indicating if the matrix has to be refactorized because the pivot tolerance has been changed.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Index dim_
Number of rows and columns of the matrix.
ESymSolverStatus Factorization(const Index *airn, const Index *ajcn, bool check_NegEVals, Index numberOfNegEVals)
Call MA27BD to factorize the Matrix.
Number pivtolmax_
Maximal pivot tolerance.
bool la_increase_
flag indicating that la should be increased before next factorization
Index negevals_
Number of negative eigenvalues.
Ma27TSolverInterface()
Constructor.
ipfint liw_
length of integer work space
Index nonzeros_
Number of nonzeros of the matrix.
virtual double * GetValuesArrayPtr()
Method returing an internal array into which the nonzero elements (in the same order as airn and ajcn...
virtual ESymSolverStatus MultiSolve(bool new_matrix, const Index *airn, const Index *ajcn, Index nrhs, double *rhs_vals, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.
ESymSolverStatus Backsolve(Index nrhs, double *rhs_vals)
Call MA27CD to do the backsolve.
Number meminc_factor_
Factor for increaseing memory.
This class stores a list of user set options.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:183
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
EMatrixFormat
Enum to specify sparse matrix format.
ESymSolverStatus
Enum to report outcome of a linear solve.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
double Number
Type of all numbers.
Definition: IpTypes.hpp:17