Ipopt  trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
SensSchurDriver.hpp
Go to the documentation of this file.
00001 // Copyright 2009, 2011 Hans Pirnay
00002 // All Rights Reserved.
00003 // This code is published under the Eclipse Public License.
00004 //
00005 // Date   : 2009-05-06
00006 
00007 #ifndef __ASSCHURDRIVER_HPP__
00008 #define __ASSCHURDRIVER_HPP__
00009 
00010 #include "SensSchurData.hpp"
00011 #include "SensPCalculator.hpp"
00012 #include "IpVector.hpp"
00013 #include "IpIteratesVector.hpp"
00014 
00015 namespace Ipopt
00016 {
00017 
00018   class SchurDriver : public AlgorithmStrategyObject
00019   {
00029   public:
00030 
00031     SchurDriver(SmartPtr<PCalculator> pcalc,
00032                 SmartPtr<SchurData> data_B)
00033       :
00034       pcalc_(pcalc),
00035       data_B_(data_B)
00036     {
00037     }
00038 
00039     virtual ~SchurDriver()
00040     {
00041     }
00042 
00044     virtual bool InitializeImpl(const OptionsList& options,
00045                                 const std::string& prefix)
00046     {
00047       return true;
00048     }
00049 
00051     virtual SmartPtr<const SchurData> data_A() const
00052     {
00053       return pcalc_->data_A();
00054     }
00055 
00056     virtual SmartPtr<const SchurData> data_B() const
00057     {
00058       return ConstPtr(data_B_);
00059     }
00060 
00061     virtual SmartPtr<SchurData> data_A_nonconst()
00062     {
00063       return pcalc_->data_A_nonconst();
00064     }
00065 
00066     virtual SmartPtr<SchurData> data_B_nonconst()
00067     {
00068       return data_B_;
00069     }
00070 
00071     virtual SmartPtr<const PCalculator> pcalc() const
00072     {
00073       return ConstPtr(pcalc_);
00074     }
00075 
00076     virtual SmartPtr<PCalculator> pcalc_nonconst()
00077     {
00078       return pcalc_;
00079     }
00080 
00084     virtual bool SchurBuild() =0;
00085 
00087     virtual bool SchurFactorize() =0;
00088 
00090     virtual bool SchurSolve(SmartPtr<IteratesVector> lhs,
00091                             SmartPtr<const IteratesVector> rhs,
00092                             SmartPtr<Vector> delta_u,
00093                             SmartPtr<IteratesVector> sol=NULL)=0; // the vector K^(-1)*r_s which usually should have been computed before.
00094 
00095 
00101   private:
00102     SchurDriver()
00103     {
00104     }
00105 
00106     SmartPtr<PCalculator> pcalc_;
00107 
00108     SmartPtr<SchurData> data_B_;
00109   };
00110 }
00111 
00112 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines