Ipopt 3.11.9
Loading...
Searching...
No Matches
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
17extern "C"
18{
19#include "hsl_ma86d.h"
20}
21
22namespace Ipopt
23{
24
105 {
106 private:
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), 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
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 {
255 }
256 };
257
258} // namespace Ipopt
259
260#endif
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
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.
double * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
This class stores a list of user set options.
Template class for Smart Pointers.
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
@ 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