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
00029
00030
00031
00032 #ifndef _channelBC_H_
00033 #define _channelBC_H_
00034
00035 #include "PhysBCUtil.H"
00036 #include "scalarDirichletBC.H"
00037 #include "basicVelBC.H"
00038 #include "ExtrapBC.H"
00039 #include "PoissonBC.H"
00040
00041
00043 class channelBC : public PhysBCUtil
00044 {
00045
00046 public:
00048 channelBC();
00049
00051 virtual ~channelBC();
00052
00054 virtual PhysBCUtil* newPhysBCUtil() const;
00055
00057
00058
00060 void setMaxInflowVel(Real a_maxInflowVel);
00061
00063 Real maxInflowVel() const;
00064
00066 virtual void setBCs();
00067
00068
00070 virtual void computeBoundaryDt(Real& a_dt, Real a_cfl, Real a_dx) const;
00071
00072
00074 virtual DomainGhostBC* gradMacPressureBC() const;
00075
00077 virtual DomainGhostBC* gradELambdaBC() const;
00078
00080 virtual DomainGhostBC* diffusiveBC(int a_scalarType) const;
00081
00082
00083 protected:
00084
00086 virtual DomainGhostBC* basicScalBC(bool a_isHomogeneous,
00087 int a_scalType) const;
00088
00089
00091 virtual void basicCCVelBC(DomainGhostBC& a_newBC,
00092 bool a_isHomogeneous,
00093 bool a_isViscous,
00094 int a_velComponent,
00095 Interval& a_interval) const;
00096
00098 virtual basicEdgeVelBC* basicECVelBC(bool a_isHomogeneous,
00099 bool a_isViscous,
00100 bool a_isSingleComponent) const;
00101
00103 Real m_maxInflowVel;
00104
00105 private:
00106
00108 channelBC(const channelBC& rhs) {;}
00109
00110 };
00111
00112
00114 class scalarInflowChannelBC : public scalarInflowBC
00115 {
00116
00117 public:
00118 friend class DomainGhostBC;
00119
00121 scalarInflowChannelBC();
00122
00124 scalarInflowChannelBC(int dir, Side::LoHiSide sd);
00125
00127 scalarInflowChannelBC(int dir, Side::LoHiSide sd,
00128 const Interval& a_comps);
00129
00131 virtual ~scalarInflowChannelBC();
00132
00133 private:
00134 virtual void fillBCValues(FArrayBox& a_neumfac,
00135 FArrayBox& a_dirfac,
00136 FArrayBox& a_inhmval,
00137 Real a_dx,
00138 const Box& a_domain) const;
00139
00140 virtual BoxGhostBC* new_boxghostbc() const;
00141
00142
00143 };
00144
00145
00147 class NormalInflowVelBC : public InflowVelBC
00148 {
00149
00150 public:
00151 friend class DomainGhostBC;
00152
00154 NormalInflowVelBC();
00155
00157 virtual ~NormalInflowVelBC();
00158
00160 NormalInflowVelBC(int dir, Side::LoHiSide sd);
00161
00163 NormalInflowVelBC(int dir, Side::LoHiSide sd,
00164 const Interval& a_comps);
00165
00166
00167 protected:
00168
00170 virtual void fillBCValues(FArrayBox& a_neumfac,
00171 FArrayBox& a_dirfac,
00172 FArrayBox& a_inhmval,
00173 Real a_dx,
00174 const Box& a_domain) const;
00175
00177 virtual BoxGhostBC* new_boxghostbc() const;
00178
00179 private:
00180
00181 NormalInflowVelBC(const NormalInflowVelBC& bcin) {;}
00182 void operator =(const NormalInflowVelBC& bcin) {;}
00183
00184 };
00185
00186
00187
00188
00189 #endif
00190
00191