12#ifndef CD_EBParticleMesh_H
13#define CD_EBParticleMesh_H
26#include <CD_NamespaceHeader.H>
82 template <
class P,
class Ret, Ret (P::*MemberFunc)() const>
100 template <
class P,
class Ret, Ret (P::*MemberFunc)()>
111 template <
typename Ret>
112 static inline constexpr int
115 using NoRef =
typename std::remove_reference<Ret>::type;
116 using Base =
typename std::remove_cv<NoRef>::type;
118 static_assert(std::is_same<Base, Real>::value || std::is_same<Base, RealVect>::value,
119 "Ret should be Real or RealVect");
121 return std::is_same<Base, Real>::value ? 1 :
SpaceDim;
270#include <CD_NamespaceFooter.H>
Declaration of deposition types.
DepositionType
Deposition types.
Definition CD_DepositionType.H:23
Implementatoin of CD_EBParticleMesh.H.
A class for depositing and interpolating particles on a single grid patch.
Definition CD_EBParticleMesh.H:34
Box m_region
Cell-centered box, i.e. valid region.
Definition CD_EBParticleMesh.H:138
bool m_verbose
Verbose or not.
Definition CD_EBParticleMesh.H:133
void depositParticleCIC(EBCellFAB &a_rho, const RealVect &a_position, const RealVect &a_particleWidth, const Box &a_particleBox, const Real &a_volumeFactor, const Real *a_strength, const int &a_numComp, const bool a_forceIrregNGP) const noexcept
Function for depositing a single particle with a CIC scheme.
Definition CD_EBParticleMeshImplem.H:236
void interpolateParticleNGP(Real *a_particleField, const EBCellFAB &a_meshData, const RealVect &a_position, const int &a_numComp) const noexcept
Particle interpolation function using an NGP scheme.
Definition CD_EBParticleMeshImplem.H:339
void interpolateParticleTSC(Real *a_particleField, const EBCellFAB &a_meshData, const Box &a_validBox, const Box &a_gatherBox, const RealVect &a_position, const int &a_numComp, const bool a_forceIrregNGP) const noexcept
Particle interpolation function using a TSC scheme.
Definition CD_EBParticleMeshImplem.H:409
void depositParticleNGP(EBCellFAB &a_rho, const RealVect &a_position, const Real &a_volumeFactor, const Real *a_strength, const int &a_numComp) const noexcept
Wrapper function for depositing a single particle with a standard NGP scheme.
Definition CD_EBParticleMeshImplem.H:216
EBParticleMesh()
Default constructor. Must subsequently call define.
Definition CD_EBParticleMesh.cpp:20
void define(const ProblemDomain &a_domain, const Box &a_region, const EBISBox &a_ebisbox, const RealVect &a_dx, const RealVect &a_probLo)
Define function.
Definition CD_EBParticleMesh.cpp:39
void interpolate(List< P > &a_particles, const EBCellFAB &a_meshData, const DepositionType a_interpType, const bool a_forceIrregNGP=false) const
Interpolate mesh data onto a particle.
Definition CD_EBParticleMeshImplem.H:100
static constexpr int sanitize() noexcept
Sanitize the return function type, ensuring it is either Real or RealVect.
Definition CD_EBParticleMesh.H:113
void interpolateParticleCIC(Real *a_particleField, const EBCellFAB &a_meshData, const Box &a_validBox, const Box &a_gatherBox, const RealVect &a_position, const int &a_numComp, const bool a_forceIrregNGP) const noexcept
Particle interpolation function using a CIC scheme.
Definition CD_EBParticleMeshImplem.H:356
void depositParticleTSC(EBCellFAB &a_rho, const RealVect &a_position, const RealVect &a_particleWidth, const Box &a_particleBox, const Real &a_volumeFactor, const Real *a_strength, const int &a_numComp, const bool a_forceIrregNGP) const noexcept
Function for depositing a single particle with a TSC scheme.
Definition CD_EBParticleMeshImplem.H:283
RealVect m_dx
Grid resolution.
Definition CD_EBParticleMesh.H:148
ProblemDomain m_domain
Problem domain.
Definition CD_EBParticleMesh.H:128
EBISBox m_ebisbox
EBIS box.
Definition CD_EBParticleMesh.H:143
void deposit(EBCellFAB &a_meshData, const List< P > &a_particles, const DepositionType a_depositionType, const Real a_widthScale, const bool a_forceIrregNGP=false) const
Deposit a particle onto the mesh.
Definition CD_EBParticleMeshImplem.H:26
RealVect m_probLo
Lower-left corner of computational domain.
Definition CD_EBParticleMesh.H:153
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37