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 ADVECT_IBC_H_
00029 #define ADVECT_IBC_H_
00030
00031 #include <iostream>
00032
00033 #include "LevelData.H"
00034 #include "FArrayBox.H"
00035 #include "Vector.H"
00036 #include "RealVect.H"
00037 #include "AMRIO.H"
00038
00039 #include "PhysIBC.H"
00040
00042
00046 class AdvectIBC:public PhysIBC
00047 {
00048 public:
00050
00052 AdvectIBC();
00053
00055
00057 AdvectIBC(const Real& a_gamma,
00058 const Real& a_ambientDensity,
00059 const Real& a_deltaDensity,
00060 const int& a_pressure,
00061 const RealVect& a_center,
00062 const Real& a_size,
00063 const RealVect& a_velocity);
00064
00066
00068 ~AdvectIBC() {};
00069
00070
00072
00077 PhysIBC *new_physIBC();
00078
00080 void setDefaultValues();
00081
00083
00085 void fluxBC(FArrayBox& a_F,
00086 const FArrayBox& a_W,
00087 const FArrayBox& a_Wextrap,
00088 const int& a_dir,
00089 const Side::LoHiSide& a_side,
00090 const Real& a_time);
00091
00093
00098 void setBdrySlopes(FArrayBox& a_dW,
00099 const FArrayBox& a_W,
00100 const int& a_dir,
00101 const Real& a_time);
00102
00104
00106 void initialize(LevelData<FArrayBox>& a_U);
00107
00109 void advectionVel(const RealVect& a_advVel);
00110
00112 const RealVect& advectionVel() const;
00113
00115 void probType(const int a_probtype);
00116
00118 void setBoundaryValue(Real a_bcVal, int a_dir,
00119 Side::LoHiSide a_hiLo);
00120
00122 Real getBoundaryValue(int a_dir, Side::LoHiSide a_hiLo) const;
00123
00125 void setSlopeValue(Real a_slopeVal, int a_dir,
00126 Side::LoHiSide a_hiLo);
00127
00129 Real getSlopeValue(int a_dir, Side::LoHiSide a_hiLo) const;
00130
00132 int probType() const;
00133
00134 protected:
00135
00137 RealVect m_velocity;
00138
00139 Real m_bcVal[SpaceDim][2];
00140 Real m_slopeVal[SpaceDim][2];
00141
00142 bool m_isBCvalSet;
00143 bool m_isSlopeValSet;
00144
00146 int m_probtype;
00147
00148 };
00149
00150 #endif
00151