00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __IPGENKKTSOLVERINTERFACE_HPP__
00010 #define __IPGENKKTSOLVERINTERFACE_HPP__
00011
00012 #include "IpUtils.hpp"
00013 #include "IpAlgStrategy.hpp"
00014 #include "IpSymLinearSolver.hpp"
00015
00016 namespace Ipopt
00017 {
00020 class GenKKTSolverInterface: public AlgorithmStrategyObject
00021 {
00022 public:
00025 GenKKTSolverInterface()
00026 {}
00027
00028 virtual ~GenKKTSolverInterface()
00029 {}
00031
00033 virtual bool InitializeImpl(const OptionsList& options,
00034 const std::string& prefix) = 0;
00035
00073 virtual ESymSolverStatus MultiSolve(
00074 bool new_matrix
00075 , Index n_x
00076 , Index n_c
00077 , Index n_d
00078 , SmartPtr<const SymMatrix> W
00079 , SmartPtr<const Matrix> Jac_c
00080 , SmartPtr<const Matrix> Jac_d
00081 , const Number* D_x
00082 , const Number* D_s
00083 , const Number* D_c
00084 , const Number* D_d
00085 , Number delta_x
00086 , Number delta_s
00087 , Number delta_c
00088 , Number delta_d
00089 , Index n_rhs
00090 , Number* rhssol
00091 , bool check_NegEVals
00092 , Index numberOfNegEVals
00093 )=0;
00094
00101 virtual Index NumberOfNegEVals() const =0;
00103
00104
00106
00112 virtual bool IncreaseQuality() =0;
00113
00117 virtual bool ProvidesInertia() const =0;
00119 };
00120
00121 }
00122
00123 #endif