00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _GAUSSIANSMOOTHBC_H_
00012 #define _GAUSSIANSMOOTHBC_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
00042 class GaussianSmoothBC: public PhysIBC
00043 {
00044 public:
00046
00048 GaussianSmoothBC();
00049
00051
00053 GaussianSmoothBC(Real& a_smallPressure,
00054 const Real& a_gamma,
00055 const Real& a_ambientDensity,
00056 const Real& a_deltaDensity,
00057 const int& a_pressure,
00058 const RealVect& a_center,
00059 const RealVect& a_width,
00060 const Real& a_size,
00061 const RealVect& a_velocity,
00062 const Real& a_artvisc);
00063
00065
00067 virtual ~GaussianSmoothBC();
00068
00070
00072 void setFortranCommon(Real& a_smallPressure,
00073 const Real& a_gamma,
00074 const Real& a_ambientDensity,
00075 const Real& a_deltaDensity,
00076 const int& a_pressure,
00077 const RealVect& a_center,
00078 const RealVect& a_width,
00079 const Real& a_size,
00080 const RealVect& a_velocity,
00081 const Real& a_artvisc);
00082
00084
00089 PhysIBC *new_physIBC();
00090
00092
00094 void initialize(LevelData<FArrayBox>& a_U);
00095
00097
00099 void primBC(FArrayBox& a_WGdnv,
00100 const FArrayBox& a_Wextrap,
00101 const FArrayBox& a_W,
00102 const int& a_dir,
00103 const Side::LoHiSide& a_side,
00104 const Real& a_time);
00105
00107
00112 void setBdrySlopes(FArrayBox& a_dW,
00113 const FArrayBox& a_W,
00114 const int& a_dir,
00115 const Real& a_time);
00116
00118
00120 void artViscBC(FArrayBox& a_F,
00121 const FArrayBox& a_U,
00122 const FArrayBox& a_divVel,
00123 const int& a_dir,
00124 const Real& a_time);
00125
00126
00127 protected:
00128
00129 bool m_isFortranCommonSet;
00130 };
00131
00132 #endif