12#ifndef CD_EBLeastSquaresMultigridInterpolator_H
13#define CD_EBLeastSquaresMultigridInterpolator_H
19#include <EBLevelGrid.H>
20#include <QuadCFInterp.H>
21#include <AggStencil.H>
27#include <CD_NamespaceHeader.H>
366#include <CD_NamespaceFooter.H>
Supporting class for doing the coarse-side interpolation for multigrid.
Declaration of a class that can interpolate more ghost cells near the coarse-fine boundary near the E...
Declaration of cell positions.
Class for computing the required Taylor terms for doing the orthogonal extrapolation to the ghost cel...
Definition CD_CoarseInterpQuadCF.H:34
Multigrid interpolator class.
Definition CD_EBLeastSquaresMultigridInterpolator.H:48
virtual void coarseFineInterpH(LevelData< EBCellFAB > &a_phiFine, const Interval a_variables) const noexcept override
Do homogeneous interpolation.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:245
virtual void defineGhostRegions() noexcept
Define ghost cells to be filled in range m_ghostCF from each cut-cell.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:326
static constexpr int m_numStenComp
Number of variables in stencil data layouts.
Definition CD_EBLeastSquaresMultigridInterpolator.H:168
Copier m_copier
Copier for making copying into m_grownCoarData go faster.
Definition CD_EBLeastSquaresMultigridInterpolator.H:198
virtual int getGhostCF() const noexcept override
Return number of ghost cells across CF interface.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:92
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_aggFineStencils
Fine grid interpolation stencils.
Definition CD_EBLeastSquaresMultigridInterpolator.H:264
EBLevelGrid m_eblgFine
Fine grids.
Definition CD_EBLeastSquaresMultigridInterpolator.H:183
IntVect m_ghostVectorCoFi
Number of ghost cells on the coarsened-fine grids. Needed because the fine grids need some of the coa...
Definition CD_EBLeastSquaresMultigridInterpolator.H:219
LayoutData< std::map< std::pair< int, Side::LoHiSide >, Box > > m_cfivs
Regular coarse-fine interface boxes.
Definition CD_EBLeastSquaresMultigridInterpolator.H:278
EBLeastSquaresMultigridInterpolator(const EBLeastSquaresMultigridInterpolator &a_other)=delete
Disallowed copy constructor.
LayoutData< BaseIVFAB< VoFStencil > > m_coarStencils
Coarse-grid interpolation stencils.
Definition CD_EBLeastSquaresMultigridInterpolator.H:256
virtual void coarseFineInterp(LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phiCoar, const Interval a_variables) const noexcept override
Do inhomogeneous interpolation.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:188
virtual void regularCoarseFineInterp(LevelData< EBCellFAB > &a_finePhi, const LevelData< EBCellFAB > &a_coarPhi, const int a_fineVar, const int a_coarVar) const noexcept
Do regular coarse-fine interpolation as if the EB is not there.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:800
LayoutData< IntVectSet > m_ghostCells
Ghost cells that will be interpolated near the cut-cells.
Definition CD_EBLeastSquaresMultigridInterpolator.H:246
int m_refRat
Refinement factor between fine and coarse level.
Definition CD_EBLeastSquaresMultigridInterpolator.H:224
bool m_isDefined
Is defined or not.
Definition CD_EBLeastSquaresMultigridInterpolator.H:208
virtual std::pair< DerivStencil, DerivStencil > getInterpolationStencilRegular(const IntVect &a_fineGhost, const DataIndex &a_din, const int a_dir, const Side::LoHiSide a_side) const noexcept override
Get the interpolation stencil near the refinement boundary.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:98
EBLevelGrid m_eblgCoFi
Coarsened fine grids.
Definition CD_EBLeastSquaresMultigridInterpolator.H:193
int m_order
Interpolation order.
Definition CD_EBLeastSquaresMultigridInterpolator.H:235
LayoutData< CoarseInterpQuadCF > m_loCoarseInterpCF[SpaceDim]
For doing the coarse-side interpolation near the AMR interface.
Definition CD_EBLeastSquaresMultigridInterpolator.H:283
virtual 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) const noexcept
Build an interpolation stencil.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:597
LayoutData< CoarseInterpQuadCF > m_hiCoarseInterpCF[SpaceDim]
For doing the coarse-side interpolation near the AMR interface.
Definition CD_EBLeastSquaresMultigridInterpolator.H:288
LayoutData< VoFIterator > m_ghostIterFine
Iterator over ghost cells.
Definition CD_EBLeastSquaresMultigridInterpolator.H:203
virtual void makeAggStencils() noexcept
Build the AggStencil objects for faster stencil aggregation.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:752
LayoutData< BaseIVFAB< VoFStencil > > m_fineStencils
Fine-grid interpolation stencils.
Definition CD_EBLeastSquaresMultigridInterpolator.H:251
IntVect m_ghostVectorFine
Minimum number of ghost cells in input data.
Definition CD_EBLeastSquaresMultigridInterpolator.H:213
EBLeastSquaresMultigridInterpolator()=delete
Disallowed constructor.
virtual void defineStencilsEBCF() noexcept
Define stencils for interpolation across the EBCF refinement boundary.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:441
virtual std::pair< VoFStencil, VoFStencil > getInterpolationStencilEB(const VolIndex &a_fineGhost, const DataIndex &a_din) const noexcept override
Get an explicit stencil for a ghost cell near the refinement boundary.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:168
CellLocation m_dataLocation
How to interpret data locations.
Definition CD_EBLeastSquaresMultigridInterpolator.H:178
virtual void defineBuffers() noexcept
Define buffer data holder.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:403
int m_weight
Least squares weighting factor.
Definition CD_EBLeastSquaresMultigridInterpolator.H:240
static constexpr int m_stenComp
Component that interpolation stencil is stored at.
Definition CD_EBLeastSquaresMultigridInterpolator.H:163
EBLevelGrid m_eblgCoar
Coarse grids.
Definition CD_EBLeastSquaresMultigridInterpolator.H:188
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_aggCoarStencils
Coarse-grid interpolation stencils.
Definition CD_EBLeastSquaresMultigridInterpolator.H:271
int m_ghostCF
Number of ghost cells to fill across coarse-fine interface.
Definition CD_EBLeastSquaresMultigridInterpolator.H:230
static constexpr int m_comp
Component number. Used for setting interval when data is copied into EBLeastSquaresMultigridInterpola...
Definition CD_EBLeastSquaresMultigridInterpolator.H:173
virtual void defineCoarseInterp() noexcept
Define the coarse-sided interpolation stencils for doing the orthogonal derivatives.
Definition CD_EBLeastSquaresMultigridInterpolator.cpp:411
Multigrid interpolator class.
Definition CD_EBMGLeastSquaresInterpolator.H:48
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
Cell
Enum for distinguishing between cell locations.
Definition CD_Location.H:30