chombo-discharge
Loading...
Searching...
No Matches
CD_EBCoarAve.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_EBCOARAVE_H
14#define CD_EBCOARAVE_H
15
16// Chombo includes
17#include <AggStencil.H>
18#include <EBLevelGrid.H>
19#include <VoFIterator.H>
20#include <FaceIterator.H>
21
22// Our includes
23#include <CD_Average.H>
24#include <CD_NamespaceHeader.H>
25
32{
33public:
37 enum class Type
38 {
39 Arithmetic,
40 Conservative,
41 Harmonic
42 };
43
47 EBCoarAve() noexcept;
48
52 EBCoarAve(const EBCoarAve& a_other) = delete;
53
65 EBCoarAve(const DisjointBoxLayout& a_dblFine,
66 const DisjointBoxLayout& a_dblCoar,
67 const EBISLayout& a_ebislFine,
68 const EBISLayout& a_ebislCoar,
69 const ProblemDomain& a_domainCoar,
70 const int& a_refRat,
71 const EBIndexSpace* a_ebisPtr) noexcept;
72
80 EBCoarAve(const EBLevelGrid& a_eblgFine,
81 const EBLevelGrid& a_eblgCoar,
82 const EBLevelGrid& a_eblgCoFi,
83 const int& a_refRat) noexcept;
84
88 virtual ~EBCoarAve() noexcept;
89
97 virtual void
98 define(const EBLevelGrid& a_eblgFine,
99 const EBLevelGrid& a_eblgCoar,
100 const EBLevelGrid& a_eblgCoFi,
101 const int& a_refRat) noexcept;
102
106 virtual void
107 operator=(const EBCoarAve& fabin) = delete;
108
116 virtual void
117 averageData(LevelData<EBCellFAB>& a_coarData,
118 const LevelData<EBCellFAB>& a_fineData,
119 const Interval& a_variables,
120 const Average& a_average) const noexcept;
121
129 virtual void
130 averageData(LevelData<EBFluxFAB>& a_coarData,
131 const LevelData<EBFluxFAB>& a_fineData,
132 const Interval& a_variables,
133 const Average& a_average) const noexcept;
134
142 virtual void
143 averageData(LevelData<BaseIVFAB<Real>>& a_coarData,
144 const LevelData<BaseIVFAB<Real>>& a_fineData,
145 const Interval& a_variables,
146 const Average& a_average) const noexcept;
147
148protected:
153
158
162 EBLevelGrid m_eblgFine;
163
167 EBLevelGrid m_eblgCoar;
168
172 EBLevelGrid m_eblgCoFi;
173
177 mutable std::map<IntVect, Copier> m_cellCopiers;
178
182 mutable std::map<IntVect, Copier> m_faceCopiers;
183
187 mutable std::map<IntVect, Copier> m_ebCopiers;
188
192 LayoutData<IntVectSet> m_irregSetsCoFi;
193
197 mutable LayoutData<VoFIterator> m_irregCellsCoFi;
198
202 mutable LayoutData<std::map<int, FaceIterator>> m_irregFacesCoFi;
203
207 LayoutData<BaseIVFAB<VoFStencil>> m_cellArithmeticStencils;
208
214 LayoutData<BaseIVFAB<VoFStencil>> m_cellHarmonicStencils;
215
219 LayoutData<BaseIVFAB<VoFStencil>> m_cellConservativeStencils;
220
224 LayoutData<std::map<int, BaseIFFAB<FaceStencil>>> m_faceArithmeticStencils;
225
229 LayoutData<std::map<int, BaseIFFAB<FaceStencil>>> m_faceHarmonicStencils;
230
234 LayoutData<std::map<int, BaseIFFAB<FaceStencil>>> m_faceConservativeStencils;
235
239 LayoutData<BaseIVFAB<VoFStencil>> m_ebArithmeticStencils;
240
244 LayoutData<BaseIVFAB<VoFStencil>> m_ebHarmonicStencils;
245
249 LayoutData<BaseIVFAB<VoFStencil>> m_ebConservativeStencils;
250
254 virtual void
255 defineCellStencils() noexcept;
256
260 virtual void
261 defineFaceStencils() noexcept;
262
266 virtual void
267 defineEBStencils() noexcept;
268
272 virtual void
273 defineBuffers() noexcept;
274
283 virtual void
284 arithmeticAverage(EBCellFAB& a_coarData,
285 const EBCellFAB& a_fineData,
286 const DataIndex& a_datInd,
287 const int& a_coarVar,
288 const int& a_fineVar) const noexcept;
297 virtual void
298 harmonicAverage(EBCellFAB& a_coarData,
299 const EBCellFAB& a_fineData,
300 const DataIndex& a_datInd,
301 const int& a_coarVar,
302 const int& a_fineVar) const noexcept;
303
312 virtual void
313 conservativeAverage(EBCellFAB& a_coarData,
314 const EBCellFAB& a_fineData,
315 const DataIndex& a_datInd,
316 const int& a_coarVar,
317 const int& a_fineVar) const noexcept;
318
328 virtual void
329 arithmeticAverage(EBFaceFAB& a_coarData,
330 const EBFaceFAB& a_fineData,
331 const DataIndex& a_datInd,
332 const int& a_coarVar,
333 const int& a_fineVar,
334 const int& a_dir) const noexcept;
335
345 virtual void
346 harmonicAverage(EBFaceFAB& a_coarData,
347 const EBFaceFAB& a_fineData,
348 const DataIndex& a_datInd,
349 const int& a_coarVar,
350 const int& a_fineVar,
351 const int& a_dir) const noexcept;
352
362 virtual void
363 conservativeAverage(EBFaceFAB& a_coarData,
364 const EBFaceFAB& a_fineData,
365 const DataIndex& a_datInd,
366 const int& a_coarVar,
367 const int& a_fineVar,
368 const int& a_dir) const noexcept;
369
378 virtual void
379 arithmeticAverage(BaseIVFAB<Real>& a_coarData,
380 const BaseIVFAB<Real>& a_fineData,
381 const DataIndex& a_datInd,
382 const int& a_coarVar,
383 const int& a_fineVar) const noexcept;
384
393 virtual void
394 harmonicAverage(BaseIVFAB<Real>& a_coarData,
395 const BaseIVFAB<Real>& a_fineData,
396 const DataIndex& a_datInd,
397 const int& a_coarVar,
398 const int& a_fineVar) const noexcept;
399
408 virtual void
409 conservativeAverage(BaseIVFAB<Real>& a_coarData,
410 const BaseIVFAB<Real>& a_fineData,
411 const DataIndex& a_datInd,
412 const int& a_coarVar,
413 const int& a_fineVar) const noexcept;
414};
415
416#include <CD_NamespaceFooter.H>
417
418#endif
Declaration of averaging methods.
Average
Various averaging methods.
Definition CD_Average.H:25
Class which replaces data at coarse level of refinement with average at fine level of refinement.
Definition CD_EBCoarAve.H:32
LayoutData< BaseIVFAB< VoFStencil > > m_cellConservativeStencils
Stencils for conservative coarsening of volume data.
Definition CD_EBCoarAve.H:219
virtual void defineCellStencils() noexcept
Define stencils for the various coarsening functions of cell data.
Definition CD_EBCoarAve.cpp:118
int m_refRat
Refinement ratio.
Definition CD_EBCoarAve.H:157
LayoutData< BaseIVFAB< VoFStencil > > m_ebConservativeStencils
Stencils for conservative coarsening of EB data.
Definition CD_EBCoarAve.H:249
virtual void harmonicAverage(EBCellFAB &a_coarData, const EBCellFAB &a_fineData, const DataIndex &a_datInd, const int &a_coarVar, const int &a_fineVar) const noexcept
Do a harmonic average of cell-centered data when coarsening.
Definition CD_EBCoarAve.cpp:511
EBLevelGrid m_eblgCoFi
Coarsened fine grids.
Definition CD_EBCoarAve.H:172
virtual void define(const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblgCoar, const EBLevelGrid &a_eblgCoFi, const int &a_refRat) noexcept
Define function – puts operator in usable state.
Definition CD_EBCoarAve.cpp:77
LayoutData< std::map< int, FaceIterator > > m_irregFacesCoFi
Irregular faces on the coarsened fine layout.
Definition CD_EBCoarAve.H:202
EBLevelGrid m_eblgCoar
Coarse grids.
Definition CD_EBCoarAve.H:167
virtual void defineFaceStencils() noexcept
Define stencils for the various coarsening functions of face data.
Definition CD_EBCoarAve.cpp:194
LayoutData< BaseIVFAB< VoFStencil > > m_ebHarmonicStencils
Stencils for harmonic coarsening of EB data.
Definition CD_EBCoarAve.H:244
std::map< IntVect, Copier > m_ebCopiers
Pre-built copier for copying from m_eblgCoFi to m_eblgCoar.
Definition CD_EBCoarAve.H:187
std::map< IntVect, Copier > m_faceCopiers
Pre-built copier for copying from m_eblgCoFi to m_eblgCoar.
Definition CD_EBCoarAve.H:182
virtual void defineEBStencils() noexcept
Define stencils for the various coarsening functions of EB data.
Definition CD_EBCoarAve.cpp:276
LayoutData< VoFIterator > m_irregCellsCoFi
Irregular cells on the coarsened fine layout.
Definition CD_EBCoarAve.H:197
EBCoarAve() noexcept
Default constructor. Must call define afterwards.
Definition CD_EBCoarAve.cpp:24
virtual void conservativeAverage(EBCellFAB &a_coarData, const EBCellFAB &a_fineData, const DataIndex &a_datInd, const int &a_coarVar, const int &a_fineVar) const noexcept
Do a conservative average of cell-centered data when coarsening.
Definition CD_EBCoarAve.cpp:588
Type
Type of coarsening supported.
Definition CD_EBCoarAve.H:38
EBLevelGrid m_eblgFine
Fine grids.
Definition CD_EBCoarAve.H:162
LayoutData< IntVectSet > m_irregSetsCoFi
Irregular cells on the coarsened fine layout.
Definition CD_EBCoarAve.H:192
LayoutData< BaseIVFAB< VoFStencil > > m_cellArithmeticStencils
Stencils for arithmetic coarsening of volume data.
Definition CD_EBCoarAve.H:207
virtual void averageData(LevelData< EBCellFAB > &a_coarData, const LevelData< EBCellFAB > &a_fineData, const Interval &a_variables, const Average &a_average) const noexcept
Do an average of cell data.
Definition CD_EBCoarAve.cpp:365
LayoutData< BaseIVFAB< VoFStencil > > m_cellHarmonicStencils
Stencils for harmonic coarsening of volume data.
Definition CD_EBCoarAve.H:214
LayoutData< BaseIVFAB< VoFStencil > > m_ebArithmeticStencils
Stencils for arithmetic coarsening of EB data.
Definition CD_EBCoarAve.H:239
virtual void arithmeticAverage(EBCellFAB &a_coarData, const EBCellFAB &a_fineData, const DataIndex &a_datInd, const int &a_coarVar, const int &a_fineVar) const noexcept
Do an arithmetic average of cell-centered data when coarsening.
Definition CD_EBCoarAve.cpp:437
std::map< IntVect, Copier > m_cellCopiers
Pre-built copier for copying from m_eblgCoFi to m_eblgCoar.
Definition CD_EBCoarAve.H:177
LayoutData< std::map< int, BaseIFFAB< FaceStencil > > > m_faceHarmonicStencils
Stencils for harmonic coarsening of face data.
Definition CD_EBCoarAve.H:229
LayoutData< std::map< int, BaseIFFAB< FaceStencil > > > m_faceArithmeticStencils
Stencils for arithmetic coarsening of face data.
Definition CD_EBCoarAve.H:224
bool m_isDefined
Defined or not.
Definition CD_EBCoarAve.H:152
virtual void defineBuffers() noexcept
Define buffer storage.
Definition CD_EBCoarAve.cpp:359
LayoutData< std::map< int, BaseIFFAB< FaceStencil > > > m_faceConservativeStencils
Stencils for conservative coarsening of face data.
Definition CD_EBCoarAve.H:234