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 _PATCH_IDEAL_MHD_H_
00029 #define _PATCH_IDEAL_MHD_H_
00030
00031 #include "PatchGodunov.H"
00032 #include "PatchGodunovF_F.H"
00033
00035
00037 class PatchIdealMHD : public PatchGodunov
00038 {
00039 public:
00041
00043 PatchIdealMHD();
00044
00046
00050 virtual PatchGodunov* new_patchGodunov() const;
00051
00053
00055 virtual Real getMaxWaveSpeed(const FArrayBox& a_U,
00056 const Box& a_box);
00057
00059
00062 virtual int numConserved();
00063
00065
00068 virtual Vector<string> stateNames();
00069
00071
00074 virtual Vector<string> plotNames();
00075
00077
00082 virtual int numFluxes();
00083
00085
00087 virtual void plottingVars(FArrayBox& a_W,
00088 const FArrayBox& a_U,
00089 const Box& a_box);
00090
00091 virtual void correctState(FArrayBox& a_U,
00092 FArrayBox& a_phi,
00093 FArrayBox& a_rhs,
00094 FArrayBox a_flux[CH_SPACEDIM],
00095 const Real& a_dt,
00096 const Box& a_Box);
00097
00098
00099
00100 protected:
00102
00107 virtual int numPrimitives();
00108
00110
00116 virtual int numSlopes();
00117
00119
00121 virtual void consToPrim(FArrayBox& a_W,
00122 const FArrayBox& a_U,
00123 const Box& a_box);
00124
00126
00128 virtual void primToCons(FArrayBox& a_U,
00129 const FArrayBox& a_W,
00130 const Box& a_box);
00131
00133
00138 virtual void normalPred(FArrayBox& a_WMinus,
00139 FArrayBox& a_WPlus,
00140 const FArrayBox& a_W,
00141 const FArrayBox& a_dW,
00142 const Real& a_scale,
00143 const int& a_dir,
00144 const Box& a_box);
00145
00147
00151 virtual void riemann(FArrayBox& a_F,
00152 const FArrayBox& a_WLeft,
00153 const FArrayBox& a_WRight,
00154 const int& a_dir,
00155 const Box& a_box);
00156
00158
00163 virtual void updatePrim(FArrayBox& a_WMinus,
00164 FArrayBox& a_WPlus,
00165 const FArrayBox& a_F,
00166 const Real& a_scale,
00167 const int& a_dir,
00168 const Box& a_box);
00169
00171
00177 virtual void updateCons(FArrayBox& a_U,
00178 const FArrayBox& a_F,
00179 const Real& a_scale,
00180 const int& a_dir,
00181 const Box& a_box);
00182
00183 virtual void updateConsFinal(FArrayBox& a_U,
00184 const FArrayBox& a_F,
00185 const Real& a_scale,
00186 const int& a_dir,
00187 const Box& a_box);
00188
00189
00190 virtual void postUpdateCons(FArrayBox& a_U,
00191 FArrayBox& a_rhs,
00192 const FArrayBox& a_Uold,
00193 const FArrayBox a_F[CH_SPACEDIM],
00194 const Real& a_dt,
00195 const Real& a_dx,
00196 const Box& a_box);
00197
00199
00204 virtual Interval velocityInterval();
00205
00207
00211 virtual int pressureIndex();
00212
00214
00219 virtual int bulkModulusIndex();
00220 };
00221
00222 #endif