Class for making boundary conditions on the EB in a multifluid context.
More...
#include <CD_MFHelmholtzEBBC.H>
|
| 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...
|
|
| EBHelmholtzEBBC () |
| Default constructor.
|
|
virtual | ~EBHelmholtzEBBC () |
| Destructor.
|
|
| EBHelmholtzEBBC (const EBHelmholtzEBBC &a_other)=delete |
| Disallowed – don't see why you would need it.
|
|
EBHelmholtzEBBC & | operator= (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...
|
|
|
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...
|
|
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.
|
|
|
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.
|
|
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.
◆ 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_vofit | Iterator for cut-cells |
[in] | a_Lphi | Operator kappa*L(phi) |
[in] | a_phi | Phi, cell-centered. |
[in] | a_Bcoef | EB-centered B-coefficient |
[in] | a_dit | Data index
|
[in] | a_beta | Beta. Passed in from operator. |
[in] | a_homogeneousPhysBC | Homogeneous 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_multiPhaseVofs | Iterator for multi-phase cut-cells |
[in,out] | a_Lphi | Operator kappa*L(phi) |
[in] | a_phi | Phi, cell-centered. |
[in] | a_Bcoef | EB-centered B-coefficient |
[in] | a_dit | Data index
|
[in] | a_beta | Beta. Passed in from operator. |
[in] | a_homogeneousPhysBC | Homogeneous 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 |
◆ 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_stencil | Weight and stencil |
[out] | a_vof | Grid cell |
[out] | a_neighborhood | Neighboorhood specifier |
[in] | a_dit | Data index |
[in] | a_order | Attempted order for stencil. This is also the stencil radius. |
[in] | a_weight | Weighting 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: