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

Class for making boundary conditions on the EB in a multifluid context. More...

#include <CD_MFHelmholtzEBBC.H>

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

Public Member Functions

 MFHelmholtzEBBC ()=delete
 Disallowed weak constructor. Factory must call the other version.
 
 MFHelmholtzEBBC (const MFHelmholtzEBBC &a_other)=delete
 Disallowed copy constructor. Factory must call the other version.
 
 MFHelmholtzEBBC (const int a_phase, const RefCountedPtr< MFHelmholtzJumpBC > &a_jumpBC)
 Full constructor.
 
virtual ~MFHelmholtzEBBC ()
 Default constructor.
 
virtual void applyEBFlux (VoFIterator &a_vofit, EBCellFAB &a_Lphi, const EBCellFAB &a_phi, const BaseIVFAB< Real > &a_Bcoef, const DataIndex &a_dit, const Real &a_beta, const bool &a_homogeneousPhysBC) const override
 Apply the EB flux. This is the version that is called by EBHelmholtzOp. More...
 
- Public Member Functions inherited from EBHelmholtzEBBC
 EBHelmholtzEBBC ()
 Default constructor.
 
virtual ~EBHelmholtzEBBC ()
 Destructor.
 
 EBHelmholtzEBBC (const EBHelmholtzEBBC &a_other)=delete
 Disallowed – don't see why you would need it.
 
EBHelmholtzEBBCoperator= (const EBHelmholtzEBBC &a_other)=delete
 Disallowed - don't see why you would need it.
 
void define (const Location::Cell a_dataLocation, const EBLevelGrid &a_eblg, const RealVect &a_probLo, const Real &a_dx, const int a_ghostCF)
 Define function that is called by EBHelmholtzOp. More...
 
const LayoutData< BaseIVFAB< VoFStencil > > & getGradPhiStencils () const
 Get the stencil for computing the finite-volume approximation to kappa*Div(F). More...
 

Protected Member Functions

void define () override final
 User define function.
 
void defineMultiPhase ()
 Define stuff for multi-phase.
 
virtual void defineSinglePhase ()=0
 Define stuff for multi-phase.
 
virtual void applyEBFluxSinglePhase (VoFIterator &a_singlePhaseVofs, EBCellFAB &a_Lphi, const EBCellFAB &a_phi, const BaseIVFAB< Real > &a_Bcoef, const DataIndex &a_dit, const Real &a_beta, const bool &a_homogeneousPhysBC) const =0
 Apply flux single phase. More...
 
void applyEBFluxMultiPhase (VoFIterator &a_multiPhaseVofs, EBCellFAB &a_Lphi, const EBCellFAB &a_phi, const BaseIVFAB< Real > &a_Bcoef, const DataIndex &a_dit, const Real &a_beta, const bool &a_homogeneousPhysBC) const
 Apply flux in multiphase cells. More...
 
virtual bool getLeastSquaresBoundaryGradStencil (std::pair< Real, VoFStencil > &a_stencil, const VolIndex &a_vof, const VofUtils::Neighborhood a_neighborhood, const DataIndex &a_dit, const int a_order, const int a_weight) const
 Get stencil with specified order. More...
 
- Protected Member Functions inherited from EBHelmholtzEBBC
bool isStencilValidCF (const VoFStencil &a_stencil, const DataIndex &a_dit) const
 Check if stencil is valid. More...
 
RealVect getBoundaryPosition (const VolIndex &a_vof, const DataIndex &a_dit) const
 Returns physical position at the boundary.
 
Real applyStencil (const VoFStencil &a_stencil, const EBCellFAB &a_phi) const
 Apply stencil to data holder and return result.
 

Protected Attributes

RefCountedPtr< MFHelmholtzJumpBCm_jumpBC
 Jump bc object.
 
int m_phase
 Phase.
 
LayoutData< BaseIVFAB< Real > > m_boundaryWeights
 Weights for matching cells.
 
- Protected Attributes inherited from EBHelmholtzEBBC
Location::Cell m_dataLocation
 Data centering.
 
int m_ghostCF
 Number of ghost cells that were filled across CF interface.
 
Real m_dx
 Grid resolution.
 
RealVect m_probLo
 Lower-left corner of computational domain.
 
