Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 2706 2018-01-15 04:11:56Z 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 */
122  double umax_;
124 
125  public:
126 
128  val_(NULL), order_(NULL), keep_(NULL), pivtol_changed_(false)
129  {}
131 
132  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
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 
220  bool IncreaseQuality();
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
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.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
ESymSolverStatus
Enum to report outcome of a linear solve.
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.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
double * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
Compressed sparse row format for lower triangular part, with 1 offset.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
bool IncreaseQuality()
Request to increase quality of solution for next solve.
This class stores a list of user set options.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Unrecoverable error in linear solver occurred.
EMatrixFormat
Enum to specify sparse matrix format.
#define ma86_control
Definition: hsl_ma86d.h:13
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
bool ProvidesDegeneracyDetection() const
Query whether the indices of linearly dependent rows/columns can be determined by this linear solver...