chombo-discharge
Public Member Functions | Protected Attributes | List of all members
EBHelmholtzNeumannDomainBC Class Reference

Boundary condition class for passing Neumann domain boundary conditions into EBHelmholtzOp. More...

#include <CD_EBHelmholtzNeumannDomainBC.H>

Inheritance diagram for EBHelmholtzNeumannDomainBC:
Inheritance graph
[legend]
Collaboration diagram for EBHelmholtzNeumannDomainBC:
Collaboration graph
[legend]

Public Member Functions

 EBHelmholtzNeumannDomainBC ()
 Constructor. Must subsequently call setDphiDn or setBxDphiDn.
 
 EBHelmholtzNeumannDomainBC (const Real a_DphiDn)
 Constructor. More...
 
 EBHelmholtzNeumannDomainBC (const std::function< Real(const RealVect &a_pos)> &a_value)
 Full constructor. More...
 
virtual ~EBHelmholtzNeumannDomainBC ()
 Destructor.
 
void setDphiDn (const Real a_DphiDn)
 Set value of dphi/dn on the EB. More...
 
void setDphiDn (const std::function< Real(const RealVect &a_pos)> &a_DphiDn)
 Set spatially dependent value of dphi/dn on the EB. More...
 
void setBxDphiDn (const Real a_BxDphiDn)
 Set the value of B*dphi/dn on the EB. More...
 
void setBxDphiDn (const std::function< Real(const RealVect &a_pos)> &a_BxDphiDn)
 Set the spatially dependent value of B*dphi/dn on the EB. 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 override
 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 override
 Get face flux. This is for irregular cells. More...
 
- 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.
 
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...
 

Protected Attributes

bool m_multByBco
 Hook for multiplying by b-coefficient or not.
 
bool m_useConstant
 Use constant for BC.
 
bool m_useFunction
 Use function for BC value.
 
Real m_constantDphiDn
 Value on the domain side.
 
std::function< Real(const RealVect &a_pos)> m_functionDphiDn
 Value on the domain side.
 
- 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.
 

Additional Inherited Members

- 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. 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...
 
- Static Protected Attributes inherited from EBHelmholtzDomainBC
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

Boundary condition class for passing Neumann domain boundary conditions into EBHelmholtzOp.

This class can set either dphi/dn or B*dphi/dn on the boundary.

Constructor & Destructor Documentation

◆ EBHelmholtzNeumannDomainBC() [1/2]

EBHelmholtzNeumannDomainBC::EBHelmholtzNeumannDomainBC ( const Real  a_DphiDn)

Constructor.

Parameters
[in]a_DphiDnConstant value of dphi/dn on all domain sides.
Note
A positive values gives a flux INTO the domain.

◆ EBHelmholtzNeumannDomainBC() [2/2]

EBHelmholtzNeumannDomainBC::EBHelmholtzNeumannDomainBC ( const std::function< Real(const RealVect &a_pos)> &  a_value)

Full constructor.

Parameters
[in]a_DphiDnSpatially dependent value of dphi/dn on all domain sides.
Note
A positive values gives a flux INTO the domain.

Member Function Documentation

◆ getFaceFlux() [1/2]

void EBHelmholtzNeumannDomainBC::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_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.

Implements EBHelmholtzDomainBC.

◆ getFaceFlux() [2/2]

Real EBHelmholtzNeumannDomainBC::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_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.

Implements EBHelmholtzDomainBC.

◆ setBxDphiDn() [1/2]

void EBHelmholtzNeumannDomainBC::setBxDphiDn ( const Real  a_BxDphiDn)

Set the value of B*dphi/dn on the EB.

Parameters
[in]a_BxDphiDnValue of B*dphi/dn.
Note
A positive values gives a flux INTO the domain.

◆ setBxDphiDn() [2/2]

void EBHelmholtzNeumannDomainBC::setBxDphiDn ( const std::function< Real(const RealVect &a_pos)> &  a_BxDphiDn)

Set the spatially dependent value of B*dphi/dn on the EB.

Parameters
[in]a_BxDphiDnValue of B*dphi/dn.
Note
A positive values gives a flux INTO the domain.

◆ setDphiDn() [1/2]

void EBHelmholtzNeumannDomainBC::setDphiDn ( const Real  a_DphiDn)

Set value of dphi/dn on the EB.

Parameters
[in]a_DphiDnValue of dphi/dn.
Note
A positive values gives a flux INTO the domain.

◆ setDphiDn() [2/2]

void EBHelmholtzNeumannDomainBC::setDphiDn ( const std::function< Real(const RealVect &a_pos)> &  a_DphiDn)

Set spatially dependent value of dphi/dn on the EB.

Parameters
[in]a_DphiDnValue of dphi/dn.
Note
A positive values gives a flux INTO the domain.

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