Ipopt Documentation  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 // Authors: Carl Laird, Andreas Waechter IBM 2005-03-17
6 
7 #ifndef __IPMA27TSOLVERINTERFACE_HPP__
8 #define __IPMA27TSOLVERINTERFACE_HPP__
9 
11 
12 namespace Ipopt
13 {
18 {
19 public:
24 
26  virtual ~Ma27TSolverInterface();
28 
29  bool InitializeImpl(
30  const OptionsList& options,
31  const std::string& prefix
32  );
33 
37  Index dim,
38  Index nonzeros,
39  const Index* airn,
40  const Index* ajcn
41  );
42 
43  virtual double* GetValuesArrayPtr();
44 
46  bool new_matrix,
47  const Index* airn,
48  const Index* ajcn,
49  Index nrhs,
50  double* rhs_vals,
51  bool check_NegEVals,
52  Index numberOfNegEVals);
53 
54  virtual Index NumberOfNegEVals() const;
56 
57  //* @name Options of Linear solver */
59  virtual bool IncreaseQuality();
60 
61  virtual bool ProvidesInertia() const
62  {
63  return true;
64  }
65 
67  {
68  return Triplet_Format;
69  }
71 
73  static void RegisterOptions(
75  );
77 
78 private:
90  );
91 
93  void operator=(
95  );
97 
102 
106 
112 
130 
135 
138 
156 
164  double cntl_[5];
165 
170 
177 
181  double* a_;
182 
188 
197  const Index* airn,
198  const Index* ajcn
199  );
200 
207  const Index* airn,
208  const Index* ajcn,
209  bool check_NegEVals,
210  Index numberOfNegEVals
211  );
212 
215  Index nrhs,
216  double* rhs_vals
217  );
219 };
220 
221 } // namespace Ipopt
222 #endif
virtual ~Ma27TSolverInterface()
Destructor.
ESymSolverStatus
Enum to report outcome of a linear solve.
virtual double * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
FORTRAN_INTEGER_TYPE ipfint
Definition: IpTypes.hpp:24
bool pivtol_changed_
Flag indicating if the matrix has to be refactorized because the pivot tolerance has been changed...
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
Ma27TSolverInterface()
Constructor.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *airn, const Index *ajcn)
Method for initializing internal structures.
double * a_
factor A of matrix
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
void operator=(const Ma27TSolverInterface &)
Default Assignment Operator.
ESymSolverStatus Factorization(const Index *airn, const Index *ajcn, bool check_NegEVals, Index numberOfNegEVals)
Call MA27BD to factorize the Matrix.
double cntl_[5]
real control values
bool initialized_
Flag indicating if internal data is initialized.
ipfint icntl_[30]
integer control values
bool la_increase_
flag indicating that la should be increased before next factorization
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:171
ipfint nsteps_
MA27's NSTEPS.
This class stores a list of user set options.
bool skip_inertia_check_
Flag indicating if the inertia is always assumed to be correct.
ipfint * iw_
integer work space
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before...
bool ignore_singularity_
Flag indicating if MA27 should continue if a singular matrix is detected, but right hands sides are s...
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Index negevals_
Number of negative eigenvalues.
ESymSolverStatus Backsolve(Index nrhs, double *rhs_vals)
Call MA27CD to do the backsolve.
Number la_init_factor_
Factor for estimating initial value of la.
Index nonzeros_
Number of nonzeros of the matrix.
bool refactorize_
Flag that is true if we just requested the values of the matrix again (SYMSOLVER_CALL_AGAIN) and have...
Interface to the symmetric linear solver MA27, derived from SparseSymLinearSolverInterface.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
Index dim_
Number of rows and columns of the matrix.
ipfint maxfrt_
MA27's MAXFRT.
ipfint * ikeep_
MA27's IKEEP.
ESymSolverStatus SymbolicFactorization(const Index *airn, const Index *ajcn)
Call MA27AD and reserve memory for MA27 data.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
Number meminc_factor_
Factor for increaseing memory.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
EMatrixFormat
Enum to specify sparse matrix format.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
ipfint liw_
length of integer work space
bool liw_increase_
flag indicating that liw should be increased before next factorization
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.
Number liw_init_factor_
Factor for estimating initial value of liw.
Number pivtolmax_
Maximal pivot tolerance.