Go to the documentation of this file.00001
00002
00003 #ifndef newmark_hh
00004 #define newmark_hh
00005
00006 #include "basics/typedefs.hh"
00007 #include "function/vector.hh"
00008 #include "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
00022
00037 class Newmark : public TimeStepStrategy {
00038 public:
00049 Newmark(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 Real beta = 0.25, Real gamma = 0.5);
00057 protected:
00058 virtual std::ostream& info(std::ostream& os) const;
00059 virtual void next();
00060 private:
00062 concepts::Operator<Real> &D2_, &D0_;
00064 timestepping::TimeVector &trhs_;
00066 concepts::Vector<Real> Yn1_, Yn2_;
00068 Real beta_, gamma_;
00070 std::auto_ptr<concepts::Operator<Real> > lhs_;
00071 };
00072
00073 }
00074
00075 #endif // newmark_hh