Base class for passing Robin domain boundary conditions into EBHelmholtzOp.
More...
#include <CD_EBHelmholtzRobinDomainBC.H>
|
|
| EBHelmholtzRobinDomainBC () |
| | Default constructor. Must subsequently set coefficients.
|
| |
|
virtual | ~EBHelmholtzRobinDomainBC () |
| | Destructor.
|
| |
| void | setCoefficients (const Real a_A, const Real a_B, const Real a_C) |
| | Set constant coefficients.
|
| |
| void | setCoefficients (const std::function< Real(const RealVect &a_pos)> &a_A, const std::function< Real(const RealVect &a_pos)> &a_B, const std::function< Real(const RealVect &a_pos)> &a_C) |
| | Set variable coefficients.
|
| |
| virtual void | getFaceFlux (BaseFab< Real > &a_faceFlux, const BaseFab< Real > &a_phi, const BaseFab< Real > &a_Bcoef, const int &a_dir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const bool a_useHomogeneous) const override |
| | Get face flux. This is for regular cells.
|
| |
| virtual Real | getFaceFlux (const VolIndex &a_vof, const EBCellFAB &a_phi, const EBFaceFAB &a_Bcoef, const int &a_dir, const Side::LoHiSide &a_side, const DataIndex &a_dit, const bool a_useHomogeneous) const override |
| | Get face flux. This is for irregular cells.
|
| |
| Real | getDiagWeight (const int a_dir, const Side::LoHiSide a_side) const override |
| | Diagonal-weight multiplier for the domain-face contribution to the relaxation diagonal.
|
| |
Public Member Functions inherited from EBHelmholtzDomainBC |
|
| EBHelmholtzDomainBC () |
| | Constructor.
|
| |
|
virtual | ~EBHelmholtzDomainBC () |
| | Destructor.
|
| |
|
| EBHelmholtzDomainBC (const EBHelmholtzDomainBC &a_other)=delete |
| | Disallowed – don't see why you would need it.
|
| |
|
| EBHelmholtzDomainBC (const EBHelmholtzDomainBC &&a_other)=delete |
| | Disallowed – don't see why you would need it.
|
| |
|
EBHelmholtzDomainBC & | operator= (const EBHelmholtzDomainBC &a_other)=delete |
| | Disallowed - don't see why you would need it.
|
| |
|
EBHelmholtzDomainBC & | operator= (const EBHelmholtzDomainBC &&a_other)=delete |
| | Disallowed - don't see why you would need it.
|
| |
| virtual void | define (const Location::Cell a_dataLocation, const EBLevelGrid &a_eblg, const RealVect &a_probLo, const Real a_dx) |
| | Define function.
|
| |
|
|
bool | m_useConstant |
| | Use constant for BC.
|
| |
|
bool | m_useFunction |
| | Use function for BC value.
|
| |
|
Real | m_constantA |
| | Constant A-coefficient.
|
| |
|
Real | m_constantB |
| | Constant B-coefficient.
|
| |
|
Real | m_constantC |
| | Constant C-coefficient.
|
| |
|
std::function< Real(const RealVect &a_pos)> | m_functionA |
| | Function-based A-coefficient.
|
| |
|
std::function< Real(const RealVect &a_pos)> | m_functionB |
| | Function-based B-coefficient.
|
| |
|
std::function< Real(const RealVect &a_pos)> | m_functionC |
| | Function-based C-coefficient.
|
| |
Protected Attributes inherited from EBHelmholtzDomainBC |
|
Location::Cell | m_dataLocation |
| | Data centering.
|
| |
|
Real | m_dx |
| | Grid resolution.
|
| |
|
RealVect | m_probLo |
| | Lower-left corner of computational domain.
|
| |
|
EBLevelGrid | m_eblg |
| | Level grid.
|
| |
|
Protected Member Functions inherited from EBHelmholtzDomainBC |
| RealVect | getBoundaryPosition (const IntVect &a_iv, const int &a_dir, const Side::LoHiSide &a_side) const |
| | Returns the cell-centered position at the boundary.
|
| |
Static Protected Member Functions inherited from EBHelmholtzDomainBC |
| static void | multiplyByBcoef (BaseFab< Real > &a_flux, const BaseFab< Real > &a_bco, const int a_dir, const Side::LoHiSide a_side) |
| | Utility function which multiplies the flux (or actually, dphi/dn) by the B-coefficient. This is used by the implementation classes when they compute the regular flux at the domain edges/faces.
|
| |
Static Protected Attributes inherited from EBHelmholtzDomainBC |
|
static constexpr int | m_comp = 0 |
| | Component that everything is defined for. Always have m_comp = 0.
|
| |
|
static constexpr int | m_nComp = 1 |
| | Number of components. Always have m_nComp = 1.
|
| |
Base class for passing Robin domain boundary conditions into EBHelmholtzOp.
Robin bcs are in the form A*phi + B*dphi/dn = C. We impose dphi/dn = (C - A*phi)/B where phi is extrapolated to the EB to first order.
- Note
- The B-coefficient is not the same as in the Helmholtz equation...
-
In our notation, n points into the computational domain.
◆ getDiagWeight()
| Real EBHelmholtzRobinDomainBC::getDiagWeight |
( |
const int |
a_dir, |
|
|
const Side::LoHiSide |
a_side |
|
) |
| const |
|
overridevirtual |
Diagonal-weight multiplier for the domain-face contribution to the relaxation diagonal.
See EBHelmholtzDomainBC::getDiagWeight for how this is selected. The value here preserves the 1.0 that this BC inherited from the previous (non-pure) base default; it has not been re-derived from the Robin getFaceFlux discretization and should be reviewed against it.
- Parameters
-
| [in] | a_dir | Coordinate direction of the face. |
| [in] | a_side | High or low side. |
- Returns
- Diagonal weight.
Implements EBHelmholtzDomainBC.
◆ getFaceFlux() [1/2]
| void EBHelmholtzRobinDomainBC::getFaceFlux |
( |
BaseFab< Real > & |
a_faceFlux, |
|
|
const BaseFab< Real > & |
a_phi, |
|
|
const BaseFab< Real > & |
a_Bcoef, |
|
|
const int & |
a_dir, |
|
|
const Side::LoHiSide & |
a_side, |
|
|
const DataIndex & |
a_dit, |
|
|
const bool |
a_useHomogeneous |
|
) |
| const |
|
overridevirtual |
Get face flux. This is for regular cells.
- Parameters
-
| [in,out] | a_faceFlux | Face-centered flux. |
| [in] | a_phi | Cell-centered data |
| [in] | a_Bcoef | Face-centered B-coefficient |
| [in] | a_dir | Coordinate direction |
| [in] | a_side | High or low side |
| [in] | a_dit | Data index |
| [in] | a_useHomogeneous | Homogeneous physical BCs or not. |
- Note
- a_faceFlux is defined in the first strip of interior cells on the (dir,side) edge of the domain.
Implements EBHelmholtzDomainBC.
◆ getFaceFlux() [2/2]
| Real EBHelmholtzRobinDomainBC::getFaceFlux |
( |
const VolIndex & |
a_vof, |
|
|
const EBCellFAB & |
a_phi, |
|
|
const EBFaceFAB & |
a_Bcoef, |
|
|
const int & |
a_dir, |
|
|
const Side::LoHiSide & |
a_side, |
|
|
const DataIndex & |
a_dit, |
|
|
const bool |
a_useHomogeneous |
|
) |
| const |
|
overridevirtual |
Get face flux. This is for irregular cells.
- Parameters
-
| [in] | a_vof | Grid cell |
| [in] | a_phi | Cell-centered data |
| [in] | a_Bcoef | Face-centered B-coefficient |
| [in] | a_dir | Coordinate direction |
| [in] | a_side | High or low side |
| [in] | a_dit | Data index |
| [in] | a_useHomogeneous | Homogeneous physical BCs or not. |
- Returns
- Face flux
Implements EBHelmholtzDomainBC.
◆ setCoefficients() [1/2]
| void EBHelmholtzRobinDomainBC::setCoefficients |
( |
const Real |
a_A, |
|
|
const Real |
a_B, |
|
|
const Real |
a_C |
|
) |
| |
Set constant coefficients.
- Parameters
-
| [in] | a_A | Constant A-coefficient |
| [in] | a_B | Constant B-coefficient |
| [in] | a_C | Constant C-coefficient |
◆ setCoefficients() [2/2]
| void EBHelmholtzRobinDomainBC::setCoefficients |
( |
const std::function< Real(const RealVect &a_pos)> & |
a_A, |
|
|
const std::function< Real(const RealVect &a_pos)> & |
a_B, |
|
|
const std::function< Real(const RealVect &a_pos)> & |
a_C |
|
) |
| |
Set variable coefficients.
- Parameters
-
| [in] | a_A | Spatially dependent A-coefficient |
| [in] | a_B | Spatially dependent B-coefficient |
| [in] | a_C | Spatially dependent C-coefficient |
The documentation for this class was generated from the following files: