chombo-discharge
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
EBHelmholtzDomainBC Class Referenceabstract

Base class for passing domain boundary conditions into EBHelmholtzOp. More...

#include <CD_EBHelmholtzDomainBC.H>

Inheritance diagram for EBHelmholtzDomainBC:
Inheritance graph
[legend]

Public Member Functions

 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.
 
EBHelmholtzDomainBCoperator= (const EBHelmholtzDomainBC &a_other)=delete
 Disallowed - don't see why you would need it.
 
EBHelmholtzDomainBCoperator= (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. More...
 
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 =0
 Get face flux. This is for regular cells. More...
 
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 =0
 Get face flux. This is for irregular cells. More...
 

Protected Member Functions

RealVect getBoundaryPosition (const IntVect &a_iv, const int &a_dir, const Side::LoHiSide &a_side) const
 Returns the cell-centered position at the boundary. More...
 
void multiplyByBcoef (BaseFab< Real > &a_flux, const BaseFab< Real > &a_bco, const int a_dir, const Side::LoHiSide a_side) const
 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. More...
 

Protected Attributes

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.
 

Static Protected Attributes

constexpr static int m_comp = 0
 Component that everything is defined for. Always have m_comp = 0.
 
constexpr static int m_nComp = 1
 Number of components. Always have m_nComp = 1.
 

Detailed Description

Base class for passing domain boundary conditions into EBHelmholtzOp.

Member Function Documentation

◆ define()

void EBHelmholtzDomainBC::define ( const Location::Cell  a_dataLocation,
const EBLevelGrid &  a_eblg,
const RealVect &  a_probLo,
const Real  a_dx 
)
virtual

Define function.

Parameters
[in]a_eblgLevel grids
[in]a_probLoLower-left corner of computational domain
[in]a_dxGrid resolution
Note
This sets the internals for the BC object. This is called by EBHelmholtzOp when it defines stencils.

Reimplemented in EBHelmholtzEddingtonSP1DomainBC, and EBHelmholtzElectrostaticDomainBC.

◆ getBoundaryPosition()

RealVect EBHelmholtzDomainBC::getBoundaryPosition ( const IntVect &  a_iv,
const int &  a_dir,
const Side::LoHiSide &  a_side 
) const
inlineprotected

Returns the cell-centered position at the boundary.

Parameters
[in]a_ivGrid cell
[in]a_dirFace coordinate direction
[in]a_sideLo/Hi side

◆ getFaceFlux() [1/2]

virtual void EBHelmholtzDomainBC::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
pure virtual

Get face flux. This is for regular cells.

Parameters
[in,out]a_faceFluxFace-centered flux.
[in]a_phiCell-centered data
[in]a_BcoefFace-centered B-coefficient
[in]a_dirCoordinate direction
[in]a_sideHigh or low side
[in]a_ditData index
[in]a_useHomogeneousHomogeneous physical BCs or not.
Note
a_faceFlux is defined in the first strip of interior cells on the (dir,side) edge of the domain.

Implemented in EBHelmholtzEddingtonSP1DomainBC, EBHelmholtzElectrostaticDomainBC, EBHelmholtzRobinDomainBC, EBHelmholtzNeumannDomainBC, and EBHelmholtzDirichletDomainBC.

◆ getFaceFlux() [2/2]

virtual Real EBHelmholtzDomainBC::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
pure virtual

Get face flux. This is for irregular cells.

Parameters
[in]a_vofGrid cell
[in]a_phiCell-centered data
[in]a_BcoefFace-centered B-coefficient
[in]a_dirCoordinate direction
[in]a_sideHigh or low side
[in]a_ditData index
[in]a_useHomogeneousHomogeneous physical BCs or not.

Implemented in EBHelmholtzEddingtonSP1DomainBC, EBHelmholtzElectrostaticDomainBC, EBHelmholtzRobinDomainBC, EBHelmholtzNeumannDomainBC, and EBHelmholtzDirichletDomainBC.

◆ multiplyByBcoef()

void EBHelmholtzDomainBC::multiplyByBcoef ( BaseFab< Real > &  a_flux,
const BaseFab< Real > &  a_bco,
const int  a_dir,
const Side::LoHiSide  a_side 
) const
protected

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.

Parameters
[in,out]a_fluxOn input, contains dphi/dn. On output, contains B*dphi/dn
[in]a_bcoHelmholtz B-coefficient
[in]a_dirCoordinate direction
[in]a_sideSide
Note
This routine is weird because the flux data holder in the BC classes lives on the cell centers next to the domain face/edge. So we need to shift the box over when we multiply. Because both Dirichlet, Neumann, and the Robin Bcs need to do this, I'm putting this routine in the parent class.

The documentation for this class was generated from the following files: