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>
78 const EBLevelGrid& a_eblgCoFi,
79 const EBLevelGrid& a_eblgCoar,
81 const IntVect& a_ghostVector,
85 const int a_weighting = 0) noexcept;
106 const LevelData<EBCellFAB>& a_phiCoar,
107 const Interval a_variables) const noexcept override;
115 coarseFineInterpH(LevelData<EBCellFAB>& a_phiFine, const Interval a_variables) const noexcept override;
127 coarseFineInterpH(EBCellFAB& a_phiFine, const Interval a_variables, const DataIndex& a_dit) const noexcept override;
248 LayoutData<std::map<std::pair<
int, Side::LoHiSide>, Box>>
m_cfivs;
309 VoFStencil& a_stencilCoar,
311 const VolIndex& a_ghostVofFine,
312 const VolIndex& a_ghostVofCoar,
313 const EBISBox& a_ebisboxFine,
314 const EBISBox& a_ebisboxCoar,
315 const DenseIntVectSet& a_validFineCells,
316 const DenseIntVectSet& a_validCoarCells,
317 const Real& a_dxFine,
318 const Real& a_dxCoar,
320 const
int& a_weight) const noexcept;
331 const LevelData<EBCellFAB>& a_coarPhi,
333 const
int a_coarVar) const noexcept;
336 #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:33
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:155
virtual void defineGhostRegions() noexcept
Define ghost cells to be filled in range m_ghostCF from each cut-cell.
Definition: CD_EBLeastSquaresMultigridInterpolator.cpp:236
static constexpr int m_numStenComp
Number of variables in stencil data layouts.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:138
Copier m_copier
Copier for making copying into m_grownCoarData go faster.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:168
virtual int getGhostCF() const noexcept override
Return number of ghost cells across CF interface.
Definition: CD_EBLeastSquaresMultigridInterpolator.cpp:87
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_aggFineStencils
Fine grid interpolation stencils.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:234
EBLevelGrid m_eblgFine
Fine grids.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:153
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:189
LayoutData< std::map< std::pair< int, Side::LoHiSide >, Box > > m_cfivs
Regular coarse-fine interface boxes.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:248
EBLeastSquaresMultigridInterpolator(const EBLeastSquaresMultigridInterpolator &a_other)=delete
Disallowed copy constructor.
LayoutData< BaseIVFAB< VoFStencil > > m_coarStencils
Coarse-grid interpolation stencils.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:226
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:98
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:710
LayoutData< IntVectSet > m_ghostCells
Ghost cells that will be interpolated near the cut-cells.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:216
int m_refRat
Refinement factor between fine and coarse level.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:194
bool m_isDefined
Is defined or not.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:178
EBLevelGrid m_eblgCoFi
Coarsened fine grids.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:163
int m_order
Interpolation order.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:205
LayoutData< CoarseInterpQuadCF > m_loCoarseInterpCF[SpaceDim]
For doing the coarse-side interpolation near the AMR interface.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:253
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:507
LayoutData< CoarseInterpQuadCF > m_hiCoarseInterpCF[SpaceDim]
For doing the coarse-side interpolation near the AMR interface.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:258
LayoutData< VoFIterator > m_ghostIterFine
Iterator over ghost cells.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:173
virtual void makeAggStencils() noexcept
Build the AggStencil objects for faster stencil aggregation.
Definition: CD_EBLeastSquaresMultigridInterpolator.cpp:662
LayoutData< BaseIVFAB< VoFStencil > > m_fineStencils
Fine-grid interpolation stencils.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:221
IntVect m_ghostVectorFine
Minimum number of ghost cells in input data.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:183
EBLeastSquaresMultigridInterpolator()=delete
Disallowed constructor.
virtual void defineStencilsEBCF() noexcept
Define stencils for interpolation across the EBCF refinement boundary.
Definition: CD_EBLeastSquaresMultigridInterpolator.cpp:351
CellLocation m_dataLocation
How to interpret data locations.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:148
virtual void defineBuffers() noexcept
Define buffer data holder.
Definition: CD_EBLeastSquaresMultigridInterpolator.cpp:313
int m_weight
Least squares weighting factor.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:210
static constexpr int m_stenComp
Component that interpolation stencil is stored at.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:133
EBLevelGrid m_eblgCoar
Coarse grids.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:158
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_aggCoarStencils
Coarse-grid interpolation stencils.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:241
int m_ghostCF
Number of ghost cells to fill across coarse-fine interface.
Definition: CD_EBLeastSquaresMultigridInterpolator.H:200
static constexpr int m_comp
Component number. Used for setting interval when data is copied into EBLeastSquaresMultigridInterpola...
Definition: CD_EBLeastSquaresMultigridInterpolator.H:143
virtual void defineCoarseInterp() noexcept
Define the coarse-sided interpolation stencils for doing the orthogonal derivatives.
Definition: CD_EBLeastSquaresMultigridInterpolator.cpp:321
Multigrid interpolator class.
Definition: CD_EBMGLeastSquaresInterpolator.H:48
Cell
Enum for distinguishing between cell locations.
Definition: CD_Location.H:30