chombo-discharge
Loading...
Searching...
No Matches
CD_EBMGLeastSquaresInterpolator.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
14#ifndef CD_EBMULTIGRIDINTERPOLATOR_H
15#define CD_EBMULTIGRIDINTERPOLATOR_H
16
17// Std includes
18#include <map>
19
20// Chombo includes
21#include <EBLevelGrid.H>
22#include <QuadCFInterp.H>
23#include <AggStencil.H>
24
25// Our includes
26#include <CD_Location.H>
27#include <CD_NamespaceHeader.H>
28
49{
50public:
55
59 EBMultigridInterpolator() = delete;
60
65
81 const int a_refRat,
82 const int a_ghostCF,
83 const int a_order,
84 const int a_weighting = 0);
85
90
95 int
96 getGhostCF() const;
97
104 void
106
116 void
119 const Interval a_variables);
120
126 void
128
137 void
139
149 void
151
162 void
164
165protected:
169 static constexpr int m_stenComp = 0;
170
174 static constexpr int m_numStenComp = 1;
175
179 static constexpr int m_comp = 0;
180
185
190
195
200
205
210
215
220
225
230
235
241
246
251
257
262
267
275
282
289
293 void
295
301 void
303
307 void
309
313 void
315
319 void
321
339 bool
345 const EBISBox& a_ebisboxFine,
346 const EBISBox& a_ebisboxCoar,
349 const Real& a_dxFine,
350 const Real& a_dxCoar,
351 const int& a_order,
352 const int& a_weight);
353};
354
355#include <CD_NamespaceFooter.H>
356
357#endif
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