11#ifndef __IPMA86SOLVERINTERFACE_HPP__
12#define __IPMA86SOLVERINTERFACE_HPP__
29#define IPOPT_DECL_MA86_DEFAULT_CONTROL(x) void (x)( \
30 struct ma86_control* control \
34#define IPOPT_DECL_MA86_ANALYSE(x) void (x)( \
40 const struct ma86_control* control, \
41 struct ma86_info* info \
45#define IPOPT_DECL_MA86_FACTOR(x) void (x)( \
49 const ipnumber val[], \
52 const struct ma86_control* control, \
53 struct ma86_info* info, \
54 const ipnumber scale[] \
58#define IPOPT_DECL_MA86_FACTOR_SOLVE(x) void (x)( \
62 const ipnumber val[], \
65 const struct ma86_control* control, \
66 struct ma86_info* info, \
70 const ipnumber scale[] \
74#define IPOPT_DECL_MA86_SOLVE(x) void (x)( \
81 const struct ma86_control* control,\
82 struct ma86_info* info, \
83 const ipnumber scale[] \
87#define IPOPT_DECL_MA86_FINALISE(x) void (x)( \
89 const struct ma86_control* control \
172 const std::string& prefix
196 Index numberOfNegEVals
#define IPOPT_DECL_MC68_ORDER(x)
#define IPOPT_DECL_MC68_DEFAULT_CONTROL(x)
#define IPOPT_DECL_MA86_FACTOR_SOLVE(x)
#define IPOPT_DECL_MA86_SOLVE(x)
#define IPOPT_DECL_MA86_DEFAULT_CONTROL(x)
#define IPOPT_DECL_MA86_FACTOR(x)
#define IPOPT_DECL_MA86_FINALISE(x)
#define IPOPT_DECL_MA86_ANALYSE(x)
ESymSolverStatus DetermineDependentRows(const Index *, const Index *, std::list< Index > &)
This method determines the list of row indices of the linearly dependent rows.
Ma86SolverInterface(SmartPtr< LibraryLoader > hslloader_)
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class.
int ndim_
Number of dimensions.
IPOPT_DECL_MA86_SOLVE * ma86_solve
IPOPT_DECL_MA86_DEFAULT_CONTROL * ma86_default_control
IPOPT_DECL_MA86_ANALYSE * ma86_analyse
Number * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
ESymSolverStatus MultiSolve(bool new_matrix, const Index *ia, const Index *ja, Index nrhs, Number *rhs_vals, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.
Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
IPOPT_DECL_MA86_FACTOR_SOLVE * ma86_factor_solve
int * order_
Fill reducing permutation.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
IPOPT_DECL_MA86_FINALISE * ma86_finalise
int numneg_
Number of negative pivots in last factorization.
ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal structures.
IPOPT_DECL_MC68_DEFAULT_CONTROL * mc68_default_control
struct ma86_control control_
IPOPT_DECL_MA86_FACTOR * ma86_factor
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Number * val_
Storage for variables.
void * keep_
Stores pointer to factors (only understood by Fortran code!)
static void SetFunctions(IPOPT_DECL_MA86_DEFAULT_CONTROL(*ma86_default_control), IPOPT_DECL_MA86_ANALYSE(*ma86_analyse), IPOPT_DECL_MA86_FACTOR(*ma86_factor), IPOPT_DECL_MA86_FACTOR_SOLVE(*ma86_factor_solve), IPOPT_DECL_MA86_SOLVE(*ma86_solve), IPOPT_DECL_MA86_FINALISE(*ma86_finalise), IPOPT_DECL_MC68_DEFAULT_CONTROL(*mc68_default_control),)
set MA86 and MC68 functions to use for every instantiation of this class
bool IncreaseQuality()
Request to increase quality of solution for next solve.
bool pivtol_changed_
indicates if pivtol has been changed
IPOPT_DECL_MC68_ORDER * mc68_order
bool ProvidesDegeneracyDetection() const
Query whether the indices of linearly dependent rows/columns can be determined by this linear solver.
SmartPtr< LibraryLoader > hslloader
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.
EMatrixFormat
Enum to specify sparse matrix format.
@ CSR_Format_1_Offset
Compressed sparse row format for upper triangular part, with 1 offset.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ESymSolverStatus
Enum to report outcome of a linear solve.
@ SYMSOLVER_FATAL_ERROR
Unrecoverable error in linear solver occurred.
ipindex Index
Type of all indices of vectors, matrices etc.
ipnumber Number
Type of all numbers.