8#ifndef __IPMA57TSOLVERINTERFACE_HPP__
9#define __IPMA57TSOLVERINTERFACE_HPP__
24#define IPOPT_DECL_MA57A(x) void (x)( \
39#define IPOPT_DECL_MA57B(x) void (x)( \
63#define IPOPT_DECL_MA57C(x) void (x)( \
81#define IPOPT_DECL_MA57E(x) void (x)( \
97#define IPOPT_DECL_MA57I(x) void (x)( \
123 const std::string& prefix
144 Index numberOfNegEVals
310 Index numberOfNegEVals
#define IPOPT_DECL_MA57B(x)
#define IPOPT_DECL_MA57E(x)
#define IPOPT_DECL_MA57I(x)
#define IPOPT_DECL_MA57C(x)
#define IPOPT_DECL_MA57A(x)
int ipindex
Type of all indices of vectors, matrices etc.
Interface to the symmetric linear solver MA57, derived from SparseSymLinearSolverInterface.
Number ma57_pre_alloc_
Factor for estimating initial size of work arrays.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Index negevals_
Number of negative eigenvalues.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *airn, const Index *ajcn)
Method for initializing internal structures.
virtual Number * GetValuesArrayPtr()
Method returning an internal array into which the nonzero elements (in the same order as ja) will be ...
IPOPT_DECL_MA57C * ma57c
solution
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
static void SetFunctions(IPOPT_DECL_MA57A(*ma57a), IPOPT_DECL_MA57B(*ma57b), IPOPT_DECL_MA57C(*ma57c), IPOPT_DECL_MA57E(*ma57e),)
set MA57 functions to use for every instantiation of this class
Index nonzeros_
Number of nonzeros of the matrix.
ESymSolverStatus Factorization(const Index *airn, const Index *ajcn, bool check_NegEVals, Index numberOfNegEVals)
Call MA57BX to factorize the Matrix.
IPOPT_DECL_MA57E * ma57e
copy arrays
ESymSolverStatus SymbolicFactorization(const Index *airn, const Index *ajcn)
Call MA57AX and reserve memory for MA57 data.
void operator=(const Ma57TSolverInterface &)
Default Assignment Operator.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class.
bool initialized_
Flag indicating if internal data is initialized.
bool refactorize_
Flag that is true if we just requested the values of the matrix again (SYMSOLVER_CALL_AGAIN) and have...
Ma57TSolverInterface(const Ma57TSolverInterface &)
Copy Constructor.
bool pivtol_changed_
Flag indicating if the matrix has to be refactorized because the pivot tolerance has been changed.
Ma57TSolverInterface(SmartPtr< LibraryLoader > hslloader_)
Constructor.
Number pivtolmax_
Maximal pivot tolerance.
IPOPT_DECL_MA57I * ma57i
initialize solver
Number * a_
factor A of matrix
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
IPOPT_DECL_MA57A * ma57a
symbolic factorization
SmartPtr< LibraryLoader > hslloader
Number pivtol_
Pivot tolerance.
IPOPT_DECL_MA57B * ma57b
numerical factorization
virtual ESymSolverStatus MultiSolve(bool new_matrix, const Index *airn, const Index *ajcn, Index nrhs, Number *rhs_vals, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.
virtual ~Ma57TSolverInterface()
Destructor.
Index dim_
Number of rows and columns of the matrix.
ESymSolverStatus Backsolve(Index nrhs, Number *rhs_vals)
Call MA57CX to do the backsolve.
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.
@ Triplet_Format
Triplet (MA27) format for lower triangular part.
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.
ipindex Index
Type of all indices of vectors, matrices etc.
ipnumber Number
Type of all numbers.