00001 // Copyright (C) 2004, 2006 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpPDSystemSolver.hpp 759 2006-07-07 03:07:08Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13 00008 00009 #ifndef __IPPDSYSTEMSOLVER_HPP__ 00010 #define __IPPDSYSTEMSOLVER_HPP__ 00011 00012 #include "IpUtils.hpp" 00013 #include "IpSymMatrix.hpp" 00014 #include "IpAlgStrategy.hpp" 00015 #include "IpIteratesVector.hpp" 00016 00017 namespace Ipopt 00018 { 00019 00076 class PDSystemSolver: public AlgorithmStrategyObject 00077 { 00078 public: 00082 PDSystemSolver() 00083 {} 00084 00086 virtual ~PDSystemSolver() 00087 {} 00089 00091 virtual bool InitializeImpl(const OptionsList& options, 00092 const std::string& prefix) = 0; 00093 00106 virtual bool Solve(Number alpha, 00107 Number beta, 00108 const IteratesVector& rhs, 00109 IteratesVector& res, 00110 bool allow_inexact=false, 00111 bool improve_solution=false) =0; 00112 00113 private: 00123 PDSystemSolver& operator=(const PDSystemSolver&); 00125 }; 00126 00127 00128 } // namespace Ipopt 00129 00130 #endif