14#ifndef CD_EBMULTIGRIDINTERPOLATOR_H
15#define CD_EBMULTIGRIDINTERPOLATOR_H
21#include <EBLevelGrid.H>
22#include <QuadCFInterp.H>
23#include <AggStencil.H>
27#include <CD_NamespaceHeader.H>
355#include <CD_NamespaceFooter.H>
Declaration of cell positions.
Multigrid interpolator class.
Definition CD_EBMGLeastSquaresInterpolator.H:49
void slowCoarseFineInterpH(EBCellFAB &a_phiFine, const Interval a_variables, const DataIndex &a_dit) const
Do homogeneous coarse-fine interpolation on a grid patch.
RefCountedPtr< QuadCFInterp > m_scalarInterpolator
For regular interpolation of scalar quantities.
Definition CD_EBMGLeastSquaresInterpolator.H:184
void defineStencilsEBCF()
Define stencils for interpolation across the EBCF refinement boundary.
void coarseFineInterpH(LevelData< EBCellFAB > &a_phiFine, const Interval a_variables) const
Do homogeneous interpolation.
BoxLayoutData< EBCellFAB > m_grownCoarData
Coarsened data.
Definition CD_EBMGLeastSquaresInterpolator.H:219
void makeAggStencils()
Build the AggStencil objects for faster stencil aggregation.
void coarseFineInterpH(EBCellFAB &a_phiFine, const Interval a_variables, const DataIndex &a_dit) const
Do homogeneous coarse-fine interpolation on a grid patch.
EBLevelGrid m_eblgFine
Fine grids.
Definition CD_EBMGLeastSquaresInterpolator.H:199
static constexpr int m_comp
Component number. Used for setting interval when data is copied into EBMultigridInterpolator's buffer...
Definition CD_EBMGLeastSquaresInterpolator.H:179
EBMultigridInterpolator(const EBMultigridInterpolator &a_other)=delete
Disallowed copy constructor.
void defineGhostRegions()
Define ghost cells to be filled in range m_ghostCF from each cut-cell.
static constexpr int m_stenComp
Component that interpolation stencil is stored at.
Definition CD_EBMGLeastSquaresInterpolator.H:169
EBLevelGrid m_eblgCoFi
Refined coarse grids.
Definition CD_EBMGLeastSquaresInterpolator.H:209
void slowCoarseFineInterp(LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phiCoar, const Interval a_variables)
Do inhomogeneous interpolation.
void slowCoarseFineInterpH(LevelData< EBCellFAB > &a_phiFine, const Interval a_variables) const
Do homogeneous interpolation.
int getGhostCF() const
Return number of ghost cells across CF interface.
void defineGrids(const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblgCoar)
Define grids.
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_aggFineStencils
Fine grid interpolation stencils.
Definition CD_EBMGLeastSquaresInterpolator.H:274
static constexpr int m_numStenComp
Number of variables in stencil data layouts.
Definition CD_EBMGLeastSquaresInterpolator.H:174
~EBMultigridInterpolator()
Destructor (does nothing)
Definition CD_EBMultigridInterpolator.cpp:25
EBMultigridInterpolator(const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblgCoar, const CellLocation a_dataLocation, const IntVect &a_ghostVector, const int a_refRat, const int a_ghostCF, const int a_order, const int a_weighting=0)
Full constructor.
void defineBuffers()
Define data holders.
CellLocation m_dataLocation
How to interpret data locations.
Definition CD_EBMGLeastSquaresInterpolator.H:194
IntVect m_ghostVector
Minimum number of ghost cells in input data.
Definition CD_EBMGLeastSquaresInterpolator.H:229
BoxLayout m_grownCoarBoxesLayout
Grown box layout on the coarse level.
Definition CD_EBMGLeastSquaresInterpolator.H:214
LayoutData< BaseIVFAB< VoFStencil > > m_fineStencils
Fine-grid interpolation stencils.
Definition CD_EBMGLeastSquaresInterpolator.H:261
int m_ghostCF
Number of ghost cells to fill across coarse-fine interface.
Definition CD_EBMGLeastSquaresInterpolator.H:240
LayoutData< BaseIVFAB< VoFStencil > > m_coarStencils
Coarse-grid interpolation stencils.
Definition CD_EBMGLeastSquaresInterpolator.H:266
LayoutData< VoFIterator > m_vofIterFine
Iterator over ghost cells.
Definition CD_EBMGLeastSquaresInterpolator.H:224
int m_weight
Least squares weighting factor.
Definition CD_EBMGLeastSquaresInterpolator.H:250
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_aggCoarStencils
Coarse-grid interpolation stencils.
Definition CD_EBMGLeastSquaresInterpolator.H:281
RefCountedPtr< QuadCFInterp > m_vectorInterpolator
For regular interpolation of vector quantities.
Definition CD_EBMGLeastSquaresInterpolator.H:189
EBLevelGrid m_eblgCoar
Coarse grids.
Definition CD_EBMGLeastSquaresInterpolator.H:204
int m_refRat
Refinement factor between fine and coarse level.
Definition CD_EBMGLeastSquaresInterpolator.H:234
LayoutData< std::map< std::pair< int, Side::LoHiSide >, Box > > m_cfivs
Regular coarse-fine interface boxes.
Definition CD_EBMGLeastSquaresInterpolator.H:288
EBMultigridInterpolator()=delete
Disallowed constructor.
Definition CD_EBMultigridInterpolator.cpp:20
int m_order
Interpolation order.
Definition CD_EBMGLeastSquaresInterpolator.H:245
bool getStencil(VoFStencil &a_stencilFine, VoFStencil &a_stencilCoar, const CellLocation &a_dataLocation, const VolIndex &a_ghostVofFine, const VolIndex &a_ghostVofCoar, const EBISBox &a_ebisboxFine, const EBISBox &a_ebisboxCoar, const DenseIntVectSet &a_validFineCells, const DenseIntVectSet &a_validCoarCells, const Real &a_dxFine, const Real &a_dxCoar, const int &a_order, const int &a_weight)
Build an interpolation stencil.
LayoutData< IntVectSet > m_ghostCells
Ghost cells that will be interpolated near the cut-cells.
Definition CD_EBMGLeastSquaresInterpolator.H:256
void coarseFineInterp(LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phiCoar, const Interval a_variables)
Do inhomogeneous interpolation.
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
Cell
Enum for distinguishing between cell locations.
Definition CD_Location.H:31