|
chombo-discharge
|
Class that holds important things for doing AMR over a specific phase and processor distribution. More...
#include <CD_PhaseRealm.H>

Protected Member Functions | |
| void | defineEBLevelGrid (const int a_lmin) |
| Define EBLevelGrids. | |
| void | defineVofIterator (const int a_lmin) |
| Define vof iterators. | |
| void | defineEBCoarAve (const int a_lmin) |
| Define coarsening utility. | |
| void | defineEBMultigrid (const int a_lmin) |
| Define multigrid interpolation utility. | |
| void | defineFillPatch (const int a_lmin) |
| Define regrid utility. | |
| void | defineEBCoarseToFineInterp (const int a_lmin) |
| Define ghost cell interpolation utility. | |
| void | defineMultigridInjection (const int a_lmin) |
| Define multigrid injection utility. | |
| void | defineFluxReg (const int a_lmin, const int a_regsize) |
| Define flux register utility. | |
| void | defineRedistOper (const int a_lmin, const int a_regsize) |
| Define operator redistribution utility. | |
| void | defineFineToCoarRedistOper (const int a_lmin, const int a_regsize) |
| Define operator redistribution utility. | |
| void | defineCoarToFineRedistOper (const int a_lmin, const int a_regsize) |
| Define operator redistribution utility. | |
| void | defineCoarToCoarRedistOper (const int a_lmin, const int a_regsize) |
| Define operator redistribution utility. | |
| void | defineParticleMesh () |
| Define particle mesh operator. | |
| void | defineGradSten (const int a_lmin) |
| Define gradient stencils. | |
| void | defineIrregSten () |
| Define data recentering stencils. | |
| void | defineNonConservativeDivergence (const int a_lmin) |
| Define non-conservative divergence stencils. | |
| void | defineLevelSet (const int a_lmin, const int a_numGhost) |
| Put the level-set on the mesh. | |
| void | defineMasks (const int a_lmin, const int a_numGhost) |
| Define the regular/covered/irregular cell masks. | |
Protected Attributes | |
| bool | m_isDefined |
| True if things on this phase can be defined. False otherwise. Only used internally. | |
| bool | m_hasEbCf |
| Relic of an ancient past. Always true. | |
| bool | m_profile |
| Profile or not. | |
| bool | m_verbose |
| Verbose or not. | |
| int | m_finestLevel |
| Finest grid level. | |
| int | m_numGhostCells |
| Number of ghost cells in data holders. | |
| int | m_numEbGhostsCells |
| Number of ghost cells in EBLevelGrid/EBISLayout/EBISBox. | |
| int | m_numLsfGhostCells |
| Number of ghost cells in level-set function (on the mesh) | |
| int | m_redistributionRadius |
| Redistribution radius. | |
| int | m_multigridInterpolationOrder |
| Multigrid interpolator order. | |
| int | m_multigridInterpolationRadius |
| Multigrid interpolator radius. | |
| int | m_multigridInterpolationWeight |
| Multigrid interpolator weight (for least squares) | |
| RealVect | m_probLo |
| Lower-left corner of computational domain. | |
| CellCentroidInterpolation::Type | m_cellCentroidInterpolationType |
| Cell-center to cell-centroid interpolation method. | |
| EBCentroidInterpolation::Type | m_ebCentroidInterpolationType |
| Cell-center to cell-centroid interpolation method. | |
| Vector< Real > | m_dx |
| Grid resolutions. | |
| Vector< int > | m_refinementRatios |
| Refinement ratios between levels. | |
| RefCountedPtr< EBIndexSpace > | m_ebis |
| EB index space. | |
| RefCountedPtr< BaseIF > | m_baseif |
| Implicit/SD function. | |
| std::map< std::string, bool > | m_operatorMap |
| Operator map for checking which ones are registered. | |
| Vector< DisjointBoxLayout > | m_grids |
| AMR grids. | |
| Vector< ProblemDomain > | m_domains |
| Problem domains. | |
| Vector< EBISLayout > | m_ebisl |
| EBIS layouts. | |
| Vector< RefCountedPtr< EBLevelGrid > > | m_eblg |
| EB level grids. | |
| Vector< RefCountedPtr< EBLevelGrid > > | m_eblgCoFi |
| Coarsened fine-level EB grids. | |
| Vector< RefCountedPtr< EBLevelGrid > > | m_eblgFiCo |
| Coarsened fine-level EB grids. | |
| EBAMRFAB | m_levelset |
| Level-set function. | |
| EBAMRCellData | m_regularCells |
| Cell mask with value 1 in regular cells and 0 elsewhere. | |
| EBAMRCellData | m_coveredCells |
| Cell mask with value 1 in covered cells and 0 elsewhere. | |
| EBAMRCellData | m_notCoveredCells |
| Cell mask with value 1 in non-covered (regular and irregular) cells and 0 in covered cells. | |
| EBAMRCellData | m_irregularCells |
| Cell mask with value 1 in irregular (cut) cells and 0 elsewhere. | |
| Vector< RefCountedPtr< LayoutData< VoFIterator > > > | m_vofIter |
| Cut-cell iterator (all irregular cells) | |
| Vector< RefCountedPtr< LayoutData< VoFIterator > > > | m_multiCutVofIter |
| Cut-cell iterator restricted to multiply-cut cells (cells with more than one VoF) | |
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > | m_faceIter |
| Face iterators over cut-cell faces in the valid box (FaceStop::SurroundingWithBoundary). | |
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > | m_faceIterNoBoundary |
| Face iterators over cut-cell faces in the valid box (FaceStop::SurroundingNoBoundary). | |
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > | m_faceIterTanGhost |
| Per-direction face iterators covering cut-cell faces that reach into the tangential ghost layer. | |
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > | m_multiCutFaceIter |
| Face iterators over multiply-cut faces in each valid grid box (SurroundingNoBoundary stop criterion) | |
| Vector< RefCountedPtr< EBCoarAve > > | m_coarAve |
| Coarsening operator. | |
| Vector< RefCountedPtr< EBMultigridInterpolator > > | m_multigridInterpolator |
| Multigrid interpolation utility. | |
| Vector< RefCountedPtr< EBGhostCellInterpolator > > | m_ghostCellInterpolator |
| Ghost cell interpolation utility. | |
| Vector< RefCountedPtr< EBCoarseToFineInterp > > | m_ebFineInterp |
| Regridding utility (for filling new grid patches) | |
| Vector< RefCountedPtr< EBReflux > > | m_ebReflux |
| Flux register utility. | |
| Vector< RefCountedPtr< EBFluxRedistribution > > | m_redistributionOp |
| Redistribution utilities. | |
| Vector< RefCountedPtr< EBGradient > > | m_gradientOp |
| Gradient operator. | |
| EBAMRParticleMesh | m_particleMesh |
| For doing particle-mesh operations. | |
| EBAMRSurfaceDeposition | m_surfaceDeposition |
| For doing particle deposition onto surfaces. | |
| Vector< RefCountedPtr< CellCentroidInterpolation > > | m_cellCentroidInterpolation |
| For interpolating data from cell centers to cell centroids. | |
| Vector< RefCountedPtr< EBCentroidInterpolation > > | m_ebCentroidInterpolation |
| For interpolating data from cell centers to EB centroids. | |
| Vector< RefCountedPtr< EBNonConservativeDivergence > > | m_nonConservativeDivergence |
| For computing non-conservative divergences. | |
Class that holds important things for doing AMR over a specific phase and processor distribution.
This class is essentially an EBAMR core-grid class, containing the usually EBAMR stuff within a single EBIndexSpace. In thus contains a set of grids (DisjointBoxLayout) and the usual EB stuff (EBLevelGrid, EBISLayout). In addition, it contains a bunch of operators that can be registered by the user (through the user interface AmrMesh). These operators live in this class, and they can be fetched e.g. by AmrMesh.
|
delete |
Disallowed copy ctor.
| [in] | a_other | Other realm |
|
delete |
Disallowed move ctor.
| [in] | a_other | Other realm |
| void PhaseRealm::define | ( | const Vector< DisjointBoxLayout > & | a_grids, |
| const Vector< ProblemDomain > & | a_domains, | ||
| const Vector< int > & | a_refRat, | ||
| const Vector< Real > & | a_dx, | ||
| const RealVect & | a_probLo, | ||
| const int | a_finestLevel, | ||
| const int | a_ebGhost, | ||
| const int | a_numGhost, | ||
| const int | a_lsfGhost, | ||
| const int | a_redistRad, | ||
| const int | a_mgInterpOrder, | ||
| const int | a_mgInterpRadius, | ||
| const int | a_mgInterpWeight, | ||
| const CellCentroidInterpolation::Type | a_centroidStencil, | ||
| const EBCentroidInterpolation::Type | a_ebStencil, | ||
| const RefCountedPtr< BaseIF > & | a_baseif, | ||
| const RefCountedPtr< EBIndexSpace > & | a_ebis | ||
| ) |
Full define function.
| [in] | a_grids | Grids on each level, i.e. boxes and processor distributions |
| [in] | a_domains | Problem domains |
| [in] | a_refRat | Refinement ratios |
| [in] | a_dx | Grid resolutions |
| [in] | a_probLo | Lower-left corner of physical domain |
| [in] | a_finestLevel | Finest grid level |
| [in] | a_ebGhost | Number of ghost cells used for geometric information when making operators |
| [in] | a_numGhost | Number of ghost cells in data holders |
| [in] | a_lsfGhost | Number of ghost cells used when computing the level set on the mesh |
| [in] | a_redistRad | Redistribution radius |
| [in] | a_mgInterpOrder | Multigrid ghost cell interpolation order |
| [in] | a_mgInterpRadius | Multigrid ghost cell interpolation radius |
| [in] | a_mgInterpWeight | Multigrid ghost cell interpolation weight (for least squares) |
| [in] | a_centroidStencil | Stencil type for interpolation from cell centers to cell centroids |
| [in] | a_ebStencil | Stencil type for interpolation from cell centers to eb centroids |
| [in] | a_baseif | Implicit/signed distance function |
| [in] | a_ebis | EBIndexSpace discrete information |
Define operator redistribution utility.
| [in] | a_lmin | Coarsest grid level that changes |
| [in] | a_regsize | Description |
Define operator redistribution utility.
| [in] | a_lmin | Coarsest grid level that changes |
| [in] | a_regsize | Description |
Define coarsening utility.
| [in] | a_lmin | Coarsest grid level that changes |
Define ghost cell interpolation utility.
| [in] | a_lmin | Coarsest grid level that changes |
Define EBLevelGrids.
| [in] | a_lmin | Coarsest grid level that changes |
Define multigrid interpolation utility.
| [in] | a_lmin | Coarsest grid level that changes |
Define regrid utility.
| [in] | a_lmin | Coarsest grid level that changes |
Define operator redistribution utility.
| [in] | a_lmin | Coarsest grid level that changes |
| [in] | a_regsize | Description |
Define flux register utility.
| [in] | a_lmin | Coarsest grid level that changes |
| [in] | a_regsize | Description |
Define gradient stencils.
| [in] | a_lmin | Description |
Put the level-set on the mesh.
| [in] | a_lmin | Coarsest grid level that changes |
| [in] | a_numGhost | Description |
Define the regular/covered/irregular cell masks.
Each mask is a cell-centered field that is 1 in cells of the corresponding type and 0 elsewhere. The masks are built geometrically from the EBISBox and let kernels replace per-cell EBISBox::isRegular/isCovered queries (which are not inlinable) with a vectorizable mask load.
| [in] | a_lmin | Coarsest grid level that changes |
| [in] | a_numGhost | Number of ghost cells |
Define multigrid injection utility.
| [in] | a_lmin | Coarsest grid level that changes |
Define non-conservative divergence stencils.
| [in] | a_lmin | Coarsest grid level that changes |
Define operator redistribution utility.
| [in] | a_lmin | Coarsest grid level that changes |
| [in] | a_regsize | Description |
Define vof iterators.
| [in] | a_lmin | Coarsest grid level that changes |
| const Vector< RefCountedPtr< CellCentroidInterpolation > > & PhaseRealm::getCellCentroidInterpolation | ( | ) | const |
Get objects for interpolation from cell centers to centroids.
| Vector< RefCountedPtr< EBCoarAve > > & PhaseRealm::getCoarseAverage | ( | ) | const |
Get coarsening operators.
| const EBAMRCellData & PhaseRealm::getCoveredCells | ( | ) | const |
Get the covered-cell mask (value 1 in covered cells, 0 elsewhere).
| const Vector< ProblemDomain > & PhaseRealm::getDomains | ( | ) | const |
Get problem domains.
| const Vector< RefCountedPtr< EBCentroidInterpolation > > & PhaseRealm::getEBCentroidInterpolation | ( | ) | const |
Get objects for interpolation from cell centers to EB centroids.
| Vector< RefCountedPtr< EBCoarseFineParticleMesh > > & PhaseRealm::getEBCoarseFineParticleMesh | ( | ) | const |
Get deposition operator.
| const RefCountedPtr< EBIndexSpace > & PhaseRealm::getEBIndexSpace | ( | ) | const |
Return the EB index space.
| const Vector< EBISLayout > & PhaseRealm::getEBISLayout | ( | ) | const |
Get EBIS layout.
| const Vector< RefCountedPtr< EBLevelGrid > > & PhaseRealm::getEBLevelGrid | ( | ) | const |
Get EBLevelGrids.
| const Vector< RefCountedPtr< EBLevelGrid > > & PhaseRealm::getEBLevelGridCoFi | ( | ) | const |
Get coarsened fine grids.
| const Vector< RefCountedPtr< EBLevelGrid > > & PhaseRealm::getEBLevelGridFiCo | ( | ) | const |
Get refined grids.
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & PhaseRealm::getFaceIterator | ( | ) | const |
Return face iterators over cut-cell faces in each valid grid box (FaceStop::SurroundingWithBoundary).
Each entry is an array of SpaceDim FaceIterators, one per coordinate direction. Domain boundary faces are included. For cell-to-face averaging that excludes domain boundary faces, use getFaceIteratorNoBoundary instead.
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & PhaseRealm::getFaceIteratorNoBoundary | ( | ) | const |
Return face iterators over cut-cell faces in each valid grid box (FaceStop::SurroundingNoBoundary).
Each entry is an array of SpaceDim FaceIterators, one per coordinate direction. Domain boundary faces are excluded. Intended for cell-to-face averaging where domain boundary faces are fixed up separately.
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & PhaseRealm::getFaceIteratorWithTangentialGhosts | ( | ) | const |
Return per-direction face iterators covering cut-cell faces that reach into the tangential ghost layer.
Each entry is an array of SpaceDim FaceIterators, one per coordinate direction. For the iterator in direction dir, the underlying IVS covers irregular cells in a box grown by 1 in the two directions tangential to dir; the dir extent stays at the valid box. Domain boundary faces are excluded (FaceStop::SurroundingNoBoundary). Callers require at least 1 ghost layer in cell data. For faces strictly inside the valid box, use getFaceIterator instead.
| Vector< RefCountedPtr< EBCoarseToFineInterp > > & PhaseRealm::getFineInterp | ( | ) | const |
Get piecewise linear ghost cell interpolation utility.
| Vector< RefCountedPtr< EBReflux > > & PhaseRealm::getFluxRegister | ( | ) | const |
Get flux register utility.
| Vector< RefCountedPtr< EBGhostCellInterpolator > > & PhaseRealm::getGhostCellInterpolator | ( | ) | const |
Get ghost cell interpolation utility.
| const Vector< RefCountedPtr< EBGradient > > & PhaseRealm::getGradientOp | ( | ) | const |
Get gradient object.
| const Vector< DisjointBoxLayout > & PhaseRealm::getGrids | ( | ) | const |
Get AMR grids.
| const EBAMRCellData & PhaseRealm::getIrregularCells | ( | ) | const |
Get the irregular-cell mask (value 1 in irregular/cut cells, 0 elsewhere).
| Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & PhaseRealm::getMultiCutFaceIterator | ( | ) | const |
Return face iterators restricted to multiply-cut faces in each valid grid box.
Each entry is an array of SpaceDim FaceIterators, one per coordinate direction. Only faces that abut at least one multiply-cut cell (cells with more than one VoF) are iterated. Faces are enumerated with FaceStop::SurroundingNoBoundary. Used as a second pass after a box loop over getSingleValuedFAB to avoid double-processing singly-cut faces.
| Vector< RefCountedPtr< LayoutData< VoFIterator > > > & PhaseRealm::getMultiCutVofIterator | ( | ) | const |
Return vof iterator for iterating over multiply-cut cells only (cells with more than one VoF)
| Vector< RefCountedPtr< EBMultigridInterpolator > > & PhaseRealm::getMultigridInterpolator | ( | ) | const |
Get multigrid interpolator.
| const Vector< RefCountedPtr< EBNonConservativeDivergence > > & PhaseRealm::getNonConservativeDivergence | ( | ) | const |
Get objects for computing non-conservative divergences.
| const EBAMRCellData & PhaseRealm::getNotCoveredCells | ( | ) | const |
Get the non-covered-cell mask (value 1 in regular/irregular cells, 0 in covered cells).
| EBAMRParticleMesh & PhaseRealm::getParticleMesh | ( | ) | const |
Get particle-mesh operator.
| Vector< RefCountedPtr< EBFluxRedistribution > > & PhaseRealm::getRedistributionOp | ( | ) | const |
Get the redistribution operators.
Get refinement ratios.
| const EBAMRCellData & PhaseRealm::getRegularCells | ( | ) | const |
Get the regular-cell mask (value 1 in regular cells, 0 elsewhere).
| EBAMRSurfaceDeposition & PhaseRealm::getSurfaceDeposition | ( | ) | const |
Get the surface deposition operator.
| Vector< RefCountedPtr< LayoutData< VoFIterator > > > & PhaseRealm::getVofIterator | ( | ) | const |
Return VoF iterators covering all cut-cells (singly- and multiply-cut) in each grid patch.
For a pass that covers only multiply-cut cells, use getMultiCutVofIterator instead.
|
delete |
Disallowed move assignment operator.
| [in] | a_other | Other realm |
|
delete |
Disallowed copy assignment operator.
| [in] | a_other | Other realm |
| bool PhaseRealm::queryOperator | ( | const std::string & | a_operator | ) | const |
Query if an AMR operator has been registered.
| [in] | a_operator | operator name |
| void PhaseRealm::registerOperator | ( | const std::string & | a_operator | ) |
Register an AMR operator.
| [in] | a_operator | Operator name |
Issues run-time error if a_operator can't be recognized
Regrid method for EBAMR base.
| [in] | a_lmin | Coarsest grid level that changed. |
This regrids EBLevelGrid and iterators
Regrid method for EBAMR operators.
| [in] | a_lmin | Coarsest grid level that changed. |
This regrids all operators.
Set grid method.
| [in] | a_grids | New grids |
| [in] | a_finestLevel | New finest grid level |
This sets m_grids to be a_grids, but does not perform a regrid of remaining members.
|
protected |
Coarsened fine-level EB grids.
m_eblgCoFi[lvl] holds the grids on level lvl that are a coarsening of the grids on lvl+1
|
protected |
Coarsened fine-level EB grids.
m_eblgFiCo[lvl] holds the refinement of the grids on level lvl-1
|
mutableprotected |
Face iterators over cut-cell faces in the valid box (FaceStop::SurroundingNoBoundary).
Domain boundary faces are excluded. Use this for cell-to-face averaging where boundary faces are fixed up separately. See getFaceIteratorNoBoundary.
|
mutableprotected |
Per-direction face iterators covering cut-cell faces that reach into the tangential ghost layer.
For the iterator in direction dir, the IVS covers irregular cells in a box grown by 1 in the two directions tangential to dir; the dir extent stays at the valid-box boundary. Domain boundary faces are excluded (FaceStop::SurroundingNoBoundary).