IpSparseSymLinearSolverInterface.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __IPSPARSESYMLINEARSOLVERINTERFACE_HPP__
00010 #define __IPSPARSESYMLINEARSOLVERINTERFACE_HPP__
00011
00012 #include "IpUtils.hpp"
00013 #include "IpAlgStrategy.hpp"
00014 #include "IpSymLinearSolver.hpp"
00015
00016 namespace Ipopt
00017 {
00018
00098 class SparseSymLinearSolverInterface: public AlgorithmStrategyObject
00099 {
00100 public:
00102 enum EMatrixFormat {
00104 Triplet_Format,
00107 CSR_Format_0_Offset,
00110 CSR_Format_1_Offset,
00113 Dense_Format
00114 };
00117 SparseSymLinearSolverInterface()
00118 {}
00119
00120 virtual ~SparseSymLinearSolverInterface()
00121 {}
00123
00125 virtual bool InitializeImpl(const OptionsList& options,
00126 const std::string& prefix) = 0;
00127
00136 virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
00137 const Index* ia,
00138 const Index* ja) = 0;
00139
00146 virtual double* GetValuesArrayPtr() = 0;
00147
00180 virtual ESymSolverStatus MultiSolve(bool new_matrix,
00181 const Index* ia,
00182 const Index* ja,
00183 Index nrhs,
00184 double* rhs_vals,
00185 bool check_NegEVals,
00186 Index numberOfNegEVals)=0;
00187
00194 virtual Index NumberOfNegEVals() const =0;
00196
00197
00199
00205 virtual bool IncreaseQuality() =0;
00206
00210 virtual bool ProvidesInertia() const =0;
00211
00215 virtual EMatrixFormat MatrixFormat() const =0;
00217 };
00218
00219
00220 }
00221
00222 #endif