chombo-discharge
Loading...
Searching...
No Matches
CD_EBFluxRedistribution.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_EBFLUXREDISTRIBUTION_H
14#define CD_EBFLUXREDISTRIBUTION_H
15
16// Chombo includes
17#include <EBLevelGrid.H>
18#include <LevelData.H>
19#include <EBCellFAB.H>
20#include <BaseIVFAB.H>
21
22// Our includes
23#include <CD_NamespaceHeader.H>
24
44{
45public:
49 EBFluxRedistribution() noexcept;
50
55
71 const EBLevelGrid& a_eblg,
74 const int a_refToCoar,
75 const int a_refToFine,
76 const bool a_redistributeOutside) noexcept;
77
82
96 virtual void
102 const int a_refToCoar,
103 const int a_refToFine,
105
119 virtual void
128
136 virtual void
141
149 virtual void
154
162 virtual void
167
173
178
183
188
193
198
203
208
213
218
223
228
233
238
243
249
255
261
266
270 virtual void
272
276 virtual void
278
283 virtual void
285
290 virtual void
292};
293
294#include <CD_NamespaceFooter.H>
295
296#endif
Class for redistribution ala Chombo's flux redistribution.
Definition CD_EBFluxRedistribution.H:44
virtual void redistributeFine(LevelData< EBCellFAB > &a_phiFine, const LevelData< BaseIVFAB< Real > > &a_deltaM, const Real &a_scaleFine, const Interval &a_variables) const noexcept
Redistribute the input quantity to the coarse level.
Definition CD_EBFluxRedistribution.cpp:591
int m_refToCoar
Refinement factor between this level and the coarse level.
Definition CD_EBFluxRedistribution.H:192
bool m_hasCoar
Has coarse level or not.
Definition CD_EBFluxRedistribution.H:182
EBFluxRedistribution() noexcept
Weak constructor. Need to call define afterwards.
Definition CD_EBFluxRedistribution.cpp:26
bool m_hasFine
Has fine level or not.
Definition CD_EBFluxRedistribution.H:187
int m_refToFine
Refinement factor between this level and the fine level.
Definition CD_EBFluxRedistribution.H:197
LayoutData< BaseIVFAB< VoFStencil > > m_redistStencilsFine
Stencils for redistribution into valid grid cells on the fine level.
Definition CD_EBFluxRedistribution.H:260
bool m_redistributeOutside
If true, redistribute to the outside. Otherwise, do interior redistribution.
Definition CD_EBFluxRedistribution.H:177
virtual void defineBuffers() noexcept
Define buffer storages.
Definition CD_EBFluxRedistribution.cpp:412
virtual void defineValidCells(LevelData< BaseFab< bool > > &a_validCells) const noexcept
Define the valid region of this level.
Definition CD_EBFluxRedistribution.cpp:298
virtual void defineInterfaceCells(LevelData< BaseFab< bool > > &a_interfaceCells) const noexcept
Define the cells on the coarse side of the CF interface that we would redistribute to.
Definition CD_EBFluxRedistribution.cpp:368
virtual void defineStencils() noexcept
Define redistribution stencils.
Definition CD_EBFluxRedistribution.cpp:124
EBLevelGrid m_eblgFine
Fine grids.
Definition CD_EBFluxRedistribution.H:227
virtual ~EBFluxRedistribution() noexcept
Destructor (does nothing)
Definition CD_EBFluxRedistribution.cpp:52
int m_redistRadius
Redistribution radius. Always one.
Definition CD_EBFluxRedistribution.H:202
bool m_isDefined
Is defined or not.
Definition CD_EBFluxRedistribution.H:172
Copier m_fineCopier
Copier for copying from the refinement of this level to the fine level.
Definition CD_EBFluxRedistribution.H:242
LayoutData< BaseIVFAB< VoFStencil > > m_redistStencilsCoar
Stencils for redistribution into valid grid cells on the coarse level.
Definition CD_EBFluxRedistribution.H:248
Copier m_levelCopier
Copier for adding data from this level to this level (yes, really).
Definition CD_EBFluxRedistribution.H:237
virtual void define(const EBLevelGrid &a_eblgCoar, const EBLevelGrid &a_eblgCoarsened, const EBLevelGrid &a_eblg, const EBLevelGrid &a_eblgRefined, const EBLevelGrid &a_eblgFine, const int a_refToCoar, const int a_refToFine, const bool a_redistributeOutside) noexcept
Define function. Puts object in usable state.
Definition CD_EBFluxRedistribution.cpp:58
EBLevelGrid m_eblgCoar
Grids on coarser level.
Definition CD_EBFluxRedistribution.H:207
virtual void redistributeLevel(LevelData< EBCellFAB > &a_phi, const LevelData< BaseIVFAB< Real > > &a_deltaM, const Real &a_scale, const Interval &a_variables) const noexcept
Redistribute the input quantity to this level.
Definition CD_EBFluxRedistribution.cpp:532
LayoutData< VoFIterator > m_vofit
Iterator for going through all cells on this level that we redistribute from.
Definition CD_EBFluxRedistribution.H:265
Copier m_coarCopier
Copier for copying from the coarsening of this level to the coarse level.
Definition CD_EBFluxRedistribution.H:232
EBLevelGrid m_eblgCoarsened
Grids on this level that are a refinement of the coarser level.
Definition CD_EBFluxRedistribution.H:212
virtual void redistributeAMR(LevelData< EBCellFAB > *a_phiCoar, LevelData< EBCellFAB > *a_phi, LevelData< EBCellFAB > *a_phiFine, const LevelData< BaseIVFAB< Real > > &a_deltaM, const Real a_scaleCoar, const Real a_scale, const Real a_scaleFine, const Interval &a_variables) const noexcept
Redistribute the input quantity into the coarse level, this level, and the fine level.
Definition CD_EBFluxRedistribution.cpp:443
EBFluxRedistribution(const EBFluxRedistribution &a_other)=delete
Copy constructor is not allowed.
EBLevelGrid m_eblgRefined
Grids on this level that are a coarsening of the fine level.
Definition CD_EBFluxRedistribution.H:222
LayoutData< BaseIVFAB< VoFStencil > > m_redistStencilsLevel
Stencils for redistribution into valid grid cells on this level.
Definition CD_EBFluxRedistribution.H:254
EBLevelGrid m_eblg
Grids on this level.
Definition CD_EBFluxRedistribution.H:217
virtual void redistributeCoar(LevelData< EBCellFAB > &a_phiCoar, const LevelData< BaseIVFAB< Real > > &a_deltaM, const Real &a_scaleCoar, const Interval &a_variables) const noexcept
Redistribute the input quantity to the coarse level.
Definition CD_EBFluxRedistribution.cpp:473
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38