00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _PHYSIBC_H_
00020 #define _PHYSIBC_H_
00021
00022 #include "FArrayBox.H"
00023 #include "REAL.H"
00024 #include "LevelData.H"
00025 #include "ProblemDomain.H"
00026 #include "NamespaceHeader.H"
00027
00029
00033 class PhysIBC
00034 {
00035 public:
00037
00039 PhysIBC();
00040
00042
00044 virtual ~PhysIBC();
00045
00047
00051 virtual void define(const ProblemDomain& a_domain,
00052 const Real& a_dx);
00053
00055
00059 virtual PhysIBC* new_physIBC() = 0;
00060
00062
00064 virtual void initialize(LevelData<FArrayBox>& a_U) = 0;
00065
00067
00069 virtual void primBC(FArrayBox& a_WGdnv,
00070 const FArrayBox& a_Wextrap,
00071 const FArrayBox& a_W,
00072 const int& a_dir,
00073 const Side::LoHiSide& a_side,
00074 const Real& a_time) = 0;
00075
00077
00082 virtual
00083 void setBdrySlopes(FArrayBox& a_dW,
00084 const FArrayBox& a_W,
00085 const int& a_dir,
00086 const Real& a_time) = 0;
00087
00089
00091 virtual
00092 void artViscBC(FArrayBox& a_F,
00093 const FArrayBox& a_U,
00094 const FArrayBox& a_divVel,
00095 const int& a_dir,
00096 const Real& a_time) = 0;
00097
00098
00099 protected:
00100
00102 virtual
00103 void getBoundaryFaces(
00104 Box& a_boundaryBox,
00106 const Box& a_dataFaceBox,
00108 const int& a_dir,
00110 const Side::LoHiSide& a_side);
00111
00112
00113 bool m_isDefined;
00114
00115
00116 ProblemDomain m_domain;
00117
00118
00119 Real m_dx;
00120
00121
00122 private:
00123
00124 void operator=(const PhysIBC& a_input)
00125 {
00126 MayDay::Error("invalid operator");
00127 }
00128
00129
00130 PhysIBC(const PhysIBC& a_input)
00131 {
00132 MayDay::Error("invalid operator");
00133 }
00134 };
00135
00136 #include "NamespaceFooter.H"
00137 #endif