EBLevelGrid m_eblg
 Level grid.
 
LayoutData< BaseIVFAB< VoFStencil > > m_gradPhiStencils
 Stencils for computing the flux on a single level. This is a single-level object.
 

Additional Inherited Members

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

Class for making boundary conditions on the EB in a multifluid context.

This class is almost like EBHelmholtzEBBC, except that it enforces matching on multiphase cells. The user can inherit from this layer if he needs additional BCs in a multiphase context.

Member Function Documentation

◆ applyEBFlux()

void MFHelmholtzEBBC::applyEBFlux ( VoFIterator &  a_vofit,
EBCellFAB &  a_Lphi,
const EBCellFAB &  a_phi,
const BaseIVFAB< Real > &  a_Bcoef,
const DataIndex &  a_dit,
const Real &  a_beta,
const bool &  a_homogeneousPhysBC 
) const
overridevirtual

Apply the EB flux. This is the version that is called by EBHelmholtzOp.

Users get a new interface to the subset of cells that are not multi-phase cells.

Parameters
[in,out]a_vofitIterator for cut-cells
[in]a_LphiOperator kappa*L(phi)
[in]a_phiPhi, cell-centered.
[in]a_BcoefEB-centered B-coefficient
[in]a_ditData index
[in]a_betaBeta. Passed in from operator.
[in]a_homogeneousPhysBCHomogeneous BC or not.

Implements EBHelmholtzEBBC.

◆ applyEBFluxMultiPhase()

void MFHelmholtzEBBC::applyEBFluxMultiPhase ( VoFIterator &  a_multiPhaseVofs,
EBCellFAB &  a_Lphi,
const EBCellFAB &  a_phi,
const BaseIVFAB< Real > &  a_Bcoef,
const DataIndex &  a_dit,
const Real &  a_beta,
const bool &  a_homogeneousPhysBC 
) const
protected

Apply flux in multiphase cells.

Parameters
[in,out]a_multiPhaseVofsIterator for multi-phase cut-cells
[in,out]a_LphiOperator kappa*L(phi)
[in]a_phiPhi, cell-centered.
[in]a_BcoefEB-centered B-coefficient
[in]a_ditData index
[in]a_betaBeta. Passed in from operator.
[in]a_homogeneousPhysBCHomogeneous BC or not.

◆ applyEBFluxSinglePhase()

virtual void MFHelmholtzEBBC::applyEBFluxSinglePhase ( VoFIterator &  a_singlePhaseVofs,
EBCellFAB &  a_Lphi,
const EBCellFAB &  a_phi,
const BaseIVFAB< Real > &  a_Bcoef,
const DataIndex &  a_dit,
const Real &  a_beta,
const bool &  a_homogeneousPhysBC 
) const
protectedpure virtual

Apply flux single phase.

Parameters
[in,out]a_singlePhaseVofsIterator for single-phase cut-cells
[in,out]a_LphiOperator kappa*L(phi)
[in]a_phiPhi, cell-centered.
[in]a_BcoefEB-centered B-coefficient
[in]a_ditData index
[in]a_betaBeta. Passed in from operator.
[in]a_homogeneousPhysBCHomogeneous BC or not.

Implemented in MFHelmholtzRobinEBBC, MFHelmholtzNeumannEBBC, MFHelmholtzDirichletEBBC, and MFHelmholtzElectrostaticEBBC.

◆ getLeastSquaresBoundaryGradStencil()

bool MFHelmholtzEBBC::getLeastSquaresBoundaryGradStencil ( std::pair< Real, VoFStencil > &  a_stencil,
const VolIndex &  a_vof,
const VofUtils::Neighborhood  a_neighborhood,
const DataIndex &  a_dit,
const int  a_order,
const int  a_weight 
) const
protectedvirtual

Get stencil with specified order.

Parameters
[out]a_stencilWeight and stencil
[out]a_vofGrid cell
[out]a_neighborhoodNeighboorhood specifier
[in]a_ditData index
[in]a_orderAttempted order for stencil. This is also the stencil radius.
[in]a_weightWeighting factor for weighted least squares
Returns
If this returns true, a_stencil contains a valid stencil and weight.
Note
Stencils are computed using weighted least squares with squared inverse distance weighting.

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