chombo-discharge
Loading...
Searching...
No Matches
CD_EBCentroidInterpolation.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
13#ifndef CD_EBCENTROIDINTERPOLATION_H
14#define CD_EBCENTROIDINTERPOLATION_H
15
16// Chombo includes
17#include <EBLevelGrid.H>
18#include <LevelData.H>
19#include <LayoutData.H>
20#include <VoFIterator.H>
21#include <Stencils.H>
22#include <BaseIVFAB.H>
23#include <EBCellFAB.H>
24
25// Our includes
26#include <CD_NamespaceHeader.H>
27
38{
39public:
43 enum class Type
44 {
45 Constant, // Uses cell-centered value
46 Linear, // Uses bi/tri-linear interpolation
47 Taylor, // Uses Taylor-extrapolation
48 LeastSquares, // Uses least-squares reconstruction
49 PiecewiseLinear, // Uses piecewise-linear interpolation
50 MinMod, // Uses slope limiter with minmod slope
51 MonotonizedCentral, // Uses slope limiter with van Leer limiter
52 Superbee // Uses slope limiter with superbee limiter
53 };
54
58 EBCentroidInterpolation() noexcept;
59
64
71 EBCentroidInterpolation(const EBLevelGrid& a_eblg, const Real& a_dx, const Type& a_interpolationType) noexcept;
72
76 virtual ~EBCentroidInterpolation() noexcept;
77
84 virtual void
85 define(const EBLevelGrid& a_eblg, const Real& a_dx, const Type& a_interpolationType) noexcept;
86
92 virtual void
93 interpolate(LevelData<BaseIVFAB<Real>>& a_centroidData, const LevelData<EBCellFAB>& a_cellData) const noexcept;
94
101 void
102 interpolate(BaseIVFAB<Real>& a_centroidData, const EBCellFAB& a_cellData, const DataIndex& a_din) const noexcept;
103
104protected:
109
113 EBLevelGrid m_eblg;
114
119
123 Real m_dx;
124
128 mutable LayoutData<VoFIterator> m_vofIterator;
129
133 LayoutData<BaseIVFAB<VoFStencil>> m_interpStencils;
134
143 virtual bool
144 getLinearStencil(VoFStencil& a_stencil,
145 const VolIndex& a_vof,
146 const EBISBox& a_ebisBox,
147 const ProblemDomain& a_domain) const noexcept;
148
157 virtual bool
158 getTaylorExtrapolationStencil(VoFStencil& a_stencil,
159 const VolIndex& a_vof,
160 const EBISBox& a_ebisBox,
161 const ProblemDomain& a_domain) const noexcept;
162
171 virtual bool
172 getLeastSquaresStencil(VoFStencil& a_stencil,
173 const VolIndex& a_vof,
174 const EBISBox& a_ebisBox,
175 const ProblemDomain& a_domain) const noexcept;
176
185 virtual bool
186 getPiecewiseLinearStencil(VoFStencil& a_stencil,
187 const VolIndex& a_vof,
188 const EBISBox& a_ebisBox,
189 const ProblemDomain& a_domain) const noexcept;
190
197 static inline Real
198 MinMod(const Real& a_dwl, const Real& a_dwr) noexcept;
199
206 static inline Real
207 MonotonizedCentral(const Real& a_dwl, const Real& a_dwr) noexcept;
208
215 static inline Real
216 Superbee(const Real& a_dwl, const Real& a_dwr) noexcept;
217};
218
219#include <CD_NamespaceFooter.H>
220
221#endif
Class for interpolating cell-centered data to the EB centroid.
Definition CD_EBCentroidInterpolation.H:38
EBLevelGrid m_eblg
Grids.
Definition CD_EBCentroidInterpolation.H:113
virtual bool getLinearStencil(VoFStencil &a_stencil, const VolIndex &a_vof, const EBISBox &a_ebisBox, const ProblemDomain &a_domain) const noexcept
Utility function for fetching a bilinear/trilinear stencil.
Definition CD_EBCentroidInterpolation.cpp:161
virtual bool getPiecewiseLinearStencil(VoFStencil &a_stencil, const VolIndex &a_vof, const EBISBox &a_ebisBox, const ProblemDomain &a_domain) const noexcept
Utility function for fetching a piecewise linear stencil.
Definition CD_EBCentroidInterpolation.cpp:226
EBCentroidInterpolation() noexcept
Default constructor. Must call the define function afterwards.
Definition CD_EBCentroidInterpolation.cpp:24
virtual void interpolate(LevelData< BaseIVFAB< Real > > &a_centroidData, const LevelData< EBCellFAB > &a_cellData) const noexcept
Function for interpolating data.
Definition CD_EBCentroidInterpolation.cpp:273
bool m_isDefined
Defined or not.
Definition CD_EBCentroidInterpolation.H:108
Real m_dx
Grid resolution.
Definition CD_EBCentroidInterpolation.H:123
static Real Superbee(const Real &a_dwl, const Real &a_dwr) noexcept
Superbee slope limiter.
Definition CD_EBCentroidInterpolation.cpp:461
LayoutData< VoFIterator > m_vofIterator
VoF iterator for iterating through the cut-cells.
Definition CD_EBCentroidInterpolation.H:128
Type
Supported interpolation types.
Definition CD_EBCentroidInterpolation.H:44
static Real MonotonizedCentral(const Real &a_dwl, const Real &a_dwr) noexcept
Monotonized central difference slope limiter.
Definition CD_EBCentroidInterpolation.cpp:446
virtual bool getTaylorExtrapolationStencil(VoFStencil &a_stencil, const VolIndex &a_vof, const EBISBox &a_ebisBox, const ProblemDomain &a_domain) const noexcept
Utility function for fetching a Taylor-extrapolation stencil.
Definition CD_EBCentroidInterpolation.cpp:178
Type m_interpolationType
Interpolation type.
Definition CD_EBCentroidInterpolation.H:118
virtual bool getLeastSquaresStencil(VoFStencil &a_stencil, const VolIndex &a_vof, const EBISBox &a_ebisBox, const ProblemDomain &a_domain) const noexcept
Utility function for fetching a least-squares based interpolation stencil.
Definition CD_EBCentroidInterpolation.cpp:198
virtual void define(const EBLevelGrid &a_eblg, const Real &a_dx, const Type &a_interpolationType) noexcept
Define function. Puts object in usable state.
Definition CD_EBCentroidInterpolation.cpp:46
static Real MinMod(const Real &a_dwl, const Real &a_dwr) noexcept
Minmod slope function.
Definition CD_EBCentroidInterpolation.cpp:434
LayoutData< BaseIVFAB< VoFStencil > > m_interpStencils
Stencils. This is only populated when the interpolation is expressible as a stencil.
Definition CD_EBCentroidInterpolation.H:133
Static class containing useful routines for (weighted) least squares polynomial reconstruction.
Definition CD_LeastSquares.H:32