00001
00002 #ifndef _CODE_TESTS_IBC_H_
00003 #define _CODE_TESTS_IBC_H_
00004
00005 #include <iostream>
00006
00007 #include "LevelData.H"
00008 #include "FArrayBox.H"
00009 #include "Vector.H"
00010 #include "RealVect.H"
00011 #include "AMRIO.H"
00012
00013 #include "CodeUnits.H"
00014 #include "PhysIBC.H"
00015
00016
00018
00041 class CodeTestsIBC : public PhysIBC
00042 {
00043 public:
00045
00047 CodeTestsIBC();
00048
00050
00061 CodeTestsIBC(const Real& a_gamma,
00062 const Real& a_artvisc,
00063 const Real& a_rsTolerance,
00064 const Real& a_maxRsIter,
00065 const Real& a_maxMach,
00066 const CodeUnits& a_codeUnits);
00067
00069
00071 ~CodeTestsIBC() {};
00072
00074
00087 void setFortranCommon(const Real& a_gamma,
00088 const Real& a_artvisc,
00089 const Real& a_rsTolerance,
00090 const Real& a_maxRsIter,
00091 const Real& a_maxMach);
00092
00093 void setDustCollapse(const Real& a_radius,
00094 const Real& a_density,
00095 const RealVect& a_shift = RealVect::Zero);
00096
00098
00103 void setFortranCommonSet();
00104
00106 void setCodeUnits(const CodeUnits& a_codeUnits);
00107
00109
00114 PhysIBC *new_physIBC();
00115
00117 void primBC(FArrayBox& a_WGdnv,
00118 const FArrayBox& a_Wextrap,
00119 const FArrayBox& a_W,
00120 const int& a_dir,
00121 const Side::LoHiSide& a_side,
00122 const Real& a_time);
00123
00125 void setBdrySlopes(FArrayBox& a_dW,
00126 const FArrayBox& a_W,
00127 const int& a_dir,
00128 const Real& a_time);
00129
00131 void artViscBC(FArrayBox& a_F,
00132 const FArrayBox& a_U,
00133 const FArrayBox& a_divVel,
00134 const int& a_dir,
00135 const Real& a_time);
00136
00138 void initialize(LevelData<FArrayBox>& a_U);
00139
00140 protected:
00141
00142 void dustCollapse(LevelData<FArrayBox>& a_U);
00143
00144 protected:
00145
00146
00147 Real m_density, m_radius;
00148
00149
00150 RealVect m_shift;
00151
00152
00153 CodeUnits m_codeUnits;
00154
00155
00156 int m_problem;
00157
00158
00159 bool m_isFortranCommonSet;
00160 };
00161
00162 #endif