chombo-discharge
Loading...
Searching...
No Matches
CD_EBAMRParticleMesh.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_EBAMRPARTICLEMESH_H
14#define CD_EBAMRPARTICLEMESH_H
15
16// Chombo includes
17#include <RefCountedPtr.H>
18#include <Copier.H>
19#include <EBLevelGrid.H>
20
21// Our includes
22#include <CD_DepositionType.H>
23#include <CD_EBAMRData.H>
26#include <CD_EBParticleMesh.H>
28#include <CD_NamespaceHeader.H>
29
53{
54public:
59
71 const Vector<int>& a_refRat,
72 const Vector<Real>& a_dx,
73 const RealVect& a_probLo,
74 const int& a_ghost,
75 const int a_finestLevel);
76
80 virtual ~EBAMRParticleMesh();
81
92 void
94 const Vector<int>& a_refRat,
95 const Vector<Real>& a_dx,
96 const RealVect& a_probLo,
97 const int& a_ghost,
98 const int a_finestLevel);
99
112 template <class P, class Ret, Ret (P::*MemberFunc)() const>
113 void
118 const bool a_forceIrregNGP = false);
119
129 template <class P, class Ret, Ret (P::*MemberFunc)()>
130 void
134 const bool a_forceIrregNGP = false) const;
135
142
151 const EBParticleMesh&
152 getEBParticleMesh(const int a_lvl, const DataIndex& a_dit) const;
153
154protected:
159
164
169
174
179
184
189
194
199
206
211
219
227
233
239
244 void
246
251 void
253
257 void
259
263 void
265
269 void
271
279 int
281
289 template <class P, class Ret, Ret (P::*MemberFunc)() const>
290 void
294 const bool a_forceIrregNGP = false);
295
304 template <class P, class Ret, Ret (P::*MemberFunc)() const>
305 void
309 const bool a_forceIrregNGP = false);
310
318 template <class P, class Ret, Ret (P::*MemberFunc)() const>
319 void
323 const bool a_forceIrregNGP = false);
324
334 template <class P, class Ret, Ret (P::*MemberFunc)() const>
335 void
339 const bool a_forceIrregNGP = false);
340
346 template <class P>
347 void
349};
350
351#include <CD_NamespaceFooter.H>
352
354
355#endif
Declaration of deposition algorithms in an AMR context.
CoarseFineDeposition
Coarse-fine deposition types (see CD_EBAMRParticleMesh for how these are handled).
Definition CD_CoarseFineDeposition.H:27
Declaration of deposition types.
DepositionType
Deposition types.
Definition CD_DepositionType.H:24
Class for holding data across EBAMR hierarchies.
Implementation of CD_EBAMRParticleMesh.H.
Declaration of a class for handling particle deposition arithmetic near refinement boundaries.
Declaration of a class for handling particle-mesh interpolation and deposition.
Declaration of a class for holding particles on an AMR hierarchy.
Class for handling particle-mesh operations with AMR.
Definition CD_EBAMRParticleMesh.H:53
void depositTransition(EBAMRCellData &a_meshData, const ParticleContainer< P > &a_particles, const DepositionType a_depositionType, const bool a_forceIrregNGP=false)
Deposit particles on the mesh.
Definition CD_EBAMRParticleMeshImplem.H:316
Vector< RefCountedPtr< LevelData< BaseFab< bool > > > > m_validCells
Valid grid cells.
Definition CD_EBAMRParticleMesh.H:210
int m_ghost
Number of ghost cells.
Definition CD_EBAMRParticleMesh.H:173
void defineTransitionMasks()
Define the coarse-fine transition masks.
Definition CD_EBAMRParticleMesh.cpp:357
void define(const Vector< RefCountedPtr< EBLevelGrid > > &a_eblgs, const Vector< int > &a_refRat, const Vector< Real > &a_dx, const RealVect &a_probLo, const int &a_ghost, const int a_finestLevel)
Define function.
Definition CD_EBAMRParticleMesh.cpp:44
int getTransitionMaskWidth(const DepositionType a_depositionType, const int a_refRat) const
Get transition mask width.
Definition CD_EBAMRParticleMesh.cpp:470
virtual ~EBAMRParticleMesh()
Destructor (does nothing)
Definition CD_EBAMRParticleMesh.cpp:38
std::map< int, Vector< RefCountedPtr< LevelData< BaseFab< bool > > > > > m_outerHaloMasks
Outer halo masks with various widths.
Definition CD_EBAMRParticleMesh.H:218
Vector< RefCountedPtr< EBCoarseFineParticleMesh > > m_coarseFinePM
Buffers for handling arithmetic for mass moving from coarse to fine level and vice versa.
Definition CD_EBAMRParticleMesh.H:232
Vector< Real > m_dx
Grid resolutions.
Definition CD_EBAMRParticleMesh.H:193
void defineEBParticleMesh()
Define EBParticleMesh objects.
Definition CD_EBAMRParticleMesh.cpp:126
int m_finestLevel
Finest AMR level.
Definition CD_EBAMRParticleMesh.H:178
void defineOuterHaloMasks()
Define the outer halo masks.
Definition CD_EBAMRParticleMesh.cpp:213
RealVect m_probLo
Lower-left corner of physical domain.
Definition CD_EBAMRParticleMesh.H:168
Vector< RefCountedPtr< EBCoarseFineParticleMesh > > & getEBCoarseFineParticleMesh() const
Get buffers for handling deposition over refinement boundaries.
bool m_isDefined
Is defined or not.
Definition CD_EBAMRParticleMesh.H:158
void interpolate(ParticleContainer< P > &a_particles, const EBAMRCellData &a_meshScalarField, const DepositionType a_interpType, const bool a_forceIrregNGP=false) const
Interpolate a scalar field onto the particle position.
Definition CD_EBAMRParticleMeshImplem.H:455
Vector< RefCountedPtr< LayoutData< EBParticleMesh > > > m_ebParticleMesh
Regular particle-mesh object on each grid level.
Definition CD_EBAMRParticleMesh.H:198
Vector< RefCountedPtr< EBLevelGrid > > m_eblgs
Grids on each level.
Definition CD_EBAMRParticleMesh.H:183
std::map< int, Vector< RefCountedPtr< LevelData< BaseFab< bool > > > > > m_transitionMasks
Transition masks with various widths.
Definition CD_EBAMRParticleMesh.H:226
bool m_verbose
Verbose or not.
Definition CD_EBAMRParticleMesh.H:163
Vector< Copier > m_levelCopiers
Copier for moving data from valid+ghost to valid on each AMR level.
Definition CD_EBAMRParticleMesh.H:238
EBAMRParticleMesh()
Default constructor. Leaves object in undefined state and thus requires the user to call define.
Definition CD_EBAMRParticleMesh.cpp:21
void depositHalo(EBAMRCellData &a_meshData, const ParticleContainer< P > &a_particles, const DepositionType a_depositionType, const bool a_forceIrregNGP=false)
Deposit particles on the mesh, keeping the original particle width everywhere and depositing directly...
Definition CD_EBAMRParticleMeshImplem.H:136
void depositHaloNGP(EBAMRCellData &a_meshData, const ParticleContainer< P > &a_particles, const DepositionType a_depositionType, const bool a_forceIrregNGP=false)
Deposit particles on the mesh, using an NGP scheme for coarse-grid particles on the refinement bounda...
Definition CD_EBAMRParticleMeshImplem.H:237
const EBParticleMesh & getEBParticleMesh(const int a_lvl, const DataIndex &a_dit) const
Get EBParticleMesh deposition/interpolation object for specified grid patch.
Definition CD_EBAMRParticleMesh.cpp:199
void depositInterp(EBAMRCellData &a_meshData, const ParticleContainer< P > &a_particles, const DepositionType a_depositionType, const bool a_forceIrregNGP=false)
Deposit particles on the mesh, interpolating the coarse-grid invalid mass to the fine grid.
Definition CD_EBAMRParticleMeshImplem.H:72
Vector< RefCountedPtr< LayoutData< EBParticleMesh > > > m_ebParticleMeshFiCo
Special particle-mesh objects for depositing on the coarsened fine grid.
Definition CD_EBAMRParticleMesh.H:205
void transferMaskParticlesTransition(ParticleContainer< P > &a_particles, const DepositionType a_depositionType) const
Support function for transferring particles that lie in the transition zone around a refinement bound...
Definition CD_EBAMRParticleMeshImplem.H:491
void defineCoarseFineMotion()
Define coarse-fine data motion operators.
Definition CD_EBAMRParticleMesh.cpp:102
void defineLevelMotion()
Define level copiers.
Definition CD_EBAMRParticleMesh.cpp:74
Vector< int > m_refRat
Refinement ratios between levels.
Definition CD_EBAMRParticleMesh.H:188
void deposit(EBAMRCellData &a_meshData, const ParticleContainer< P > &a_particles, const DepositionType a_depositionType, const CoarseFineDeposition a_coarseFineDeposition, const bool a_forceIrregNGP=false)
Class for deposition of particles of a type P to the mesh. This is the main function that users shoul...
Definition CD_EBAMRParticleMeshImplem.H:30
A class for depositing and interpolating particles on a single grid patch.
Definition CD_EBParticleMesh.H:35
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26