chombo-discharge
Loading...
Searching...
No Matches
CD_EBAMRSurfaceDeposition.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_EBAMRSURFACEDEPOSITION_H
14#define CD_EBAMRSURFACEDEPOSITION_H
15
16// Chombo includes
17#include <RefCountedPtr.H>
18#include <Copier.H>
19#include <EBLevelGrid.H>
20
21// Our includes
22#include <CD_EBAMRData.H>
24#include <CD_NamespaceHeader.H>
25
30{
31public:
35 EBAMRSurfaceDeposition() noexcept;
36
49 EBAMRSurfaceDeposition(const Vector<RefCountedPtr<EBLevelGrid>>& a_ebGrids,
50 const Vector<RefCountedPtr<EBLevelGrid>>& a_ebGridsCoarsenedFine,
51 const Vector<RefCountedPtr<EBLevelGrid>>& a_ebGridsRefinedCoar,
52 const Vector<int>& a_refRat,
53 const Vector<Real>& a_dx,
54 const RealVect& a_probLo,
55 const int a_finestLevel,
56 const int a_radius) noexcept;
57
61 virtual ~EBAMRSurfaceDeposition() noexcept;
62
75 virtual void
76 define(const Vector<RefCountedPtr<EBLevelGrid>>& a_ebGrids,
77 const Vector<RefCountedPtr<EBLevelGrid>>& a_ebGridsCoarsenedFine,
78 const Vector<RefCountedPtr<EBLevelGrid>>& a_ebGridsRefinedCoar,
79 const Vector<int>& a_refRat,
80 const Vector<Real>& a_dx,
81 const RealVect& a_probLo,
82 const int a_finestLevel,
83 const int a_radius) noexcept;
84
94 template <typename P, typename Traits>
95 void
96 deposit(EBAMRIVData& a_meshData, const ParticleContainer<P, Traits>& a_particles) const noexcept;
97
98protected:
103
108
113
117 RealVect m_probLo;
118
123
128
132 Vector<RefCountedPtr<EBLevelGrid>> m_ebGrids;
133
139 Vector<RefCountedPtr<EBLevelGrid>> m_ebGridsCoarsenedFine;
140
146 Vector<RefCountedPtr<EBLevelGrid>> m_ebGridsRefinedCoar;
147
151 Vector<int> m_refRat;
152
156 Vector<Real> m_dx;
157
161 Vector<RefCountedPtr<LayoutData<BaseIVFAB<VoFStencil>>>> m_depositionStencils;
162
167 Vector<RefCountedPtr<LayoutData<BaseIVFAB<VoFStencil>>>> m_coarseToFineStencils;
168
173 Vector<RefCountedPtr<LayoutData<BaseIVFAB<VoFStencil>>>> m_fineToCoarseStencils;
174
179 mutable EBAMRIVData m_data;
180
184 mutable EBAMRIVData m_refinedCoarData;
185
189 mutable EBAMRIVData m_coarsenedFineData;
190
194 Vector<Copier> m_validToValidCopiers;
195
200 Vector<Copier> m_copierLevel;
201
206
211
215 virtual void
216 defineBuffers() noexcept;
217
221 virtual void
222 defineDataMotion() noexcept;
223
227 virtual void
228 defineDepositionStencils() noexcept;
229
233 virtual void
235
239 virtual void
241
246 virtual void
247 addInvalidCoarseDataToFineData() const noexcept;
248
254 virtual void
255 addFineGhostDataToValidCoarData() const noexcept;
256};
257
258#include <CD_NamespaceFooter.H>
259
261
262#endif
Class for holding data across EBAMR hierarchies.
Implementation of CD_EBAMRSurfaceDeposition.H.
Declaration of an AMR-hierarchy container that owns per-patch ParticleSoA leaves.
class for handling surface deposition of particles with EB and AMR.
Definition CD_EBAMRSurfaceDeposition.H:30
virtual void defineBuffers() noexcept
Define buffer data.
Definition CD_EBAMRSurfaceDeposition.cpp:118
virtual void defineDataMotion() noexcept
Define copiers.
Definition CD_EBAMRSurfaceDeposition.cpp:224
Vector< Copier > m_validToValidCopiers
Valid to valid copiers.
Definition CD_EBAMRSurfaceDeposition.H:194
RealVect m_probLo
Lower-left corner of computational domain.
Definition CD_EBAMRSurfaceDeposition.H:117
EBAMRIVData m_coarsenedFineData
Coarsening of the fine-grid data.
Definition CD_EBAMRSurfaceDeposition.H:189
EBAMRSurfaceDeposition() noexcept
Default constructor. Leaves the object in undefined state and requires the user to call the define fu...
Definition CD_EBAMRSurfaceDeposition.cpp:24
int m_radius
Deposition radius.
Definition CD_EBAMRSurfaceDeposition.H:127
Vector< RefCountedPtr< EBLevelGrid > > m_ebGridsRefinedCoar
Refined grids.
Definition CD_EBAMRSurfaceDeposition.H:146
Vector< Copier > m_copierRefinedCoarToFineNoGhosts
Copier for copying data from the refined coarse level to the fine level.
Definition CD_EBAMRSurfaceDeposition.H:205
virtual void defineCoarseToFineStencils() noexcept
Define stencils for interpolating coarse-grid data to the fine grid.
Definition CD_EBAMRSurfaceDeposition.cpp:378
int m_finestLevel
Finest grid level.
Definition CD_EBAMRSurfaceDeposition.H:122
Vector< Real > m_dx
Grid resolutions.
Definition CD_EBAMRSurfaceDeposition.H:156
Vector< int > m_refRat
Refinement ratios between levels.
Definition CD_EBAMRSurfaceDeposition.H:151
bool m_verbose
Turn on/off chattiness.
Definition CD_EBAMRSurfaceDeposition.H:112
virtual void defineFineToCoarseStencils() noexcept
Define stencils for coarsening data in fine-grid ghost cells to the coarse grid.
Definition CD_EBAMRSurfaceDeposition.cpp:462
virtual ~EBAMRSurfaceDeposition() noexcept
Destructor.
Definition CD_EBAMRSurfaceDeposition.cpp:50
virtual void addFineGhostDataToValidCoarData() const noexcept
Add the ghosted fine-level data to the coarse data.
Definition CD_EBAMRSurfaceDeposition.cpp:599
Vector< RefCountedPtr< LayoutData< BaseIVFAB< VoFStencil > > > > m_depositionStencils
Deposition weights for each irregular cell. This contains 1.0/sum(alpha * dx^(D-1)) and the cells.
Definition CD_EBAMRSurfaceDeposition.H:161
Vector< RefCountedPtr< LayoutData< BaseIVFAB< VoFStencil > > > > m_fineToCoarseStencils
Stencils for conservatively coarsening fine-grid data (in ghost cells) to the coarse grid.
Definition CD_EBAMRSurfaceDeposition.H:173
bool m_debug
Debug or not.
Definition CD_EBAMRSurfaceDeposition.H:102
Vector< RefCountedPtr< EBLevelGrid > > m_ebGridsCoarsenedFine
Coarsened grids.
Definition CD_EBAMRSurfaceDeposition.H:139
virtual void define(const Vector< RefCountedPtr< EBLevelGrid > > &a_ebGrids, const Vector< RefCountedPtr< EBLevelGrid > > &a_ebGridsCoarsenedFine, const Vector< RefCountedPtr< EBLevelGrid > > &a_ebGridsRefinedCoar, const Vector< int > &a_refRat, const Vector< Real > &a_dx, const RealVect &a_probLo, const int a_finestLevel, const int a_radius) noexcept
Define function. Puts objects in usable state.
Definition CD_EBAMRSurfaceDeposition.cpp:56
Vector< Copier > m_copierLevel
Level copier for adding data from valid+ghost -> valid.
Definition CD_EBAMRSurfaceDeposition.H:200
virtual void addInvalidCoarseDataToFineData() const noexcept
Add the invalid coarse data (i.e., underneath the fine grid) to the fine level.
Definition CD_EBAMRSurfaceDeposition.cpp:545
void deposit(EBAMRIVData &a_meshData, const ParticleContainer< P, Traits > &a_particles) const noexcept
Deposit the container-owned weight column of an SoA particle container onto the surface.
Definition CD_EBAMRSurfaceDepositionImplem.H:32
virtual void defineDepositionStencils() noexcept
Define deposition weights.
Definition CD_EBAMRSurfaceDeposition.cpp:273
Vector< RefCountedPtr< EBLevelGrid > > m_ebGrids
Grids on each level.
Definition CD_EBAMRSurfaceDeposition.H:132
EBAMRIVData m_data
Data on each level.
Definition CD_EBAMRSurfaceDeposition.H:179
EBAMRIVData m_refinedCoarData
Data defined on a refinement of the coarse grid.
Definition CD_EBAMRSurfaceDeposition.H:184
Vector< RefCountedPtr< LayoutData< BaseIVFAB< VoFStencil > > > > m_coarseToFineStencils
Stencils for interpolating coarse-grid data to the fine grid.
Definition CD_EBAMRSurfaceDeposition.H:167
bool m_isDefined
Is defined or not.
Definition CD_EBAMRSurfaceDeposition.H:107
Vector< Copier > m_copierCoarsenedFineToCoar
Copier for copying data from the coarsened fine level to the coarse level.
Definition CD_EBAMRSurfaceDeposition.H:210
AMR-hierarchy container of computational particles, stored per patch in Struct-of-Arrays form.
Definition CD_ParticleContainer.H:123