CLHEP VERSION Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 #ifndef _SimpleRKStepper_h_ 00002 #define _SimpleRKStepper_h_ 00003 #include "CLHEP/GenericFunctions/RKIntegrator.hh" 00004 // 00005 // This is a stepper that steps with stepsize h using an 00006 // Explicit Runge-Kutte method determined by a Butcher 00007 // tableau. 00008 // 00009 // The stepsize is therefore not adaptively determined; 00010 // so this type of stepper is mostly useful in attempting 00011 // to categorize the different explicit RK Algorithms 00012 // and probably not for real-life problems unless one has 00013 // some a priori knowledge about how to set the stepsize. 00014 // 00015 #include "CLHEP/GenericFunctions/ButcherTableau.hh" 00016 namespace Genfun { 00017 class SimpleRKStepper:public RKIntegrator::RKStepper{ 00018 00019 public: 00020 00021 // Constructor: 00022 SimpleRKStepper(const ButcherTableau & tableau, 00023 double stepsize); 00024 00025 // Destructor: 00026 virtual ~SimpleRKStepper(); 00027 00028 // Take a step: 00029 virtual void step (const RKIntegrator::RKData * data, // functions 00030 const RKIntegrator::RKData::Data & sdata, // start point 00031 RKIntegrator::RKData::Data & ddata, // end point 00032 double timeLimit // time limit 00033 ) const ; 00034 // Clone: 00035 virtual SimpleRKStepper *clone() const; 00036 00037 private: 00038 00039 ButcherTableau tableau; 00040 double stepsize; 00041 00042 }; 00043 } 00044 00045 #endif