00001 // nystroem strategy 00002 00003 #ifndef nystroem_hh 00004 #define nystroem_hh 00005 00006 #include "basics/typedefs.hh" 00007 #include "function/vector.hh" 00008 #include "timestepping/strategy.hh" 00009 00010 namespace concepts { 00011 template<typename F> 00012 class Operator; 00013 } 00014 00015 namespace timestepping { 00016 00017 using concepts::Real; 00018 00019 class TimeVector; 00020 00021 // ************************************************************** Nystroem ** 00022 00038 class Nystroem : public TimeStepStrategy { 00039 public: 00049 Nystroem(concepts::SolverFabric<Real>& fabric, 00050 concepts::Operator<Real>& D2, 00051 concepts::Operator<Real>& D0, 00052 timestepping::TimeVector& trhs, 00053 const concepts::Vector<Real>& Y0, 00054 const concepts::Vector<Real>& Z0, 00055 Real dt); 00056 protected: 00057 virtual std::ostream& info(std::ostream& os) const; 00058 virtual void next(); 00059 private: 00061 concepts::Operator<Real>& D0_; 00063 timestepping::TimeVector &trhs_; 00065 concepts::Vector<Real> Z_; 00066 }; 00067 } 00068 00069 #endif // nystroem_hh