• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/tmp/buildd/coinor-ipopt-3.8.3/Ipopt/contrib/AsNMPC/src/AsSchurDriver.hpp

Go to the documentation of this file.
00001 // Copyright 2009, 2010 Hans Pirnay
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // Date   : 2009-05-06
00006 
00007 #ifndef __ASSCHURDRIVER_HPP__
00008 #define __ASSCHURDRIVER_HPP__
00009 
00010 #include "AsSchurData.hpp"
00011 #include "AsPCalculator.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<IteratesVector> sol, // the vector K^(-1)*r_s which usually should have been computed before.
00093                             SmartPtr<Vector> delta_u) =0;
00094 
00096     virtual bool SchurSolve(SmartPtr<IteratesVector> lhs, 
00097                             SmartPtr<const IteratesVector> rhs,
00098                             SmartPtr<Vector> delta_u) =0;
00099     
00100   private:
00101     SchurDriver()
00102     {
00103     }
00104 
00105     SmartPtr<PCalculator> pcalc_;
00106 
00107     SmartPtr<SchurData> data_B_;
00108   };
00109 }
00110 
00111 #endif

Generated on Thu Jul 29 2010 19:56:08 by  doxygen 1.7.1