Class for computing "jump interface" boundary conditions for multifluid code.
More...
|
|
| MFHelmholtzJumpBC ()=delete |
| | Disallowed weak construction.
|
| |
| | MFHelmholtzJumpBC (Location::Cell a_dataLocation, const MFLevelGrid &a_mflg, const BcoefPtr &a_Bcoef, const AmrMask &a_validCells, Real a_dx, int a_order, int a_weight, int a_radius, int a_ghostCF, IntVect a_ghostPhi) |
| | Defining constructor.
|
| |
|
| MFHelmholtzJumpBC (const MFHelmholtzJumpBC &a_other)=delete |
| | Disallowed copy constructor.
|
| |
|
virtual | ~MFHelmholtzJumpBC () |
| | Destructor. Does nothing.
|
| |
|
MFHelmholtzJumpBC & | operator= (const MFHelmholtzJumpBC &a_other)=delete |
| | Disallowed assignment constructor.
|
| |
|
| MFHelmholtzJumpBC (MFHelmholtzJumpBC &&)=delete |
| |
|
MFHelmholtzJumpBC & | operator= (MFHelmholtzJumpBC &&)=delete |
| |
| void | setBco (const RefCountedPtr< LevelData< MFBaseIVFAB > > &a_Bcoef) |
| | Set B-coefficient. This updates the stencils.
|
| |
| bool | isMultiPhase () const noexcept |
| | Is multiphase or not.
|
| |
| int | getOrder () const |
| | Return stencil order.
|
| |
| int | getWeight () const |
| | Return stencil weight (for least squares)
|
| |
| int | getRadius () const |
| | Return stencil radius (for least squares)
|
| |
| void | setCoarseGridDropOrder (bool a_dropOrder) |
| | Signal MFHelmholtzJumpBC that it should drop the stencil order if the cell is a coarsened cell.
|
| |
| virtual void | matchBC (LevelData< BaseIVFAB< Real > > &a_jump, const LevelData< MFCellFAB > &a_phi, bool a_homogeneousPhysBC) const |
| | Match the BC.
|
| |
| virtual void | matchBC (BaseIVFAB< Real > &a_jump, const MFCellFAB &a_phi, bool a_homogeneousPhysBC, const DataIndex &a_dit) const |
| | Match the BC.
|
| |
| virtual const BaseIVFAB< Real > & | getBndryPhi (int a_phase, const DataIndex &a_dit) const |
| | Get phi on the boundary.
|
| |
| virtual VoFIterator & | getSinglePhaseVofs (int a_phase, const DataIndex &a_dit) const |
| | Return vof iterator which iterates over single-phase cells on a specific phase and box.
|
| |
| virtual VoFIterator & | getMultiPhaseVofs (int a_phase, const DataIndex &a_dit) const |
| | Return vof iterator which iterates over multi-phase cells on a specified phase and box.
|
| |
| virtual const LayoutData< MFInterfaceFAB< VoFStencil > > & | getGradPhiStencils () const noexcept |
| | Get stencils for computing dphi/dn at the boundary.
|
| |
| virtual const LayoutData< MFInterfaceFAB< Real > > & | getGradPhiWeights () const noexcept |
| | Get constant weights involved when computing dphi/dn at the boundary.
|
| |
|
virtual void | resetBC () const |
| | Set everything to zero. This is a debugging function.
|
| |
|
|
void | defineStencils () |
| | Define function. Builds stencils.
|
| |
|
void | defineIterators () |
| | Define function. Builds stencils.
|
| |
|
void | buildAverageStencils () |
| | Brief the average stencils.
|
| |
| virtual bool | getLeastSquaresBoundaryGradStencil (std::pair< Real, VoFStencil > &a_stencil, const VolIndex &a_vof, const EBISBox &a_ebisbox, VofUtils::Neighborhood a_neighborhood, int a_order) const |
| | Get stencil with specified order.
|
| |
| bool | isStencilValidCF (const VoFStencil &a_stencil, const DataIndex &a_dit) const |
| | Check if stencil is valid.
|
| |
| Real | applyStencil (const VoFStencil &a_stencil, const EBCellFAB &a_phi) const |
| | Apply a stencil and return the result.
|
| |
|
|
Location::Cell | m_dataLocation |
| | Data centering.
|
| |
|
MFLevelGrid | m_mflg |
| | Grids.
|
| |
|
RefCountedPtr< LevelData< MFBaseIVFAB > > | m_Bcoef |
| | B-coefficient.
|
| |
|
RefCountedPtr< LevelData< BaseFab< bool > > > | m_validCells |
| | Valid grid cells.
|
| |
|
Real | m_dx |
| | Grid resolution.
|
| |
|
int | m_order |
| | Stencil order.
|
| |
|
int | m_weight |
| | Stencil order.
|
| |
|
int | m_radius |
| | Stencil order.
|
| |
|
int | m_ghostCF |
| | Number of grid cells that were filled over the CF.
|
| |
|
int | m_numPhases |
| | Number of phases.
|
| |
|
IntVect | m_ghostPhi |
| | Number of ghost cells in phi (must be exact match in order to use AggStencil)
|
| |
|
bool | m_multiPhase |
| | Multiphase or not.
|
| |
|
bool | m_dropOrder |
| | Drop order or not.
|
| |
|
LayoutData< MFInterfaceFAB< Real > > | m_boundaryPhi |
| | Value of phi on the boundary.
|
| |
|
std::map< int, std::shared_ptr< LayoutData< VoFIterator > > > | m_singlePhaseVofs |
| | Iterators for single-phase cells. The integer index is the phase.
|
| |
|
std::map< int, std::shared_ptr< LayoutData< VoFIterator > > > | m_multiPhaseVofs |
| | Iterators for multi-phase cells. The integer index is the phase.
|
| |
|
LayoutData< IntVectSet > | m_ivs |
| | IntVectSet over which we run the "averaging".
|
| |
|
LayoutData< MFInterfaceFAB< VoFStencil > > | m_gradPhiStencils |
| | Raw stencils for dphi/dn.
|
| |
|
LayoutData< MFInterfaceFAB< Real > > | m_gradPhiWeights |
| | Raw weights for dphi/dn.
|
| |
|
LayoutData< MFInterfaceFAB< VoFStencil > > | m_avgStencils |
| | Average stencil.
|
| |
|
LayoutData< MFInterfaceFAB< Vector< VolIndex > > > | m_avgVoFs |
| | Target vofs for average stencils.
|
| |
|
LayoutData< MFInterfaceFAB< Real > > | m_denom |
| | Denominator 1/(bp*wp + bq*wq) for all interface cells.
|
| |
|
LayoutData< MFInterfaceFAB< Real > > | m_avgWeights |
| | Average weights.
|
| |
|
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, BaseIVFAB< Real > > > > | m_aggStencils [2] |
| | Agg stencils for making matching go faster.
|
| |
Class for computing "jump interface" boundary conditions for multifluid code.
This class creates stencils for approximating the normal derivative on each side. It uses those stencil to compute a value on the boundary which fulfills the discrete version of dphi/dn1 + dphi/dn2 = sigma. This value is used by MFHelmholtzEBBC to compute the fluxes into the cut-cells on each side.
When multi-valued cells are involved we use an "average" formulation such that we obtain the surface potential which is equal on all multi-cut surfaces. For this reason we store the bare stencils AND the averaged stencils (which are used in the matching). When stencil coefficients are updated then we use the raw stencils for recomputing the average stencils. This is done by calling setBco.