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 VEL_IBC_H_
00029 #define VEL_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
00048 class VelIBC:public PhysIBC
00049 {
00050 public:
00052
00054 VelIBC();
00055
00057
00059 VelIBC(const Real& a_gamma,
00060 const Real& a_ambientDensity,
00061 const Real& a_deltaDensity,
00062 const int& a_pressure,
00063 const RealVect& a_center,
00064 const Real& a_size,
00065 const RealVect& a_velocity);
00066
00068
00070 ~VelIBC() {};
00071
00072
00074
00079 PhysIBC *new_physIBC();
00080
00082 void setDefaultValues();
00083
00085
00087 void fluxBC(FArrayBox& a_F,
00088 const FArrayBox& a_W,
00089 const FArrayBox& a_Wextrap,
00090 const int& a_dir,
00091 const Side::LoHiSide& a_side,
00092 const Real& a_time);
00093
00095
00100 void setBdrySlopes(FArrayBox& a_dW,
00101 const FArrayBox& a_W,
00102 const int& a_dir,
00103 const Real& a_time);
00104
00106
00108 void initialize(LevelData<FArrayBox>& a_U);
00109
00111 void advectionVel(const RealVect& a_advVel);
00112
00114 const RealVect& advectionVel() const;
00115
00117 void probType(const int a_probtype);
00118
00120 void setNormalWallVel(Real a_bcVal, int a_dir,
00121 Side::LoHiSide a_hiLo);
00122
00124 Real getNormalWallVel(int a_dir, Side::LoHiSide a_hiLo) const;
00125
00127 void setSlopeValue(Real a_slopeVal, int a_dir,
00128 Side::LoHiSide a_hiLo);
00129
00131 Real getSlopeValue(int a_dir, Side::LoHiSide a_hiLo) const;
00132
00134 int probType() const;
00135
00136 protected:
00137
00139 RealVect m_velocity;
00140
00141 Real m_bcVal[SpaceDim][2];
00142 Real m_slopeVal[SpaceDim][2];
00143
00144 bool m_isBCvalSet;
00145 bool m_isSlopeValSet;
00146
00148 int m_probtype;
00149
00150 };
00151
00152 #endif
00153