12#ifndef CD_EBAMRParticleMesh_H
13#define CD_EBAMRParticleMesh_H
16#include <RefCountedPtr.H>
18#include <EBLevelGrid.H>
27#include <CD_NamespaceHeader.H>
108 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
125 template <
class P,
class Ret, Ret (P::*MemberFunc)()>
283 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
298 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
312 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
328 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
345#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: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