13#ifndef CD_EBAMRPARTICLEMESH_H
14#define CD_EBAMRPARTICLEMESH_H
17#include <RefCountedPtr.H>
19#include <EBLevelGrid.H>
28#include <CD_NamespaceHeader.H>
112 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
129 template <
class P,
class Ret, Ret (P::*MemberFunc)()>
289 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
304 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
318 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
334 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
351#include <CD_NamespaceFooter.H>
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