ODEShootInit.h
00001 #ifndef gridripper_amr1d_initcond_ODEShootInit_h
00002 #define gridripper_amr1d_initcond_ODEShootInit_h
00003
00004 #include "UserDef.h"
00005 #include <gridripper/util/GrrProperties.h>
00006 #include <gridripper/Parameters.h>
00007 #include <gridripper/odesolver/ODE.h>
00008 #include <gridripper/tvector.h>
00009
00010 namespace gridripper { namespace amr1d { namespace initcond {
00011
00012 using namespace gridripper;
00013 using namespace gridripper::util;
00014 using namespace gridripper::amr1d;
00015 using namespace gridripper::odesolver;
00016
00024 class ODEShootInit: public UserDef
00025 {
00026 private:
00027 GrrProperties properties;
00028
00029 tvector<GReal_t> data;
00030
00031 GReal_t minX;
00032
00033 GReal_t maxX;
00034
00035 int maxi;
00036
00037 ODE* ode;
00038
00039 string message;
00040
00041 public:
00048 ODEShootInit(string& args, const Parameters* p, const PDE& pde)
00049 throw(IllegalArgumentException&);
00050
00051 public:
00056 string getMessage() {
00057 return message;
00058 }
00059
00060 protected:
00067 void init(PDE* pde, GReal_t x, FieldWrapper& phi)
00068 throw(InitCond::Exception&);
00069
00070 void endInit();
00071
00072 private:
00073 void init(const PDE* pde) throw(InitCond::Exception&);
00074 };
00075
00076 } } }
00077
00078 #endif