00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _SHOCKTUBEIBC_H_
00012 #define _SHOCKTUBEIBC_H_
00013
00014 #include <iostream>
00015
00016 #include "LevelData.H"
00017 #include "FArrayBox.H"
00018 #include "Vector.H"
00019 #include "RealVect.H"
00020 #include "AMRIO.H"
00021 #include "PhysIBC.H"
00022
00023 #include "SolidBCF_F.H"
00024
00025 #include "UsingNamespace.H"
00026
00028
00040 class ShockTubeIBC: public PhysIBC
00041 {
00042 public:
00044
00046 ShockTubeIBC();
00047
00049
00051 ShockTubeIBC(Real& a_smallPressure,
00052 const Real& a_gamma,
00053 const Real& a_rhoLeft,
00054 const Real& a_rhoRight,
00055 const Real& a_eLeft,
00056 const Real& a_eRight,
00057 const Real& a_center,
00058 const int a_direction,
00059 const Real& a_size,
00060 const RealVect& a_velocity,
00061 const Real& a_artvisc);
00062
00064
00066 virtual ~ShockTubeIBC();
00067
00069
00071 void setFortranCommon(Real& a_smallPressure,
00072 const Real& a_gamma,
00073 const Real& a_rhoLeft,
00074 const Real& a_rhoRight,
00075 const Real& a_eLeft,
00076 const Real& a_eRight,
00077 const Real& a_center,
00078 const int a_direction,
00079 const RealVect& a_velocity,
00080 const Real& a_artvisc);
00081
00083
00088 PhysIBC *new_physIBC();
00089
00091
00093 void initialize(LevelData<FArrayBox>& a_U);
00094
00096
00098 void primBC(FArrayBox& a_WGdnv,
00099 const FArrayBox& a_Wextrap,
00100 const FArrayBox& a_W,
00101 const int& a_dir,
00102 const Side::LoHiSide& a_side,
00103 const Real& a_time);
00104
00106
00111 void setBdrySlopes(FArrayBox& a_dW,
00112 const FArrayBox& a_W,
00113 const int& a_dir,
00114 const Real& a_time);
00115
00117
00119 void artViscBC(FArrayBox& a_F,
00120 const FArrayBox& a_U,
00121 const FArrayBox& a_divVel,
00122 const int& a_dir,
00123 const Real& a_time);
00124
00125
00126 protected:
00127
00128 bool m_isFortranCommonSet;
00129
00130 };
00131
00132 #endif