00001 #ifndef gridripper_odesolver_shoot_method_RK2_h
00002 #define gridripper_odesolver_shoot_method_RK2_h
00003
00004 #include <gridripper/amr1d/FieldWrapper.h>
00005 #include <gridripper/odesolver/shoot/ODEIntegrator.h>
00006 #include <gridripper/tvalarray.h>
00007
00008 namespace gridripper { namespace odesolver { namespace shoot { namespace method {
00009
00016 class RK2: public ODEIntegrator
00017 {
00018 tvalarray<GReal_t> tmpf1;
00019 tvalarray<GReal_t> tmpf2;
00020
00021 public:
00022 RK2(ODE* ode);
00023
00024 void integrate(FieldWrapper& f, GReal_t x, GReal_t dx);
00025
00026 private:
00027 void integrate(GReal_t x, GReal_t dx,
00028 GReal_t* f0, GReal_t* f1, GReal_t* f2);
00029
00030 void step(GReal_t* f0, GReal_t* fin, GReal_t x, GReal_t* fout, GReal_t dx);
00031 };
00032
00033 } } } }
00034
00035 #endif