Ipopt
trunk
|
00001 // Copyright (C) 2007 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // $Id$ 00006 // 00007 // Authors: Andreas Waechter IBM 2007-03-01 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 //* @name Options of Linear solver */ 00106 00112 virtual bool IncreaseQuality() =0; 00113 00117 virtual bool ProvidesInertia() const =0; 00119 }; 00120 00121 } // namespace Ipopt 00122 00123 #endif