00001 #ifndef gridripper_phys_gr_fixmp_kerrhiggs_Hunch_h
00002 #define gridripper_phys_gr_fixmp_kerrhiggs_Hunch_h
00003
00004
00005 #include <gridripper/Parameters.h>
00006 #include <gridripper/amr1d/FuncInitCond.h>
00007 #include <gridripper/amr1d/PDE.h>
00008 #include <gridripper/amr1d/FuncInitCond.h>
00009
00010
00011 namespace gridripper { namespace phys { namespace gr { namespace fixmp {
00012 namespace kerrhiggs {
00013
00014
00015 using namespace gridripper;
00016 using namespace gridripper::util;
00017 using namespace gridripper::amr1d;
00018 using namespace std;
00019
00020
00029 class Hunch: public FuncInitCond
00030 {
00031 private:
00033 int maxOrder;
00035 int arraySize;
00036
00038 bool selfInteraction;
00043 GReal_t Phi0;
00044
00045
00046
00049 bool gaussianHunch;
00051 GReal_t amplitudeF, centerF, widthF, rampF;
00053 int lF, mF;
00055 GReal_t amplitudeFt, centerFt, widthFt, rampFt;
00057 int lFt, mFt;
00059 GReal_t omega;
00060
00062 GReal_t M;
00063 GReal_t a;
00064 GReal_t e;
00065 bool isMinkowski;
00066
00068 GReal_t minrh;
00069 GReal_t maxrh;
00070
00072 GReal_t t0;
00073
00075 string message;
00076
00077 public:
00078 Hunch(string& args, const Parameters* p, const PDE& pde)
00079 throw(InitCond::Exception&, IllegalArgumentException&);
00080 ~Hunch();
00081 GReal_t getTime() const;
00082
00083 void init(PDE* pde, GReal_t rh, FieldWrapper& v)
00084 throw(InitCond::Exception&);
00085
00086 string getMessage() const;
00087 };
00088
00089
00090 } } } } }
00091
00092
00093 #endif