Ipopt  3.11.9
IpMa86SolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2011, Science and Technology Facilities Council
2 // Copyright (C) 2009, Jonathan Hogg <jdh41.at.cantab.net>
3 // Copyright (C) 2004, 2007 International Business Machines and others.
4 // All Rights Reserved.
5 // This code is published under the Eclipse Public License.
6 //
7 // $Id: IpMa86SolverInterface.hpp 2332 2013-06-14 14:05:12Z stefan $
8 //
9 // Authors: Jonathan Hogg STFC 2011-03-14
10 // Jonathan Hogg 2009-07-29
11 // Carl Laird, Andreas Waechter IBM 2004-03-17
12 
13 #ifndef __IPMA86SOLVERINTERFACE_HPP__
14 #define __IPMA86SOLVERINTERFACE_HPP__
15 
17 extern "C"
18 {
19 #include "hsl_ma86d.h"
20 }
21 
22 namespace Ipopt
23 {
24 
105  {
106  private:
107  enum order_opts {
111  };
112 
113  int ndim_; // Number of dimensions
114  double *val_; // Storage for variables
115  int numneg_; // Number of negative pivots in last factorization
116  Index *order_; // Fill reducing permutation
117  void *keep_; // Stores pointer to factors (only understood by Fortran code!)
118  bool pivtol_changed_; // indicates if pivtol has been changed
119 
120  /* Options */
121  struct ma86_control control_;
122  double umax_;
124 
125  public:
126 
128  val_(NULL), keep_(NULL), pivtol_changed_(false)
129  {}
131 
133 
134  bool InitializeImpl(const OptionsList& options,
135  const std::string& prefix);
136 
146  const Index* ia,
147  const Index* ja);
148 
156  {
157  return val_;
158  }
159 
192  ESymSolverStatus MultiSolve(bool new_matrix,
193  const Index* ia,
194  const Index* ja,
195  Index nrhs,
196  double* rhs_vals,
197  bool check_NegEVals,
198  Index numberOfNegEVals);
199 
207  {
208  return numneg_;
209  }
211 
212  //* @name Options of Linear solver */
214 
221 
225  bool ProvidesInertia() const
226  {
227  return true;
228  }
229 
234  {
235  return CSR_Format_1_Offset;
236  }
238 
245  {
246  return false;
247  }
251  const Index* ja,
252  std::list<Index>& c_deps)
253  {
254  return SYMSOLVER_FATAL_ERROR;
255  }
256  };
257 
258 } // namespace Ipopt
259 
260 #endif
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
double * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
ESymSolverStatus DetermineDependentRows(const Index *ia, const Index *ja, std::list< Index > &c_deps)
This method determines the list of row indices of the linearly dependent rows.
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.
ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal stuctures.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
bool IncreaseQuality()
Request to increase quality of solution for next solve.
bool ProvidesDegeneracyDetection() const
Query whether the indices of linearly dependent rows/columns can be determined by this linear solver.
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.
@ CSR_Format_1_Offset
Compressed sparse row format for lower triangular part, with 1 offset.
#define ma86_control
Definition: hsl_ma86d.h:13
ESymSolverStatus
Enum to report outcome of a linear solve.
@ SYMSOLVER_FATAL_ERROR
Unrecoverable error in linear solver occurred.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19