chombo-discharge
Loading...
Searching...
No Matches
CD_EBAMRParticleMesh.H
Go to the documentation of this file.
1/* chombo-discharge
2 * Copyright © 2021 SINTEF Energy Research.
3 * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4 */
5
12#ifndef CD_EBAMRParticleMesh_H
13#define CD_EBAMRParticleMesh_H
14
15// Chombo includes
16#include <RefCountedPtr.H>
17#include <Copier.H>
18#include <EBLevelGrid.H>
19
20// Our includes
21#include <CD_DepositionType.H>
22#include <CD_EBAMRData.H>
25#include <CD_EBParticleMesh.H>
27#include <CD_NamespaceHeader.H>
28
52{
53public:
58
69 const Vector<int>& a_refRat,
70 const Vector<Real>& a_dx,
71 const RealVect& a_probLo,
72 const int& a_ghost,
73 const int a_finestLevel);
74
78 virtual ~EBAMRParticleMesh();
79
89 void
91 const Vector<int>& a_refRat,
92 const Vector<Real>& a_dx,
93 const RealVect& a_probLo,
94 const int& a_ghost,
95 const int a_finestLevel);
96
108 template <class P, class Ret, Ret (P::*MemberFunc)() const>
109 void
114 const bool a_forceIrregNGP = false);
115
125 template <class P, class Ret, Ret (P::*MemberFunc)()>
126 void
130 const bool a_forceIrregNGP = false) const;
131
138
146 const EBParticleMesh&
147 getEBParticleMesh(const int a_lvl, const DataIndex& a_dit) const;
148
149protected:
154
159
164
169
174
179
184
189
194
201
206
214
222
228
234
239 void
241
246 void
248
252 void
254
258 void
260
264 void
266
273 int
275
283 template <class P, class Ret, Ret (P::*MemberFunc)() const>
284 void
288 const bool a_forceIrregNGP = false);
289
298 template <class P, class Ret, Ret (P::*MemberFunc)() const>
299 void
303 const bool a_forceIrregNGP = false);
304
312 template <class P, class Ret, Ret (P::*MemberFunc)() const>
313 void
317 const bool a_forceIrregNGP = false);
318
328 template <class P, class Ret, Ret (P::*MemberFunc)() const>
329 void
333 const bool a_forceIrregNGP = false);
334
340 template <class P>
341 void
343};
344
345#include <CD_NamespaceFooter.H>
346
348
349#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:26
Declaration of deposition types.
DepositionType
Deposition types.
Definition CD_DepositionType.H:23
Class for holding data across EBAMR hierarchies.
Implementation of CD_EBAMRParticleMesh.H.
Declaration of a class for handling particle deposition arithmetics 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:52
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:315
Vector< RefCountedPtr< LevelData< BaseFab< bool > > > > m_validCells
Valid grid cells.
Definition CD_EBAMRParticleMesh.H:205
int m_ghost
Number of ghost cells.
Definition CD_EBAMRParticleMesh.H:168
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:45
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:39
std::map< int, Vector< RefCountedPtr< LevelData< BaseFab< bool > > > > > m_outerHaloMasks
Outer halo masks with various widths.
Definition CD_EBAMRParticleMesh.H:213
Vector< RefCountedPtr< EBCoarseFineParticleMesh > > m_coarseFinePM
Buffers for handling arithmetic for mass moving from coarse to fine level and vice versa.
Definition CD_EBAMRParticleMesh.H:227
Vector< Real > m_dx
Grid resolutions.
Definition CD_EBAMRParticleMesh.H:188
void defineEBParticleMesh()
Define EBParticleMesh objects.
Definition CD_EBAMRParticleMesh.cpp:127
void interpolate(ParticleContainer< P > &a_particles, const EBAMRCellData &a_meshData, const DepositionType a_interpType, const bool a_forceIrregNGP=false) const
Interpolate a scalar field onto the particle position.
Definition CD_EBAMRParticleMeshImplem.H:454
int m_finestLevel
Finest AMR level.
Definition CD_EBAMRParticleMesh.H:173
void defineOuterHaloMasks()
Define the outer halo masks.
Definition CD_EBAMRParticleMesh.cpp:214
RealVect m_probLo
Lower-left corner of physical domain.
Definition CD_EBAMRParticleMesh.H:163
Vector< RefCountedPtr< EBCoarseFineParticleMesh > > & getEBCoarseFineParticleMesh() const
Get buffers for handling deposition over refinement boundaries.
bool m_isDefined
Is defined or not.
Definition CD_EBAMRParticleMesh.H:153
Vector< RefCountedPtr< LayoutData< EBParticleMesh > > > m_ebParticleMesh
Regular particle-mesh object on each grid level.
Definition CD_EBAMRParticleMesh.H:193
Vector< RefCountedPtr< EBLevelGrid > > m_eblgs
Grids on each level.
Definition CD_EBAMRParticleMesh.H:178
std::map< int, Vector< RefCountedPtr< LevelData< BaseFab< bool > > > > > m_transitionMasks
Transition masks with various widths.
Definition CD_EBAMRParticleMesh.H:221
bool m_verbose
Verbose or not.
Definition CD_EBAMRParticleMesh.H:158
Vector< Copier > m_levelCopiers
Copier for moving data from valid+ghost to valid on each AMR level.
Definition CD_EBAMRParticleMesh.H:233
EBAMRParticleMesh()
Default constructor. Leaves object in undefined state and thus requires the user to call define.
Definition CD_EBAMRParticleMesh.cpp:20
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:135
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:236
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:200
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:71
Vector< RefCountedPtr< LayoutData< EBParticleMesh > > > m_ebParticleMeshFiCo
Special particle-mesh objects for depositing on the coarsened fine grid.
Definition CD_EBAMRParticleMesh.H:200
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:490
void defineCoarseFineMotion()
Define coarse-fine data motion operators.
Definition CD_EBAMRParticleMesh.cpp:103
void defineLevelMotion()
Define level copiers.
Definition CD_EBAMRParticleMesh.cpp:75
Vector< int > m_refRat
Refinement ratios between levels.
Definition CD_EBAMRParticleMesh.H:183
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:29
A class for depositing and interpolating particles on a single grid patch.
Definition CD_EBParticleMesh.H:34
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:25