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 \ 173 const std::string& prefix
197 Index numberOfNegEVals
IPOPT_DECL_MA86_SOLVE * ma86_solve
#define IPOPT_DECL_MA86_FACTOR_SOLVE(x)
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
ESymSolverStatus
Enum to report outcome of a linear solve.
Number * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal structures.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
Number * val_
Storage for variables.
#define IPOPT_DECL_MC68_DEFAULT_CONTROL(x)
#define IPOPT_DECL_MA86_SOLVE(x)
int numneg_
Number of negative pivots in last factorization.
IPOPT_DECL_MC68_DEFAULT_CONTROL * mc68_default_control
IPOPT_DECL_MA86_FACTOR * ma86_factor
ESymSolverStatus DetermineDependentRows(const Index *, const Index *, std::list< Index > &)
This method determines the list of row indices of the linearly dependent rows.
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
IPOPT_DECL_MA86_DEFAULT_CONTROL * ma86_default_control
SmartPtr< LibraryLoader > hslloader
ipindex Index
Type of all indices of vectors, matrices etc.
Compressed sparse row format for lower triangular part, with 1 offset.
#define IPOPT_DECL_MA86_FINALISE(x)
This file contains a base class for all exceptions and a set of macros to help with exceptions...
int * order_
Fill reducing permutation.
Template class for Smart Pointers.
bool IncreaseQuality()
Request to increase quality of solution for next solve.
This class stores a list of user set options.
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.
bool pivtol_changed_
indicates if pivtol has been changed
int ndim_
Number of dimensions.
ipnumber Number
Type of all numbers.
struct ma86_control control_
void * keep_
Stores pointer to factors (only understood by Fortran code!)
#define IPOPT_DECL_MC68_ORDER(x)
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
Unrecoverable error in linear solver occurred.
IPOPT_DECL_MA86_FACTOR_SOLVE * ma86_factor_solve
EMatrixFormat
Enum to specify sparse matrix format.
bool ProvidesDegeneracyDetection() const
Query whether the indices of linearly dependent rows/columns can be determined by this linear solver...
IPOPT_DECL_MA86_ANALYSE * ma86_analyse
bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
IPOPT_DECL_MC68_ORDER * mc68_order
#define IPOPT_DECL_MA86_DEFAULT_CONTROL(x)
#define IPOPT_DECL_MA86_FACTOR(x)
#define IPOPT_DECL_MA86_ANALYSE(x)
IPOPT_DECL_MA86_FINALISE * ma86_finalise
Ma86SolverInterface(SmartPtr< LibraryLoader > hslloader_)