00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _NEUMANNVISCOUSTENSORDOMAINBC_H_
00012 #define _NEUMANNVISCOUSTENSORDOMAINBC_H_
00013
00014 #include "RefCountedPtr.H"
00015
00016 #include "BaseDomainBC.H"
00017 #include "BaseBCValue.H"
00018 #include "NamespaceHeader.H"
00019
00020 class NeumannViscousTensorDomainBC: public ViscousBaseDomainBC
00021 {
00022 public:
00023 NeumannViscousTensorDomainBC();
00024
00025 virtual ~NeumannViscousTensorDomainBC();
00026
00027 virtual void getFaceFlux(BaseFab<Real>& a_faceFlux,
00028 const BaseFab<Real>& a_phi,
00029 const RealVect& a_probLo,
00030 const RealVect& a_dx,
00031 const int& a_idir,
00032 const Side::LoHiSide& a_side,
00033 const DataIndex& a_dit,
00034 const Real& a_time,
00035 const bool& a_useHomogeneous);
00036
00038
00041 virtual void getFaceFlux(Real& a_faceFlux,
00042 const VolIndex& a_vof,
00043 const int& a_comp,
00044 const EBCellFAB& a_phi,
00045 const RealVect& a_probLo,
00046 const RealVect& a_dx,
00047 const int& a_idir,
00048 const Side::LoHiSide& a_side,
00049 const DataIndex& a_dit,
00050 const Real& a_time,
00051 const bool& a_useHomogeneous);
00052
00053
00054 private:
00055 void getDivergenceAndGradient(Real& a_divergence,
00056 Real* a_gradient,
00057 const int& a_idir,
00058 const FaceIndex& a_bndryFace,
00059 const VolIndex& a_vof,
00060 const EBCellFAB& a_phi,
00061 const RealVect& a_probLo,
00062 const RealVect& a_dx,
00063 const Side::LoHiSide& a_side,
00064 const DataIndex& a_dit,
00065 const Real& a_time,
00066 const bool& a_useHomogeneous);
00067 };
00068
00069 class NeumannViscousTensorDomainBCFactory: public BaseDomainBCFactory
00070 {
00071 public:
00072 NeumannViscousTensorDomainBCFactory();
00073
00074 virtual ~NeumannViscousTensorDomainBCFactory();
00075
00076 virtual void setValue(Real a_value);
00077
00078 virtual void setFunction(RefCountedPtr<BaseBCFuncEval> a_flux);
00079
00080 virtual NeumannViscousTensorDomainBC* create(const ProblemDomain& a_domain,
00081 const EBISLayout& a_layout,
00082 const RealVect& a_dx);
00083 private:
00084 bool m_onlyHomogeneous;
00085 bool m_isFunction;
00086
00087 Real m_value;
00088 RefCountedPtr<BaseBCFuncEval> m_flux;
00089 };
00090
00091 #include "NamespaceFooter.H"
00092 #endif