Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:03:27

0001 #ifndef _StepDoublingRKStepper_hh_
0002 #define _StepDoublingRKStepper_hh_
0003 #include "CLHEP/GenericFunctions/AdaptiveRKStepper.hh"
0004 #include "CLHEP/GenericFunctions/ButcherTableau.hh"
0005 //
0006 // Class StepDoublingRK stepper is a class at that implements
0007 // Fehlberg algorithms, or embedded Runge-Kutta Algorithms.  
0008 //
0009 namespace Genfun {
0010 
0011   class StepDoublingRKStepper: public AdaptiveRKStepper::EEStepper {
0012 
0013   public:
0014     
0015     // Constructor:
0016     StepDoublingRKStepper(const ButcherTableau & tableau);
0017     
0018     // Destructor:
0019     virtual ~StepDoublingRKStepper();
0020     
0021     // Take a single step with error estimate:
0022     virtual void step   (const RKIntegrator::RKData       * data, 
0023              const RKIntegrator::RKData::Data & sdata, 
0024              RKIntegrator::RKData::Data       & ddata, 
0025              std::vector<double>              & errors) const;
0026     // Clone self:
0027     virtual StepDoublingRKStepper *clone() const;
0028     
0029     void doStep(const RKIntegrator::RKData       * data, 
0030         const RKIntegrator::RKData::Data & s, 
0031         RKIntegrator::RKData::Data       & d) const;
0032 
0033     virtual unsigned int order() const;
0034 
0035   private:
0036     ButcherTableau tableau;
0037 
0038   };
0039 }
0040 #endif