00001 // Copyright 2009 Hans Pirnay 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // Date : 2009-05-08 00006 00007 #ifndef __ASDENSEGENSCHURDRIVER_HPP__ 00008 #define __ASDENSEGENSCHURDRIVER_HPP__ 00009 00010 #include "AsSchurDriver.hpp" 00011 #include "AsAsBacksolver.hpp" 00012 #include "IpDenseGenMatrix.hpp" 00013 00014 namespace Ipopt 00015 { 00016 00017 class DenseGenSchurDriver : public SchurDriver 00018 { 00024 public: 00025 00026 DenseGenSchurDriver(SmartPtr<AsBacksolver> backsolver, 00027 SmartPtr<PCalculator> pcalc, 00028 SmartPtr<SchurData> data_B); 00029 00030 virtual ~DenseGenSchurDriver(); 00031 00033 virtual bool SchurBuild(); 00034 00036 virtual bool SchurFactorize(); 00037 00039 virtual bool SchurSolve(SmartPtr<IteratesVector> lhs, 00040 SmartPtr<const IteratesVector> rhs, 00041 SmartPtr<IteratesVector> sol, 00042 SmartPtr<Vector> delta_u); 00043 00045 virtual bool SchurSolve(SmartPtr<IteratesVector> lhs, 00046 SmartPtr<const IteratesVector> rhs, 00047 SmartPtr<Vector> delta_u); 00048 00049 private: 00050 00051 SmartPtr<AsBacksolver> backsolver_; 00052 00053 SmartPtr<DenseGenMatrix> S_; 00054 00055 }; 00056 } 00057 00058 #endif