ODEShoot.h

00001 #ifndef gridripper_odesolver_shoot_ODEShoot_h
00002 #define gridripper_odesolver_shoot_ODEShoot_h
00003 
00004 #include <gridripper/config.h>
00005 #include <gridripper/lang/IllegalArgumentException.h>
00006 #include <gridripper/amr1d/FieldWrapper.h>
00007 #include <gridripper/util/GrrProperties.h>
00008 #include <gridripper/tvector.h>
00009 #include <string>
00010 
00011 namespace gridripper { namespace odesolver {
00012 
00013 class ODE;
00014 
00015 namespace shoot {
00016 
00017 class ODEIntegrator;
00018 
00019 using namespace gridripper;
00020 using namespace gridripper::amr1d;
00021 using namespace gridripper::util;
00022 using namespace std;
00023 
00031 class ODEShoot
00032 {
00033 private:
00034     ODE* theODE;
00035     GReal_t deltaX;
00036     int subSteps;
00037     ODEIntegrator* odeIntegrator;
00038     string dataFormat;
00039 
00040 public:
00045     ODEShoot(const GrrProperties& props)
00046         throw(IllegalArgumentException&);
00047 
00054     ODEShoot(const GrrProperties& props, GReal_t dx, int subSteps)
00055         throw(IllegalArgumentException&);
00056 
00065     ODEShoot(ODE* ode, GReal_t dx, int dn, ODEIntegrator* oi)
00066             throw(IllegalArgumentException&);
00067 
00068 public:
00073     ODE& getODE() const {
00074         return *theODE;
00075     }
00076 
00081     GReal_t getDeltaX() const {
00082         return deltaX;
00083     }
00084 
00089     void solve(tvector<GReal_t>& sol) const;
00090 
00095     string getDataFormat() const {
00096         return dataFormat;
00097     }
00098 
00099 private:
00100     void solve(tvector<GReal_t>& sol,
00101                GReal_t x0, const FieldWrapper& f0,
00102                GReal_t x1, const FieldWrapper& f1) const;
00103 
00104     void solve(tvector<GReal_t>& sol, GReal_t x0, const FieldWrapper& fw0)
00105         const;
00106 
00107     void init(ODE* ode, GReal_t dx, int dn, ODEIntegrator* oi)
00108             throw(IllegalArgumentException&);
00109 };
00110 
00111 } } } // namespace gridripper::odesolver::shoot
00112 
00113 #endif /* gridripper_odesolver_shoot_ODEShoot_h */

Generated on Wed Jun 17 18:46:47 2009 for GridRipper by  doxygen 1.5.6