Disk.h

00001 #ifndef gridripper_phys_gr_fixmp_kerrhiggs_Disk_h
00002 #define gridripper_phys_gr_fixmp_kerrhiggs_Disk_h
00003 
00004 
00005 #include <gridripper/Parameters.h>
00006 #include <gridripper/amr1d/PDE.h>
00007 #include <gridripper/amr1d/FuncInitCond.h>
00008 #include <gridripper/math.h>
00009 #include <sstream>
00010 
00011 
00012 namespace gridripper { namespace phys { namespace gr { namespace fixmp {
00013 namespace kerrhiggs {
00014 
00015 
00016 using namespace gridripper;
00017 using namespace gridripper::util;
00018 using namespace gridripper::amr1d;
00019 using namespace std;
00020 
00021 
00030 class Disk: public FuncInitCond
00031 {
00032 private:
00034     int maxOrder;
00036     int maxOrderInit;
00038     int arraySize;
00039 
00041     bool selfInteraction;
00046     GReal_t phi0;
00047     // The field is f=(phi-phi0)*r if selfinteraction is on, 
00048     // otherwise f=phi*r.
00049 
00052     GReal_t amplitudeF, amplitudeFt;
00054     GReal_t centerxF, centerxFt;
00056     GReal_t widthxF, widthxFt;
00058     GReal_t rampxF, rampxFt;
00060     GReal_t centerzF, centerzFt;
00062     GReal_t widthzF, widthzFt;
00064     GReal_t rampzF, rampzFt;
00066     GReal_t energy, angmom;
00068     int fieldDiscret;
00070     GReal_t normLimit;
00072     GReal_t tailErrorTolerance;
00073 
00075     GReal_t M;
00076     GReal_t a;
00077     GReal_t e;
00078     bool isMinkowski;
00079 
00081     GReal_t minrh;
00082     GReal_t maxrh;
00083 
00085     GReal_t t0;
00086 
00088     enum norm_t { None, L2, C0, Bound };
00089     enum norm_t Norm;
00090 #ifndef HAVE_AGM
00091     tvector<GReal_t> theta;
00092     tvector<GReal_t> phi;
00093     tvector< tvector<GComplex_t> > field;
00094     tvector< tvector<GComplex_t> > fieldt;
00095     tvector< tvector<GReal_t> > fieldBuff;
00096     tvector< tvector<GReal_t> > fieldtBuff;
00097     tvector< tvector<GReal_t> > fieldBuffDiff;
00098     tvector< tvector<GReal_t> > fieldtBuffDiff;
00099     tvector<GReal_t> intdphiF;
00100     tvector<GReal_t> intdphiFt;
00101     tvector<GReal_t> intdphiDiffF;
00102     tvector<GReal_t> intdphiDiffFt;
00103 #endif
00104 
00106     GReal_t t, r;
00107 
00109     unsigned int tstart, tnow;
00110 
00112     ostringstream message;
00113 
00114 public:
00115     Disk(string& args, const Parameters* p, const PDE& pde)
00116          throw(InitCond::Exception&, IllegalArgumentException&);
00117     ~Disk();
00118     GReal_t getTime() const;
00119 
00120     void init(PDE* pde, GReal_t rh, FieldWrapper& v)
00121         throw(InitCond::Exception&);
00122 
00124     GComplex_t funcF(const GReal_t theta, const GReal_t phi) const;
00125     GComplex_t funcFt(const GReal_t theta, const GReal_t phi) const;
00126 
00127     string getMessage() const;
00128 
00129 };
00130 
00131 
00132 } } } } } // namespace gridripper::phys::gr::fixmp::kerrhiggs
00133 
00134 
00135 #endif /* gridripper_phys_gr_fixmp_kerrhiggs_Disk_h */

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