13#ifndef CD_PHASEREALM_H
14#define CD_PHASEREALM_H
20#include <DisjointBoxLayout.H>
21#include <ProblemDomain.H>
43#include <CD_NamespaceHeader.H>
46static const std::string s_outer_cf_region =
"outer_cf_region";
47static const std::string s_inner_cf_region =
"inner_cf_region";
48static const std::string s_outer_particle_halo =
"outer_particle_halo";
49static const std::string s_inner_particle_halo =
"inner_particle_halo";
51static const std::string s_eb_gradient =
"eb_gradient";
52static const std::string s_eb_irreg_interp =
"eb_irreg_interp";
53static const std::string s_eb_coar_ave =
"eb_coar_ave";
54static const std::string s_eb_fill_patch =
"eb_fill_patch";
55static const std::string s_eb_fine_interp =
"eb_fine_interp";
56static const std::string s_eb_flux_reg =
"eb_flux_reg";
58static const std::string s_noncons_div =
"eb_non_cons_div";
59static const std::string s_eb_multigrid =
"eb_multigrid";
61static const std::string s_particle_mesh =
"particle_mesh";
833#include <CD_NamespaceFooter.H>
Declaration of class for interpolating cell-centered data to cell centroids.
Declaration of base class for defining geometries.
Declaration of factory class for DomainFluxIFFAB.
Declaration of a BaseIFFAB wrapper that holds domain fluxes.
Declaration of a class for handling particle-mesh operations with AMR.
Declaration of a class for handling surface deposition of particles with EB and AMR.
Declaration of class for interpolating cell-centered data to cell centroids.
Declaration of conservative coarsening utility.
Declaration of an aggregated class for regrid operations.
Declaration of a class which can perform redistribution in an EB-AMR context.
Declaration of a class which interpolates ghost cells across the coarse-fine interface.
Declaration of a class which computes gradients in an EBAMR context.
Parent base class for multigrid interpolation.
Declaration of a class for computing non-conservative divergences.
Declaration of a class which can reflux over the coarse-fine interface.
Declaration of a static class for various load balancing operations.
Declaration of a wrapper for wrapping multifluid EBLevelGrids.
Declaration of a class for holding particles on an AMR hierarchy.
Type
Supported interpolation types.
Definition CD_CellCentroidInterpolation.H:44
Class for handling particle-mesh operations with AMR.
Definition CD_EBAMRParticleMesh.H:53
class for handling surface deposition of particles with EB and AMR.
Definition CD_EBAMRSurfaceDeposition.H:30
Type
Supported interpolation types.
Definition CD_EBCentroidInterpolation.H:44
Class that holds important things for doing AMR over a specific phase and processor distribution.
Definition CD_PhaseRealm.H:74
PhaseRealm & operator=(const PhaseRealm &&a_other)=delete
Disallowed move assignment operator.
Vector< RefCountedPtr< EBLevelGrid > > m_eblgFiCo
Coarsened fine-level EB grids.
Definition CD_PhaseRealm.H:576
Vector< RefCountedPtr< EBCoarseToFineInterp > > & getFineInterp() const
Get piecewise linear ghost cell interpolation utility.
Definition CD_PhaseRealm.cpp:1148
void defineNonConservativeDivergence(const int a_lmin)
Define non-conservative divergence stencils.
Definition CD_PhaseRealm.cpp:968
virtual ~PhaseRealm()
Destructor.
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > m_faceIterNoBoundary
Face iterators over cut-cell faces in the valid box (FaceStop::SurroundingNoBoundary).
Definition CD_PhaseRealm.H:623
int m_finestLevel
Finest grid level.
Definition CD_PhaseRealm.H:469
EBAMRSurfaceDeposition m_surfaceDeposition
For doing particle deposition onto surfaces.
Definition CD_PhaseRealm.H:681
Vector< RefCountedPtr< EBMultigridInterpolator > > m_multigridInterpolator
Multigrid interpolation utility.
Definition CD_PhaseRealm.H:646
const Vector< EBISLayout > & getEBISLayout() const
Get EBIS layout.
Definition CD_PhaseRealm.cpp:1018
const Vector< RefCountedPtr< EBNonConservativeDivergence > > & getNonConservativeDivergence() const
Get objects for computing non-conservative divergences.
Definition CD_PhaseRealm.cpp:1108
std::map< std::string, bool > m_operatorMap
Operator map for checking which ones are registered.
Definition CD_PhaseRealm.H:544
Vector< RefCountedPtr< EBCoarseFineParticleMesh > > & getEBCoarseFineParticleMesh() const
Get deposition operator.
Vector< RefCountedPtr< EBGhostCellInterpolator > > m_ghostCellInterpolator
Ghost cell interpolation utility.
Definition CD_PhaseRealm.H:651
Vector< RefCountedPtr< EBCoarAve > > m_coarAve
Coarsening operator.
Definition CD_PhaseRealm.H:641
bool queryOperator(const std::string &a_operator) const
Query if an AMR operator has been registered.
Definition CD_PhaseRealm.cpp:376
Vector< RefCountedPtr< EBCoarseToFineInterp > > m_ebFineInterp
Regridding utility (for filling new grid patches)
Definition CD_PhaseRealm.H:656
Vector< RefCountedPtr< EBLevelGrid > > m_eblgCoFi
Coarsened fine-level EB grids.
Definition CD_PhaseRealm.H:570
Vector< DisjointBoxLayout > m_grids
AMR grids.
Definition CD_PhaseRealm.H:549
void defineIrregSten()
Define data recentering stencils.
Definition CD_PhaseRealm.cpp:944
PhaseRealm()
Default constructor. Must subsequently call define.
Definition CD_PhaseRealm.cpp:29
const Vector< DisjointBoxLayout > & getGrids() const
Get AMR grids.
Definition CD_PhaseRealm.cpp:1006
Vector< RefCountedPtr< EBFluxRedistribution > > & getRedistributionOp() const
Get the redistribution operators.
Definition CD_PhaseRealm.cpp:1168
void defineEBCoarAve(const int a_lmin)
Define coarsening utility.
Definition CD_PhaseRealm.cpp:665
EBCentroidInterpolation::Type m_ebCentroidInterpolationType
Cell-center to cell-centroid interpolation method.
Definition CD_PhaseRealm.H:519
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & getFaceIteratorNoBoundary() const
Return face iterators over cut-cell faces in each valid grid box (FaceStop::SurroundingNoBoundary).
Definition CD_PhaseRealm.cpp:1060
void defineCoarToFineRedistOper(const int a_lmin, const int a_regsize)
Define operator redistribution utility.
EBAMRFAB m_levelset
Level-set function.
Definition CD_PhaseRealm.H:581
Vector< int > m_refinementRatios
Refinement ratios between levels.
Definition CD_PhaseRealm.H:529
const Vector< RefCountedPtr< CellCentroidInterpolation > > & getCellCentroidInterpolation() const
Get objects for interpolation from cell centers to centroids.
Definition CD_PhaseRealm.cpp:1088
void defineRedistOper(const int a_lmin, const int a_regsize)
Define operator redistribution utility.
Definition CD_PhaseRealm.cpp:820
Vector< RefCountedPtr< EBCoarAve > > & getCoarseAverage() const
Get coarsening operators.
Definition CD_PhaseRealm.cpp:1118
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & getMultiCutFaceIterator() const
Return face iterators restricted to multiply-cut faces in each valid grid box.
Definition CD_PhaseRealm.cpp:1072
const Vector< RefCountedPtr< EBLevelGrid > > & getEBLevelGridCoFi() const
Get coarsened fine grids.
Definition CD_PhaseRealm.cpp:1030
void defineEBMultigrid(const int a_lmin)
Define multigrid interpolation utility.
Definition CD_PhaseRealm.cpp:690
PhaseRealm(const PhaseRealm &&a_other)=delete
Disallowed move ctor.
Vector< RefCountedPtr< EBReflux > > & getFluxRegister() const
Get flux register utility.
Definition CD_PhaseRealm.cpp:1158
Vector< RefCountedPtr< EBFluxRedistribution > > m_redistributionOp
Redistribution utilities.
Definition CD_PhaseRealm.H:666
Vector< RefCountedPtr< EBLevelGrid > > m_eblg
EB level grids.
Definition CD_PhaseRealm.H:564
EBAMRCellData m_coveredCells
Cell mask with value 1 in covered cells and 0 elsewhere.
Definition CD_PhaseRealm.H:591
const EBAMRCellData & getIrregularCells() const
Get the irregular-cell mask (value 1 in irregular/cut cells, 0 elsewhere).
Definition CD_PhaseRealm.cpp:1226
EBAMRParticleMesh & getParticleMesh() const
Get particle-mesh operator.
Definition CD_PhaseRealm.cpp:1178
Vector< RefCountedPtr< CellCentroidInterpolation > > m_cellCentroidInterpolation
For interpolating data from cell centers to cell centroids.
Definition CD_PhaseRealm.H:686
Vector< RefCountedPtr< LayoutData< VoFIterator > > > & getVofIterator() const
Return VoF iterators covering all cut-cells (singly- and multiply-cut) in each grid patch.
Definition CD_PhaseRealm.cpp:1042
Vector< EBISLayout > m_ebisl
EBIS layouts.
Definition CD_PhaseRealm.H:559
void defineCoarToCoarRedistOper(const int a_lmin, const int a_regsize)
Define operator redistribution utility.
Vector< RefCountedPtr< LayoutData< VoFIterator > > > m_multiCutVofIter
Cut-cell iterator restricted to multiply-cut cells (cells with more than one VoF)
Definition CD_PhaseRealm.H:611
void defineEBLevelGrid(const int a_lmin)
Define EBLevelGrids.
Definition CD_PhaseRealm.cpp:397
int m_multigridInterpolationWeight
Multigrid interpolator weight (for least squares)
Definition CD_PhaseRealm.H:504
Vector< Real > m_dx
Grid resolutions.
Definition CD_PhaseRealm.H:524
void defineLevelSet(const int a_lmin, const int a_numGhost)
Put the level-set on the mesh.
Definition CD_PhaseRealm.cpp:529
RefCountedPtr< BaseIF > m_baseif
Implicit/SD function.
Definition CD_PhaseRealm.H:539
void registerOperator(const std::string &a_operator)
Register an AMR operator.
Definition CD_PhaseRealm.cpp:353
void defineMasks(const int a_lmin, const int a_numGhost)
Define the regular/covered/irregular cell masks.
Definition CD_PhaseRealm.cpp:584
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > m_multiCutFaceIter
Face iterators over multiply-cut faces in each valid grid box (SurroundingNoBoundary stop criterion)
Definition CD_PhaseRealm.H:636
void setGrids(const Vector< DisjointBoxLayout > &a_grids, const int a_finestLevel)
Set grid method.
Definition CD_PhaseRealm.cpp:98
int m_multigridInterpolationOrder
Multigrid interpolator order.
Definition CD_PhaseRealm.H:494
void defineFluxReg(const int a_lmin, const int a_regsize)
Define flux register utility.
Definition CD_PhaseRealm.cpp:789
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & getFaceIterator() const
Return face iterators over cut-cell faces in each valid grid box (FaceStop::SurroundingWithBoundary).
Definition CD_PhaseRealm.cpp:1054
void defineMultigridInjection(const int a_lmin)
Define multigrid injection utility.
EBAMRSurfaceDeposition & getSurfaceDeposition() const
Get the surface deposition operator.
Definition CD_PhaseRealm.cpp:1188
bool m_verbose
Verbose or not.
Definition CD_PhaseRealm.H:464
Vector< RefCountedPtr< LayoutData< VoFIterator > > > m_vofIter
Cut-cell iterator (all irregular cells)
Definition CD_PhaseRealm.H:606
Vector< RefCountedPtr< EBMultigridInterpolator > > & getMultigridInterpolator() const
Get multigrid interpolator.
Definition CD_PhaseRealm.cpp:1128
EBAMRParticleMesh m_particleMesh
For doing particle-mesh operations.
Definition CD_PhaseRealm.H:676
PhaseRealm(const PhaseRealm &a_other)=delete
Disallowed copy ctor.
const Vector< Real > & getDx() const
Returns resolutions.
Definition CD_PhaseRealm.cpp:1000
CellCentroidInterpolation::Type m_cellCentroidInterpolationType
Cell-center to cell-centroid interpolation method.
Definition CD_PhaseRealm.H:514
RealVect m_probLo
Lower-left corner of computational domain.
Definition CD_PhaseRealm.H:509
Vector< RefCountedPtr< EBCentroidInterpolation > > m_ebCentroidInterpolation
For interpolating data from cell centers to EB centroids.
Definition CD_PhaseRealm.H:691
const EBAMRFAB & getLevelset() const
Get level-set function.
Definition CD_PhaseRealm.cpp:1198
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > m_faceIter
Face iterators over cut-cell faces in the valid box (FaceStop::SurroundingWithBoundary).
Definition CD_PhaseRealm.H:616
int m_numGhostCells
Number of ghost cells in data holders.
Definition CD_PhaseRealm.H:474
const EBAMRCellData & getRegularCells() const
Get the regular-cell mask (value 1 in regular cells, 0 elsewhere).
Definition CD_PhaseRealm.cpp:1208
Vector< RefCountedPtr< EBNonConservativeDivergence > > m_nonConservativeDivergence
For computing non-conservative divergences.
Definition CD_PhaseRealm.H:696
void regridBase(const int a_lmin)
Regrid method for EBAMR base.
Definition CD_PhaseRealm.cpp:147
Vector< RefCountedPtr< EBGhostCellInterpolator > > & getGhostCellInterpolator() const
Get ghost cell interpolation utility.
Definition CD_PhaseRealm.cpp:1138
void defineEBCoarseToFineInterp(const int a_lmin)
Define ghost cell interpolation utility.
Definition CD_PhaseRealm.cpp:763
const Vector< RefCountedPtr< EBCentroidInterpolation > > & getEBCentroidInterpolation() const
Get objects for interpolation from cell centers to EB centroids.
Definition CD_PhaseRealm.cpp:1098
void defineGradSten(const int a_lmin)
Define gradient stencils.
Definition CD_PhaseRealm.cpp:891
PhaseRealm & operator=(const PhaseRealm &a_other)=delete
Disallowed copy assignment operator.
Vector< RefCountedPtr< EBReflux > > m_ebReflux
Flux register utility.
Definition CD_PhaseRealm.H:661
const Vector< RefCountedPtr< EBLevelGrid > > & getEBLevelGrid() const
Get EBLevelGrids.
Definition CD_PhaseRealm.cpp:1024
const Vector< RefCountedPtr< EBGradient > > & getGradientOp() const
Get gradient object.
Definition CD_PhaseRealm.cpp:1078
EBAMRCellData m_irregularCells
Cell mask with value 1 in irregular (cut) cells and 0 elsewhere.
Definition CD_PhaseRealm.H:601
const Vector< RefCountedPtr< EBLevelGrid > > & getEBLevelGridFiCo() const
Get refined grids.
Definition CD_PhaseRealm.cpp:1036
const Vector< int > & getRefinementRatios() const
Get refinement ratios.
Definition CD_PhaseRealm.cpp:994
void defineFillPatch(const int a_lmin)
Define regrid utility.
Definition CD_PhaseRealm.cpp:729
bool m_hasEbCf
Relic of an ancient past. Always true.
Definition CD_PhaseRealm.H:454
void defineParticleMesh()
Define particle mesh operator.
Definition CD_PhaseRealm.cpp:879
Vector< RefCountedPtr< LayoutData< VoFIterator > > > & getMultiCutVofIterator() const
Return vof iterator for iterating over multiply-cut cells only (cells with more than one VoF)
Definition CD_PhaseRealm.cpp:1048
int m_multigridInterpolationRadius
Multigrid interpolator radius.
Definition CD_PhaseRealm.H:499
EBAMRCellData m_regularCells
Cell mask with value 1 in regular cells and 0 elsewhere.
Definition CD_PhaseRealm.H:586
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > & getFaceIteratorWithTangentialGhosts() const
Return per-direction face iterators covering cut-cell faces that reach into the tangential ghost laye...
Definition CD_PhaseRealm.cpp:1066
const RefCountedPtr< EBIndexSpace > & getEBIndexSpace() const
Return the EB index space.
Definition CD_PhaseRealm.cpp:988
void defineFineToCoarRedistOper(const int a_lmin, const int a_regsize)
Define operator redistribution utility.
bool m_isDefined
True if things on this phase can be defined. False otherwise. Only used internally.
Definition CD_PhaseRealm.H:449
Vector< RefCountedPtr< EBGradient > > m_gradientOp
Gradient operator.
Definition CD_PhaseRealm.H:671
void preRegrid()
Perform pre-regrid operations.
Definition CD_PhaseRealm.cpp:112
void 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.
Definition CD_PhaseRealm.cpp:47
EBAMRCellData m_notCoveredCells
Cell mask with value 1 in non-covered (regular and irregular) cells and 0 in covered cells.
Definition CD_PhaseRealm.H:596
const EBAMRCellData & getNotCoveredCells() const
Get the non-covered-cell mask (value 1 in regular/irregular cells, 0 in covered cells).
Definition CD_PhaseRealm.cpp:1220
const EBAMRCellData & getCoveredCells() const
Get the covered-cell mask (value 1 in covered cells, 0 elsewhere).
Definition CD_PhaseRealm.cpp:1214
RefCountedPtr< EBIndexSpace > m_ebis
EB index space.
Definition CD_PhaseRealm.H:534
int m_numLsfGhostCells
Number of ghost cells in level-set function (on the mesh)
Definition CD_PhaseRealm.H:484
bool m_profile
Profile or not.
Definition CD_PhaseRealm.H:459
void defineVofIterator(const int a_lmin)
Define vof iterators.
Definition CD_PhaseRealm.cpp:445
int m_redistributionRadius
Redistribution radius.
Definition CD_PhaseRealm.H:489
Vector< ProblemDomain > m_domains
Problem domains.
Definition CD_PhaseRealm.H:554
const Vector< ProblemDomain > & getDomains() const
Get problem domains.
Definition CD_PhaseRealm.cpp:1012
int m_numEbGhostsCells
Number of ghost cells in EBLevelGrid/EBISLayout/EBISBox.
Definition CD_PhaseRealm.H:479
Vector< RefCountedPtr< LayoutData< std::array< FaceIterator, SpaceDim > > > > m_faceIterTanGhost
Per-direction face iterators covering cut-cell faces that reach into the tangential ghost layer.
Definition CD_PhaseRealm.H:631
void regridOperators(const int a_lmin)
Regrid method for EBAMR operators.
Definition CD_PhaseRealm.cpp:203
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26