chombo-discharge
Loading...
Searching...
No Matches
CD_EBGradient.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_EBGRADIENT_H
14#define CD_EBGRADIENT_H
15
16// Std includes
17#include <array>
18
19// Chombo includes
20#include <EBLevelGrid.H>
21#include <AggStencil.H>
22#include <FaceIterator.H>
23
24// Our includes
25#include <CD_Location.H>
26#include <CD_NamespaceHeader.H>
27
48{
49public:
54
58 EBGradient() = delete;
59
63 EBGradient(const EBGradient& a_other) = delete;
64
80 const bool a_hasFine,
81 const Real a_dx,
82 const int a_refRat,
83 const int a_order,
84 const int a_weighting,
85 const IntVect a_ghostVector) noexcept;
86
90 virtual ~EBGradient() noexcept;
91
104 virtual void
108 const bool a_hasFine,
110 const int a_refRat,
111 const int a_order,
112 const int a_weighting,
114
120 virtual void
122
131 virtual void
133
140 virtual void
144
150
155
160
165
170
175
180
185
190
195
200
205
210
215
220
225
231
236
241
247
253
259
266
270 virtual void
272
278 virtual void
280
286 virtual void
288
293 virtual void
295
299 virtual void
301
311 virtual bool
317
335 virtual bool
347 const int& a_order,
349
358 virtual bool
362
366 virtual void
368};
369
370#include <CD_NamespaceFooter.H>
371
372#endif
Declaration of cell positions.
Class for computing gradients in an EBAMR context.
Definition CD_EBGradient.H:48
virtual ~EBGradient() noexcept
Destructor (does nothing)
Definition CD_EBGradient.cpp:123
EBGradient(const EBGradient &a_other)=delete
Disallowed copy constructor.
virtual void makeAggStencils() noexcept
Turn raw stencils into optimized AggStencils.
Definition CD_EBGradient.cpp:1067
virtual bool isFiniteDifferenceStencilValid(const IntVect &a_ivCoar, const EBISBox &a_ebisBox, const FArrayBox &a_invalidRegion) const noexcept
Check if a cell can produce valid finite difference stencils.
Definition CD_EBGradient.cpp:510
bool m_hasEBCF
True if we have EBCF crossings that require special stencils.
Definition CD_EBGradient.H:189
virtual void computeLevelGradient(LevelData< EBCellFAB > &a_gradient, const LevelData< EBCellFAB > &a_phi) const noexcept
Compute gradient using data on the input level only.
Definition CD_EBGradient.cpp:129
EBLevelGrid m_eblgFine
Fine grids.
Definition CD_EBGradient.H:169
virtual void define(const EBLevelGrid &a_eblg, const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblgFiCo, const bool a_hasFine, const Real a_dx, const int a_refRat, const int a_order, const int a_weighting, const IntVect a_ghostVector) noexcept
Define function.
Definition CD_EBGradient.cpp:50
EBLevelGrid m_eblgFiCo
Refined coarse grids.
Definition CD_EBGradient.H:174
Real m_dxFine
Resolution on finer level.
Definition CD_EBGradient.H:199
virtual void computeAMRGradient(LevelData< EBCellFAB > &a_gradient, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiFine) const noexcept
Compute gradient using two-level stencils (matching at EBCF).
Definition CD_EBGradient.cpp:265
bool m_isDefined
Is defined or not.
Definition CD_EBGradient.H:179
virtual void defineStencilsEBCF(const LevelData< FArrayBox > &a_coarMaskInvalid) noexcept
Define stencils for interpolation across the EBCF refinement boundary.
Definition CD_EBGradient.cpp:651
Real m_dx
Resolution on this level.
Definition CD_EBGradient.H:194
virtual bool getLeastSquaresStencil(VoFStencil &a_stencilCoar, VoFStencil &a_stencilFine, const VolIndex &a_vofCoar, const CellLocation &a_dataLocation, const EBISLayout &a_ebislCoar, const EBISLayout &a_ebislFine, const DataIndex &a_dit, const DenseIntVectSet &a_validCellsCoar, const DenseIntVectSet &a_validCellsFine, const Real &a_dxCoar, const Real &a_dxFine, const int &a_order, const int &a_weight) const noexcept
Build a gradient stencil using least squares.
Definition CD_EBGradient.cpp:851
int m_weighting
Weight (for least squares)
Definition CD_EBGradient.H:209
LayoutData< BaseIVFAB< VoFStencil > > m_ebcfStencilsFine
Part of EBCF gradient stencil which reaches into the coarse level.
Definition CD_EBGradient.H:240
bool m_hasFine
True if we have a finer level (m_eblgFine is defined)
Definition CD_EBGradient.H:184
LayoutData< BaseIVFAB< VoFStencil > > m_levelStencils
Stencils for boundaries and cut-cells.
Definition CD_EBGradient.H:230
LayoutData< RefCountedPtr< AggStencil< EBCellFAB, EBCellFAB > > > m_aggLevelStencils[SpaceDim]
AggStencils for boundaries and cut-cells. Provides faster application of m_levelStencils.
Definition CD_EBGradient.H:246
Copier m_copier
Pre-built copier for making copying from m_eblg to m_eblgFiCo go faster.
Definition CD_EBGradient.H:224
virtual void defineIteratorsEBCF(const LevelData< FArrayBox > &a_coarMaskCF, const LevelData< FArrayBox > &a_coarMaskInvalid) noexcept
Define iterators and cells that need modified stencils.
Definition CD_EBGradient.cpp:555
int m_refRat
Refinement factor between fine and coarse level.
Definition CD_EBGradient.H:214
int m_order
Desired order for least squares stencils.
Definition CD_EBGradient.H:204
EBLevelGrid m_eblg
Grids.
Definition CD_EBGradient.H:164
static constexpr int m_comp
Scalar component to reach into.
Definition CD_EBGradient.H:149
IntVect m_ghostVector
Number of ghost cells in incoming data holders.
Definition CD_EBGradient.H:219
virtual void defineBuffers() noexcept
Define buffer data.
Definition CD_EBGradient.cpp:759
virtual void computeNormalDerivative(LevelData< EBFluxFAB > &a_gradient, const LevelData< EBCellFAB > &a_phi) const noexcept
Compute the gradient component which is normal to the face, using centered differencing.
Definition CD_EBGradient.cpp:194
EBGradient()=delete
Disallowed constructor.
virtual void defineMasks(LevelData< FArrayBox > &a_coarMaskCF, LevelData< FArrayBox > &a_coarMaskInvalid) noexcept
Make masks.
Definition CD_EBGradient.cpp:419
virtual bool getFiniteDifferenceStencil(VoFStencil &a_stencil, const VolIndex &a_vof, const EBISBox &a_ebisBox, const DenseIntVectSet &a_validRegion, const Real a_dx) const noexcept
Get a finite difference stencil, assuming that the data is cell-centered.
Definition CD_EBGradient.cpp:767
LayoutData< VoFIterator > m_ebcfIterator
Iterator for EBCF cells.
Definition CD_EBGradient.H:258
LayoutData< std::array< FaceIterator, SpaceDim > > m_multiCutFaceIter
Face iterators restricted to multiply-cut faces per direction (valid box, SurroundingNoBoundary).
Definition CD_EBGradient.H:265
CellLocation m_dataLocation
How to interpret data locations.
Definition CD_EBGradient.H:159
LayoutData< BaseIVFAB< VoFStencil > > m_ebcfStencilsCoar
Part of EBCF gradient stencil which reaches into the coarse level.
Definition CD_EBGradient.H:235
LayoutData< VoFIterator > m_levelIterator
Iterator for boundary cells (either domain or EB)
Definition CD_EBGradient.H:252
virtual void defineLevelStencils() noexcept
Define level stencils.
Definition CD_EBGradient.cpp:340
static constexpr int m_nComp
Number of components that are supported.
Definition CD_EBGradient.H:154
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