Hunch.h

00001 #ifndef gridripper_phys_gr_fixmp_kerrhiggshyp_Hunch_h
00002 #define gridripper_phys_gr_fixmp_kerrhiggshyp_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 kerrhiggshyp {
00013 
00014 
00015 using namespace gridripper;
00016 using namespace gridripper::util;
00017 using namespace gridripper::amr1d;
00018 using namespace std;
00019 
00020 
00030 class Hunch: public FuncInitCond
00031 {
00032 private:
00034     int maxOrder;
00036     int arraySize;
00037 
00039     bool selfInteraction;
00044     GReal_t phi0;
00045     // The field is f=(phi-phi0)*r if selfinteraction is on, 
00046     // otherwise f=phi*r.
00047 
00049     GReal_t amplitudeF, centerF, widthF, rampF;
00051     int lF, mF;
00053     GReal_t amplitudeFt, centerFt, widthFt, rampFt;
00055     int lFt, mFt;
00057     GReal_t omega;
00058 
00060     GReal_t M;
00061     GReal_t A;
00062     //GReal_t e;
00063     bool isMinkowski;
00064 
00066     GReal_t minR;
00067     GReal_t maxR;
00068 
00070     GReal_t T0;
00071 
00073     string message;
00074 
00075 public:
00076     Hunch(string& args, const Parameters* p, const PDE& pde)
00077           throw(InitCond::Exception&, IllegalArgumentException&);
00078     ~Hunch();
00079     GReal_t getTime() const;
00080 
00081     void init(PDE* pde, GReal_t R, FieldWrapper& v)
00082         throw(InitCond::Exception&);
00083 
00084     string getMessage() const;
00085 };
00086 
00087 
00088 } } } } } // namespace gridripper::phys::gr::fixmp::kerrhiggshyp
00089 
00090 
00091 #endif /* gridripper_phys_gr_fixmp_kerrhiggshyp_Hunch_h */