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