Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

timestepping/newmark.hh
Go to the documentation of this file.
00001 // newmark strategy
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   // *************************************************************** Newmark **
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_;   // Yn1 = Y(t_{n-1}), Yn2 =  Y(t_{n-2})
00068     Real beta_, gamma_;
00070     std::auto_ptr<concepts::Operator<Real> > lhs_;
00071   };
00072 
00073 }
00074 
00075 #endif // newmark_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)