12 #ifndef CD_EBParticleMesh_H
13 #define CD_EBParticleMesh_H
17 #include <EBCellFAB.H>
23 #include <CD_NamespaceHeader.H>
51 const EBISBox& a_ebisbox,
53 const RealVect& a_probLo);
64 define(
const ProblemDomain& a_domain,
66 const EBISBox& a_ebisbox,
68 const RealVect& a_probLo);
85 template <
class P, const Real& (P::*particleScalarField)() const>
87 deposit(
const List<P>& a_particleList,
90 const bool a_forceIrregNGP =
false)
const;
101 template <
class P, Real (P::*particleScalarField)() const>
106 const bool a_forceIrregNGP =
false)
const;
123 template <
class P, const Real& (P::*particleScalarField)() const>
125 deposit2(
const List<P>& a_particleList,
128 const bool a_forceIrregNGP =
false)
const;
139 template <
class P, Real (P::*particleScalarField)() const>
144 const bool a_forceIrregNGP =
false)
const;
161 template <
class P, const Real& (P::*particleScalarField)() const>
163 deposit4(
const List<P>& a_particleList,
166 const bool a_forceIrregNGP =
false)
const;
177 template <
class P, Real (P::*particleScalarField)() const>
182 const bool a_forceIrregNGP =
false)
const;
199 template <
class P, const RealVect& (P::*particleVectorField)() const>
204 const bool a_forceIrregNGP =
false)
const;
215 template <
class P, RealVect (P::*particleVectorField)() const>
220 const bool a_forceIrregNGP =
false)
const;
237 template <
class P, const RealVect& (P::*particleVectorField)() const>
242 const bool a_forceIrregNGP =
false)
const;
253 template <
class P, RealVect (P::*particleVectorField)() const>
258 const bool a_forceIrregNGP =
false)
const;
275 template <
class P, const RealVect& (P::*particleVectorField)() const>
280 const bool a_forceIrregNGP =
false)
const;
291 template <
class P, RealVect (P::*particleVectorField)() const>
296 const bool a_forceIrregNGP =
false)
const;
312 template <
class P, Real& (P::*particleScalarField)()>
315 const EBCellFAB& a_meshScalarField,
317 const bool a_forceIrregNGP =
false)
const;
333 template <
class P, RealVect& (P::*particleVectorField)()>
336 const EBCellFAB& a_meshVectorField,
338 const bool a_forceIrregNGP =
false)
const;
354 const RealVect& a_probLo,
355 const RealVect& a_dx,
356 const RealVect& a_position,
357 const Real* a_strength,
358 const Interval a_components,
360 const bool a_forceIrregNGP)
const;
375 const RealVect& a_probLo,
376 const RealVect& a_dx,
377 const RealVect& a_position,
378 const Real* a_strength,
379 const Interval a_components,
381 const bool a_forceIrregNGP)
const;
396 const RealVect& a_probLo,
397 const RealVect& a_dx,
398 const RealVect& a_position,
399 const Real* a_strength,
400 const Interval a_components,
402 const bool a_forceIrregNGP)
const;
420 const EBCellFAB& a_field,
421 const Box& a_validBox,
422 const RealVect& a_probLo,
423 const RealVect& a_dx,
424 const RealVect& a_position,
425 const Interval& a_interval,
427 const bool a_forceIrregNGP)
const;
455 #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. Contains various useful routines for interpolatio...
Definition: CD_EBParticleMesh.H:34
Box m_region
Cell-centered box, i.e. valid region.
Definition: CD_EBParticleMesh.H:437
EBParticleMesh()
Default constructor. Must subsequently call define.
Definition: CD_EBParticleMesh.cpp:19
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:36
void interpolate(List< P > &a_particleList, const EBCellFAB &a_meshScalarField, const DepositionType a_interpType, const bool a_forceIrregNGP=false) const
Interpolate a scalar field onto the particle position.
Definition: CD_EBParticleMeshImplem.H:340
void deposit2(const List< P > &a_particleList, EBCellFAB &a_rho, const DepositionType a_depositionType, const bool a_forceIrregNGP=false) const
Deposit particle onto the mesh using twice the standard cloud width.
Definition: CD_EBParticleMeshImplem.H:67
void interpolate(List< P > &a_particleList, const EBCellFAB &a_meshVectorField, const DepositionType a_interpType, const bool a_forceIrregNGP=false) const
Interpolate a vector field onto the particle position.
void interpolateParticle(Real *a_particleField, const EBCellFAB &a_field, const Box &a_validBox, const RealVect &a_probLo, const RealVect &a_dx, const RealVect &a_position, const Interval &a_interval, const DepositionType a_interpType, const bool a_forceIrregNGP) const
Wrapper function that interpolates a particle fields onto positions.
Definition: CD_EBParticleMeshImplem.H:824
void depositParticle(EBCellFAB &a_rho, const RealVect &a_probLo, const RealVect &a_dx, const RealVect &a_position, const Real *a_strength, const Interval a_components, const DepositionType a_depositionType, const bool a_forceIrregNGP) const
Wrapper function for depositing a single particle.
Definition: CD_EBParticleMeshImplem.H:460
void deposit4(const List< P > &a_particleList, EBCellFAB &a_rho, const DepositionType a_depositionType, const bool a_forceIrregNGP=false) const
Deposit particle onto the mesh using 4x the standard cloud width.
Definition: CD_EBParticleMeshImplem.H:121
void deposit(const List< P > &a_particleList, EBCellFAB &a_rho, const DepositionType a_depositionType, const bool a_forceIrregNGP=false) const
Deposit particle onto the mesh using a standard cloud width.
Definition: CD_EBParticleMeshImplem.H:25
RealVect m_dx
Grid resolution.
Definition: CD_EBParticleMesh.H:447
ProblemDomain m_domain
Problem domain.
Definition: CD_EBParticleMesh.H:432
void depositParticle2(EBCellFAB &a_rho, const RealVect &a_probLo, const RealVect &a_dx, const RealVect &a_position, const Real *a_strength, const Interval a_components, const DepositionType a_depositionType, const bool a_forceIrregNGP) const
Wrapper function for depositing a single particle which has twice the usual cloud width.
Definition: CD_EBParticleMeshImplem.H:619
EBISBox m_ebisbox
EBIS box.
Definition: CD_EBParticleMesh.H:442
RealVect m_probLo
Lower-left corner of computational domain.
Definition: CD_EBParticleMesh.H:452
void depositParticle4(EBCellFAB &a_rho, const RealVect &a_probLo, const RealVect &a_dx, const RealVect &a_position, const Real *a_strength, const Interval a_components, const DepositionType a_depositionType, const bool a_forceIrregNGP) const
Wrapper function for depositing a single particle which has four times the usual cloud width.
Definition: CD_EBParticleMeshImplem.H:722