00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _DIRICHLETVISCOUSTENSORDOMAINBC_H_
00012 #define _DIRICHLETVISCOUSTENSORDOMAINBC_H_
00013
00014 #include "RefCountedPtr.H"
00015 #include "BaseDomainBC.H"
00016 #include "BaseBCFuncEval.H"
00017 #include "NamespaceHeader.H"
00018
00020
00022 class DirichletViscousTensorDomainBC: public ViscousBaseDomainBC
00023 {
00024 public:
00026
00028 DirichletViscousTensorDomainBC();
00029
00031
00033 virtual ~DirichletViscousTensorDomainBC();
00034
00035
00037
00039 virtual void getFaceFlux(BaseFab<Real>& a_faceFlux,
00040 const BaseFab<Real>& a_phi,
00041 const RealVect& a_probLo,
00042 const RealVect& a_dx,
00043 const int& a_idir,
00044 const Side::LoHiSide& a_side,
00045 const DataIndex& a_dit,
00046 const Real& a_time,
00047 const bool& a_useHomogeneous);
00048
00050
00053 virtual void getFaceFlux(Real& a_faceFlux,
00054 const VolIndex& a_vof,
00055 const int& a_comp,
00056 const EBCellFAB& a_phi,
00057 const RealVect& a_probLo,
00058 const RealVect& a_dx,
00059 const int& a_idir,
00060 const Side::LoHiSide& a_side,
00061 const DataIndex& a_dit,
00062 const Real& a_time,
00063 const bool& a_useHomogeneous);
00064
00065
00066
00067
00068 private:
00069 void getDivergenceAndGradient(Real& a_divergence,
00070 Real* a_gradient,
00071 const int& a_idir,
00072 const FaceIndex& a_bndryFace,
00073 const VolIndex& a_vof,
00074 const EBCellFAB& a_phi,
00075 const RealVect& a_probLo,
00076 const RealVect& a_dx,
00077 const Side::LoHiSide& a_side,
00078 const DataIndex& a_dit,
00079 const Real& a_time,
00080 const bool& a_useHomogeneous);
00081
00082 };
00083
00084 class DirichletViscousTensorDomainBCFactory: public BaseDomainBCFactory
00085 {
00086 public:
00088
00090 DirichletViscousTensorDomainBCFactory();
00091
00093
00095 virtual ~DirichletViscousTensorDomainBCFactory();
00096
00098
00100 virtual DirichletViscousTensorDomainBC* create(const ProblemDomain& a_domain,
00101 const EBISLayout& a_layout,
00102 const RealVect& a_dx);
00103
00105
00107 virtual void setValue(Real a_value);
00108
00110
00112 virtual void setFunction(RefCountedPtr<BaseBCFuncEval> a_func);
00113
00114 private:
00115 bool m_onlyHomogeneous;
00116 bool m_isFunctional;
00117
00118 Real m_value;
00119 RefCountedPtr<BaseBCFuncEval> m_func;
00120 };
00121 #include "NamespaceFooter.H"
00122 #endif