chombo-discharge
Loading...
Searching...
No Matches
CD_EBReflux.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_EBREFLUX_H
14#define CD_EBREFLUX_H
15
16// Std includes
17#include <map>
18
19// Chombo includes
20#include <Copier.H>
21#include <EBLevelGrid.H>
22
23// Our includes
24#include <CD_NamespaceHeader.H>
25
38{
39public:
43 EBReflux() noexcept;
44
48 EBReflux(const EBReflux& a_other) = delete;
49
57 EBReflux(const EBLevelGrid& a_eblg,
58 const EBLevelGrid& a_eblgFine,
59 const EBLevelGrid& a_eblgCoFi,
60 const int a_refRat) noexcept;
61
65 virtual ~EBReflux() noexcept;
66
74 virtual void
75 define(const EBLevelGrid& a_eblg,
76 const EBLevelGrid& a_eblgFine,
77 const EBLevelGrid& a_eblgCoFi,
78 const int a_refRat) noexcept;
79
91 virtual void
92 reflux(LevelData<EBCellFAB>& a_Lphi,
93 const LevelData<EBFluxFAB>& a_flux,
94 const LevelData<EBFluxFAB>& a_fineFlux,
95 const Interval a_variables,
96 const Real a_scaleCoarFlux,
97 const Real a_scaleFineFlux) const noexcept;
98
99protected:
104
109
113 EBLevelGrid m_eblgFine;
114
118 EBLevelGrid m_eblg;
119
123 EBLevelGrid m_eblgCoFi;
124
128 Copier m_copier;
129
133 LayoutData<std::map<std::pair<int, Side::LoHiSide>, BaseIFFAB<FaceStencil>>> m_fluxCoarseningStencils;
134
138 LayoutData<std::map<std::pair<int, Side::LoHiSide>, DenseIntVectSet>> m_regularCoarseFineRegions;
139
143 mutable LayoutData<std::map<std::pair<int, Side::LoHiSide>, FaceIterator>> m_fluxCoarseningRegions;
144
149 mutable LayoutData<std::map<std::pair<int, Side::LoHiSide>, VoFIterator>> m_irregularCoarseFineRegions;
150
154 virtual void
155 defineRegionsCF() noexcept;
156
160 virtual void
161 defineStencils() noexcept;
162
166 virtual void
167 defineBuffers() noexcept;
168
178 virtual void
179 coarsenFluxesCF(LevelData<EBFluxFAB>& a_coarFluxes,
180 const LevelData<EBFluxFAB>& a_fineFluxes,
181 const int a_coarVar,
182 const int a_fineVar) const noexcept;
183
197 virtual void
198 refluxIntoCoarse(LevelData<EBCellFAB>& a_Lphi,
199 const LevelData<EBFluxFAB>& a_oldFluxes,
200 const LevelData<EBFluxFAB>& a_newFluxes,
201 const int a_phiVar,
202 const int a_oldFluxVar,
203 const int a_newFluxVar,
204 const Real a_scaleCoarFlux,
205 const Real a_scaleFineFlux) const noexcept;
206};
207
208#include <CD_NamespaceFooter.H>
209
210#endif
Class which can do refluxing across a coarse-fine interface.
Definition CD_EBReflux.H:38
EBLevelGrid m_eblgFine
Fine grids.
Definition CD_EBReflux.H:113
LayoutData< std::map< std::pair< int, Side::LoHiSide >, VoFIterator > > m_irregularCoarseFineRegions
Cut-cells in each patch that lie on the coarse-fine interface.
Definition CD_EBReflux.H:149
virtual void define(const EBLevelGrid &a_eblg, const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblgCoFi, const int a_refRat) noexcept
Define method. Puts object in usable state.
Definition CD_EBReflux.cpp:45
virtual void defineStencils() noexcept
Define the stencils required for coarsening the fine-grid fluxes onto the coarse grid.
Definition CD_EBReflux.cpp:191
int m_refRat
Refinement factor between fine and coarse level.
Definition CD_EBReflux.H:108
virtual void defineBuffers() noexcept
Define buffers.
Definition CD_EBReflux.cpp:260
LayoutData< std::map< std::pair< int, Side::LoHiSide >, BaseIFFAB< FaceStencil > > > m_fluxCoarseningStencils
Stencils for conservatively coarsening fine-grid fluxes onto the coarse grid.
Definition CD_EBReflux.H:133
virtual void reflux(LevelData< EBCellFAB > &a_Lphi, const LevelData< EBFluxFAB > &a_flux, const LevelData< EBFluxFAB > &a_fineFlux, const Interval a_variables, const Real a_scaleCoarFlux, const Real a_scaleFineFlux) const noexcept
Reflux into the coarse data.
Definition CD_EBReflux.cpp:269
EBReflux() noexcept
Disallowed constructor.
Definition CD_EBReflux.cpp:24
EBLevelGrid m_eblg
Grid on this level.
Definition CD_EBReflux.H:118
Copier m_copier
Copier for copying from the coarsened fine grids to the coarse grids.
Definition CD_EBReflux.H:128
EBReflux(const EBReflux &a_other)=delete
Disallowed copy constructor.
virtual ~EBReflux() noexcept
Destructor (does nothing)
Definition CD_EBReflux.cpp:39
LayoutData< std::map< std::pair< int, Side::LoHiSide >, DenseIntVectSet > > m_regularCoarseFineRegions
Regular coarse-fine regions for coarse-grid patches.
Definition CD_EBReflux.H:138
virtual void refluxIntoCoarse(LevelData< EBCellFAB > &a_Lphi, const LevelData< EBFluxFAB > &a_oldFluxes, const LevelData< EBFluxFAB > &a_newFluxes, const int a_phiVar, const int a_oldFluxVar, const int a_newFluxVar, const Real a_scaleCoarFlux, const Real a_scaleFineFlux) const noexcept
Reflux data into a_Lphi.
Definition CD_EBReflux.cpp:421
bool m_isDefined
Is defined or not.
Definition CD_EBReflux.H:103
LayoutData< std::map< std::pair< int, Side::LoHiSide >, FaceIterator > > m_fluxCoarseningRegions
Stencils for conservatively coarsening fine-grid fluxes onto the coarse grid.
Definition CD_EBReflux.H:143
EBLevelGrid m_eblgCoFi
Coarsened fine grids.
Definition CD_EBReflux.H:123
virtual void defineRegionsCF() noexcept
Define coarse-fine interface regions so that we can compute things later.
Definition CD_EBReflux.cpp:65
virtual void coarsenFluxesCF(LevelData< EBFluxFAB > &a_coarFluxes, const LevelData< EBFluxFAB > &a_fineFluxes, const int a_coarVar, const int a_fineVar) const noexcept
Coarsen the input fine fluxes onto the coarse fluxes.
Definition CD_EBReflux.cpp:310