00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _SELFGRAVITY_PHYSICS_H_
00029 #define _SELFGRAVITY_PHYSICS_H_
00030
00031 #include <string>
00032 using std::string;
00033
00034 #include "GodunovPhysics.H"
00035 #include "FluxBox.H"
00036 #include "LGintegrator.H"
00037
00039 class SelfGravityPhysics : public GodunovPhysics
00040 {
00041 public:
00043 SelfGravityPhysics();
00044
00046 virtual ~SelfGravityPhysics();
00047
00049 virtual Real getMaxWaveSpeed(const FArrayBox& a_U,
00050 const Box& a_box);
00051
00053 virtual Real getMaxWaveSpeedWithSource(const FArrayBox& a_U,
00054 const FArrayBox& a_S,
00055 const Real& a_dx,
00056 const Box& a_box);
00057
00059 virtual GodunovPhysics* new_godunovPhysics() const;
00060
00062 virtual Vector<string> stateNames();
00063
00065 virtual Vector<string> plotNames();
00066
00068 virtual int numConserved();
00069
00071
00075 virtual int numFluxes();
00076
00077 virtual bool isDefined();
00078
00080 virtual int numPrimitives();
00081
00083 virtual int numSlopes();
00084
00086 virtual void consToPrim(FArrayBox& a_W,
00087 const FArrayBox& a_U,
00088 const Box& a_box);
00089
00091 virtual void getFlux(FArrayBox& a_flux,
00092 const FArrayBox& a_whalf,
00093 const int& a_dir,
00094 const Box& a_box);
00095
00097
00105 virtual void charAnalysis(FArrayBox& a_dW,
00106 const FArrayBox& a_W,
00107 const int& a_dir,
00108 const Box& a_box);
00109
00111 virtual void charSynthesis(FArrayBox& a_dW,
00112 const FArrayBox& a_W,
00113 const int& a_dir,
00114 const Box& a_box);
00115
00117 virtual void charValues(FArrayBox& a_lambda,
00118 const FArrayBox& a_W,
00119 const int& a_dir,
00120 const Box& a_box);
00121
00123 virtual void incrementSource(FArrayBox& a_localS,
00124 const FArrayBox& a_S,
00125 const FArrayBox& a_W,
00126 const Real& a_time,
00127 const Real& a_dt,
00128 const Box& a_box);
00130 virtual void incrementSource(FArrayBox& a_S,
00131 const FArrayBox& a_W,
00132 const Box& a_box){;};
00133
00135 virtual void riemann(FArrayBox& a_WStar,
00136 const FArrayBox& a_WLeft,
00137 const FArrayBox& a_WRight,
00138 const FArrayBox& a_W,
00139 const Real& a_time,
00140 const int& a_dir,
00141 const Box& a_box);
00142
00144 virtual void postNormalPred(FArrayBox& a_dWMinus,
00145 FArrayBox& a_dWPlus,
00146 const FArrayBox& a_W,
00147 const Real& a_dt,
00148 const Real& a_dx,
00149 const int& a_dir,
00150 const Box& a_box);
00151
00153 virtual void quasilinearUpdate(FArrayBox& a_AdWdx,
00154 const FArrayBox& a_wHalf,
00155 const FArrayBox& a_W,
00156 const Real& a_scale,
00157 const int& a_dir,
00158 const Box& a_box);
00159
00161 virtual void synchronize(FArrayBox& a_U,
00162 const FArrayBox& a_UOld,
00163 const Box& a_box);
00164
00166 virtual void setupSourceTerm(FArrayBox& a_S,
00167 const FArrayBox& a_force,
00168 const FArrayBox& a_U,
00169 const Real& a_time,
00170 const Real& a_dt,
00171 const Box& a_box);
00172
00174 virtual Real applySource(FArrayBox& a_U,
00175 const FArrayBox& a_force,
00176 const Real& a_time,
00177 const Real& a_dt,
00178 const Box& a_box);
00179
00181 virtual void forceCorrection(FArrayBox& a_U,
00182 const FArrayBox& a_force,
00183 const Real& a_time,
00184 const Real& a_dt,
00185 const Box& a_box);
00186
00188 virtual void setPressureToEntropy(FArrayBox& a_U,
00189 const Box& a_box);
00190
00192 virtual Interval velocityInterval();
00193
00195 virtual int pressureIndex();
00196
00198 virtual int densityIndex();
00199
00201 virtual int bulkModulusIndex();
00202
00204 virtual int entropyIndex();
00205
00207 virtual Real smallPressure();
00208
00210 virtual void setSmallPressure(const Real& a_smallPressure);
00211
00212 protected:
00214 Real m_smallPressure;
00215
00216 private:
00218 void operator=(const SelfGravityPhysics& a_input)
00219 {
00220 MayDay::Error("invalid operator");
00221 }
00222
00224 SelfGravityPhysics(const SelfGravityPhysics& a_input)
00225 {
00226 MayDay::Error("invalid operator");
00227 }
00228 };
00229
00230
00231 #endif