Chombo + EB  3.0
NeumannViscousTensorDomainBC.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3  * _______ __
4  * / ___/ / ___ __ _ / / ___
5  * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6  * \___/_//_/\___/_/_/_/_.__/\___/
7  * Please refer to Copyright.txt, in Chombo's root directory.
8  */
9 #endif
10 
11 #ifndef _NEUMANNVISCOUSTENSORDOMAINBC_H_
12 #define _NEUMANNVISCOUSTENSORDOMAINBC_H_
13 
14 #include "RefCountedPtr.H"
15 
16 #include "BaseDomainBC.H"
17 #include "BaseBCValue.H"
18 #include "NamespaceHeader.H"
19 
21 {
22 public:
24 
26 
27  virtual void getFaceFlux(BaseFab<Real>& a_faceFlux,
28  const BaseFab<Real>& a_phi,
29  const RealVect& a_probLo,
30  const RealVect& a_dx,
31  const int& a_idir,
32  const Side::LoHiSide& a_side,
33  const DataIndex& a_dit,
34  const Real& a_time,
35  const bool& a_useHomogeneous);
36 
37  ///
38  /**
39  Elliptic solver flux.
40  */
41  virtual void getFaceFlux(Real& a_faceFlux,
42  const VolIndex& a_vof,
43  const int& a_comp,
44  const EBCellFAB& a_phi,
45  const RealVect& a_probLo,
46  const RealVect& a_dx,
47  const int& a_idir,
48  const Side::LoHiSide& a_side,
49  const DataIndex& a_dit,
50  const Real& a_time,
51  const bool& a_useHomogeneous);
52 
53 private:
54  void getDivergenceAndGradient(Real& a_divergence,
55  Real* a_gradient,
56  const int& a_idir,
57  const FaceIndex& a_bndryFace,
58  const VolIndex& a_vof,
59  const EBCellFAB& a_phi,
60  const RealVect& a_probLo,
61  const RealVect& a_dx,
62  const Side::LoHiSide& a_side,
63  const DataIndex& a_dit,
64  const Real& a_time,
65  const bool& a_useHomogeneous);
66 };
67 
69 {
70 public:
72 
74 
75  ///
76  /**
77  Sets value of NORMAL gradient of normal component. Everything
78  else in valueland is set to zero. If you want something more
79  elaborate, use the functional form.
80  */
81  virtual void setValue(Real a_value);
82 
83  virtual void setFunction(RefCountedPtr<BaseBCFuncEval> a_flux);
84 
85  virtual NeumannViscousTensorDomainBC* create(const ProblemDomain& a_domain,
86  const EBISLayout& a_layout,
87  const RealVect& a_dx);
88 private:
91 
94 };
95 
96 #include "NamespaceFooter.H"
97 #endif
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:130
Definition: FaceIndex.H:28
Real m_value
Definition: NeumannViscousTensorDomainBC.H:92
virtual void setValue(Real a_value)
Definition: NeumannViscousTensorDomainBC.H:68
Definition: BaseDomainBC.H:197
RefCountedPtr< BaseBCFuncEval > m_flux
Definition: NeumannViscousTensorDomainBC.H:93
Definition: NeumannViscousTensorDomainBC.H:20
Definition: EBCellFAB.H:29
double Real
Definition: REAL.H:33
Definition: BaseDomainBC.H:343
virtual NeumannViscousTensorDomainBC * create(const ProblemDomain &a_domain, const EBISLayout &a_layout, const RealVect &a_dx)
LoHiSide
Definition: LoHiSide.H:27
bool m_onlyHomogeneous
Definition: NeumannViscousTensorDomainBC.H:89
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
bool m_isFunction
Definition: NeumannViscousTensorDomainBC.H:90
Definition: DataIndex.H:112
Volume of Fluid Index.
Definition: VolIndex.H:31
Definition: EBISLayout.H:39
void getDivergenceAndGradient(Real &a_divergence, Real *a_gradient, const int &a_idir, const FaceIndex &a_bndryFace, const VolIndex &a_vof, const EBCellFAB &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useHomogeneous)
virtual void getFaceFlux(BaseFab< Real > &a_faceFlux, const BaseFab< Real > &a_phi, const RealVect &a_probLo, const RealVect &a_dx, const int &a_idir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const Real &a_time, const bool &a_useHomogeneous)
virtual void setFunction(RefCountedPtr< BaseBCFuncEval > a_flux)