chombo-discharge
Loading...
Searching...
No Matches
CD_CellCentroidInterpolation.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_CELLCENTROIDINTERPOLATION_H
14#define CD_CELLCENTROIDINTERPOLATION_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
59
64
71 CellCentroidInterpolation(const EBLevelGrid& a_eblg, const Real& a_dx, const Type& a_interpolationType) noexcept;
72
76 virtual ~CellCentroidInterpolation() 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 virtual void
102 interpolate(LevelData<EBCellFAB>& a_centroidData, const LevelData<EBCellFAB>& a_cellData) const noexcept;
103
108 virtual void
109 interpolate(LevelData<EBCellFAB>& a_data) const noexcept;
110
118 template <typename T>
119 void
120 interpolate(T& a_centroidData, const EBCellFAB& a_cellData, const DataIndex& a_din) const noexcept;
121
122protected:
127
131 EBLevelGrid m_eblg;
132
137
141 Real m_dx;
142
146 mutable LayoutData<VoFIterator> m_vofIterator;
147
151 LayoutData<BaseIVFAB<VoFStencil>> m_interpStencils;
152
161 virtual bool
162 getLinearStencil(VoFStencil& a_stencil,
163 const VolIndex& a_vof,
164 const EBISBox& a_ebisBox,
165 const ProblemDomain& a_domain) const noexcept;
166
175 virtual bool
176 getTaylorExtrapolationStencil(VoFStencil& a_stencil,
177 const VolIndex& a_vof,
178 const EBISBox& a_ebisBox,
179 const ProblemDomain& a_domain) const noexcept;
180
189 virtual bool
190 getLeastSquaresStencil(VoFStencil& a_stencil,
191 const VolIndex& a_vof,
192 const EBISBox& a_ebisBox,
193 const ProblemDomain& a_domain) const noexcept;
194
203 virtual bool
204 getPiecewiseLinearStencil(VoFStencil& a_stencil,
205 const VolIndex& a_vof,
206 const EBISBox& a_ebisBox,
207 const ProblemDomain& a_domain) const noexcept;
208
215 inline Real
216 MinMod(const Real& a_dwl, const Real& a_dwr) const noexcept;
217
224 inline Real
225 MonotonizedCentral(const Real& a_dwl, const Real& a_dwr) const noexcept;
226
233 inline Real
234 Superbee(const Real& a_dwl, const Real& a_dwr) const noexcept;
235};
236
237#include <CD_NamespaceFooter.H>
238
240
241#endif
Implementation of CD_CellCentroidInterpolation.H.
Class for interpolating cell-centered data to the cell centroid.
Definition CD_CellCentroidInterpolation.H:38
LayoutData< VoFIterator > m_vofIterator
VoF iterator for iterating through the cut-cells.
Definition CD_CellCentroidInterpolation.H:146
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_CellCentroidInterpolation.cpp:160
LayoutData< BaseIVFAB< VoFStencil > > m_interpStencils
Stencils. This is only populated when the interpolation is expressible as a stencil.
Definition CD_CellCentroidInterpolation.H:151
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_CellCentroidInterpolation.cpp:197
virtual void interpolate(LevelData< BaseIVFAB< Real > > &a_centroidData, const LevelData< EBCellFAB > &a_cellData) const noexcept
Function for interpolating data.
Definition CD_CellCentroidInterpolation.cpp:272
bool m_isDefined
Defined or not.
Definition CD_CellCentroidInterpolation.H:126
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_CellCentroidInterpolation.cpp:177
Real MonotonizedCentral(const Real &a_dwl, const Real &a_dwr) const noexcept
Monotonized central difference slope limiter.
Definition CD_CellCentroidInterpolationImplem.H:174
Real Superbee(const Real &a_dwl, const Real &a_dwr) const noexcept
Superbee slope limiter.
Definition CD_CellCentroidInterpolationImplem.H:189
EBLevelGrid m_eblg
Grids.
Definition CD_CellCentroidInterpolation.H:131
Type
Supported interpolation types.
Definition CD_CellCentroidInterpolation.H:44
Real m_dx
Grid resolution.
Definition CD_CellCentroidInterpolation.H:141
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_CellCentroidInterpolation.cpp:45
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_CellCentroidInterpolation.cpp:225
CellCentroidInterpolation() noexcept
Default constructor. Must call the define function afterwards.
Definition CD_CellCentroidInterpolation.cpp:24
Type m_interpolationType
Interpolation type.
Definition CD_CellCentroidInterpolation.H:136
Real MinMod(const Real &a_dwl, const Real &a_dwr) const noexcept
Minmod slope function.
Definition CD_CellCentroidInterpolationImplem.H:162
Static class containing useful routines for (weighted) least squares polynomial reconstruction.
Definition CD_LeastSquares.H:32