10 #ifndef __IPMA77SOLVERINTERFACE_HPP__ 11 #define __IPMA77SOLVERINTERFACE_HPP__ 28 #define IPOPT_DECL_MA77_DEFAULT_CONTROL(x) void (x)( \ 29 struct ma77_control* control \ 33 #define IPOPT_DECL_MA77_OPEN_NELT(x) void (x)( \ 40 const struct ma77_control* control,\ 41 struct ma77_info* info, \ 46 #define IPOPT_DECL_MA77_OPEN(x) void (x)( \ 53 const struct ma77_control* control,\ 54 struct ma77_info* info \ 58 #define IPOPT_DECL_MA77_INPUT_VARS(x) void (x)( \ 63 const struct ma77_control* control,\ 64 struct ma77_info* info \ 68 #define IPOPT_DECL_MA77_INPUT_REALS(x) void (x)( \ 71 const ipnumber reals[],\ 73 const struct ma77_control* control,\ 74 struct ma77_info* info \ 78 #define IPOPT_DECL_MA77_ANALYSE(x) void (x)( \ 81 const struct ma77_control* control, \ 82 struct ma77_info* info \ 86 #define IPOPT_DECL_MA77_FACTOR(x) void (x)( \ 89 const struct ma77_control* control,\ 90 struct ma77_info* info, \ 91 const ipnumber* scale \ 95 #define IPOPT_DECL_MA77_FACTOR_SOLVE(x) void (x)( \ 98 const struct ma77_control* control,\ 99 struct ma77_info* info, \ 100 const ipnumber* scale, \ 107 #define IPOPT_DECL_MA77_SOLVE(x) void (x)( \ 113 const struct ma77_control* control,\ 114 struct ma77_info* info, \ 115 const ipnumber* scale \ 119 #define IPOPT_DECL_MA77_RESID(x) void (x)( \ 122 const ipnumber xx[], \ 126 const struct ma77_control* control, \ 127 struct ma77_info* info, \ 132 #define IPOPT_DECL_MA77_SCALE(x) void (x)( \ 135 const struct ma77_control* control, \ 136 struct ma77_info* info, \ 141 #define IPOPT_DECL_MA77_ENQUIRE_POSDEF(x) void (x)( \ 144 const struct ma77_control* control,\ 145 struct ma77_info* info \ 149 #define IPOPT_DECL_MA77_ENQUIRE_INDEF(x) void (x)( \ 153 const struct ma77_control* control, \ 154 struct ma77_info* info \ 158 #define IPOPT_DECL_MA77_ALTER(x) void (x)( \ 159 const ipnumber d[], \ 161 const struct ma77_control* control, \ 162 struct ma77_info* info \ 166 #define IPOPT_DECL_MA77_RESTART(x) void (x)( \ 167 const char* restart_file, \ 168 const char* fname1, \ 169 const char* fname2, \ 170 const char* fname3, \ 171 const char* fname4, \ 173 const struct ma77_control* control, \ 174 struct ma77_info* info \ 178 #define IPOPT_DECL_MA77_FINALISE(x) void (x)( \ 180 const struct ma77_control* control,\ 181 struct ma77_info* info \ 185 #define IPOPT_DECL_MC68_DEFAULT_CONTROL(x) void (x)( \ 186 struct mc68_control* control \ 190 #define IPOPT_DECL_MC68_ORDER(x) void (x)( \ 196 const struct mc68_control* control,\ 197 struct mc68_info* info \ 307 const std::string& prefix
331 Index numberOfNegEVals
#define IPOPT_DECL_MA77_FINALISE(x)
int ndim_
Number of dimensions.
IPOPT_DECL_MA77_FACTOR_SOLVE * ma77_factor_solve
IPOPT_DECL_MA77_OPEN * ma77_open
ESymSolverStatus
Enum to report outcome of a linear solve.
IPOPT_DECL_MA77_SOLVE * ma77_solve
#define IPOPT_DECL_MA77_ENQUIRE_INDEF(x)
#define IPOPT_DECL_MA77_FACTOR_SOLVE(x)
#define IPOPT_DECL_MA77_SCALE(x)
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
#define IPOPT_DECL_MA77_ENQUIRE_POSDEF(x)
#define IPOPT_DECL_MA77_DEFAULT_CONTROL(x)
ESymSolverStatus DetermineDependentRows(const Index *, const Index *, std::list< Index > &)
This method determines the list of row indices of the linearly dependent rows.
IPOPT_DECL_MC68_DEFAULT_CONTROL * mc68_default_control
#define IPOPT_DECL_MC68_DEFAULT_CONTROL(x)
#define IPOPT_DECL_MA77_SOLVE(x)
#define IPOPT_DECL_MA77_INPUT_VARS(x)
IPOPT_DECL_MA77_OPEN_NELT * ma77_open_nelt
IPOPT_DECL_MA77_ANALYSE * ma77_analyse
IPOPT_DECL_MA77_ENQUIRE_POSDEF * ma77_enquire_posdef
static void SetFunctions(IPOPT_DECL_MA77_DEFAULT_CONTROL(*ma77_default_control), IPOPT_DECL_MA77_OPEN_NELT(*ma77_open_nelt), IPOPT_DECL_MA77_OPEN(*ma77_open), IPOPT_DECL_MA77_INPUT_VARS(*ma77_input_vars), IPOPT_DECL_MA77_INPUT_REALS(*ma77_input_reals), IPOPT_DECL_MA77_ANALYSE(*ma77_analyse), IPOPT_DECL_MA77_FACTOR(*ma77_factor), IPOPT_DECL_MA77_FACTOR_SOLVE(*ma77_factor_solve), IPOPT_DECL_MA77_SOLVE(*ma77_solve), IPOPT_DECL_MA77_RESID(*ma77_resid), IPOPT_DECL_MA77_SCALE(*ma77_scale), IPOPT_DECL_MA77_ENQUIRE_POSDEF(*ma77_enquire_posdef), IPOPT_DECL_MA77_ENQUIRE_INDEF(*ma77_enquire_indef), IPOPT_DECL_MA77_ALTER(*ma77_alter), IPOPT_DECL_MA77_RESTART(*ma77_restart), IPOPT_DECL_MA77_FINALISE(*ma77_finalise), IPOPT_DECL_MC68_DEFAULT_CONTROL(*mc68_default_control),)
set MA77 and MC68 functions to use for every instantiation of this class
#define IPOPT_DECL_MA77_FACTOR(x)
#define IPOPT_DECL_MA77_RESTART(x)
Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
IPOPT_DECL_MA77_RESTART * ma77_restart
bool ProvidesDegeneracyDetection() const
Query whether the indices of linearly dependent rows/columns can be determined by this linear solver...
ipindex Index
Type of all indices of vectors, matrices etc.
IPOPT_DECL_MA77_INPUT_REALS * ma77_input_reals
This file contains a base class for all exceptions and a set of macros to help with exceptions...
int numneg_
Number of negative pivots in last factorization.
Number * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
Template class for Smart Pointers.
Number * val_
Storage for variables.
This class stores a list of user set options.
IPOPT_DECL_MA77_DEFAULT_CONTROL * ma77_default_control
ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal structures.
IPOPT_DECL_MA77_ALTER * ma77_alter
#define IPOPT_DECL_MA77_INPUT_REALS(x)
IPOPT_DECL_MC68_ORDER * mc68_order
#define IPOPT_DECL_MA77_RESID(x)
ipnumber Number
Type of all numbers.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
bool pivtol_changed_
indicates if pivtol has been changed
#define IPOPT_DECL_MA77_OPEN(x)
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
IPOPT_DECL_MA77_ENQUIRE_INDEF * ma77_enquire_indef
bool IncreaseQuality()
Request to increase quality of solution for next solve.
#define IPOPT_DECL_MA77_ALTER(x)
#define IPOPT_DECL_MC68_ORDER(x)
Unrecoverable error in linear solver occurred.
EMatrixFormat
Enum to specify sparse matrix format.
IPOPT_DECL_MA77_FINALISE * ma77_finalise
Ma77SolverInterface(SmartPtr< LibraryLoader > hslloader_)
#define IPOPT_DECL_MA77_OPEN_NELT(x)
bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
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.
struct ma77_control control_
void * keep_
Stores pointer to factors (only understood by Fortran code!)
#define IPOPT_DECL_MA77_ANALYSE(x)
IPOPT_DECL_MA77_SCALE * ma77_scale
IPOPT_DECL_MA77_RESID * ma77_resid
Compressed sparse row format for both lower and upper parts, with 1 offset.
SmartPtr< LibraryLoader > hslloader
IPOPT_DECL_MA77_INPUT_VARS * ma77_input_vars
IPOPT_DECL_MA77_FACTOR * ma77_factor