16#ifndef CD_PARTICLEOPS_H
17#define CD_PARTICLEOPS_H
20#include <RefCountedPtr.H>
28#include <CD_NamespaceHeader.H>
44 getParticleCellIndex(
const RealVect& a_particlePosition,
const RealVect& a_probLo,
const Real& a_dx)
noexcept;
54 getParticleCellIndex(
const RealVect& a_particlePosition,
const RealVect& a_probLo,
const RealVect& a_dx)
noexcept;
64 template <
typename P,
typename Traits>
75 template <
typename P,
typename Traits>
87 getParticleGridCell(
const RealVect& a_particlePosition,
const RealVect& a_probLo,
const RealVect& a_dx)
noexcept;
103 const RealVect& a_newPos,
104 const RealVect& a_probLo,
105 const RealVect& a_probHi,
123 const RealVect& a_oldPos,
124 const RealVect& a_newPos,
125 const Real& a_bisectStep,
146 const RealVect& a_oldPos,
147 const RealVect& a_newPos,
148 const Real& a_tolerance,
160 template <
typename P,
typename Traits>
171 template <
typename P,
typename Traits>
182 template <
typename P,
typename Traits>
188#include <CD_NamespaceFooter.H>
Class for holding data across EBAMR hierarchies.
Declaration of an AMR-hierarchy container that owns per-patch ParticleSoA leaves.
Implementation of CD_ParticleOps.H.
Implementation of CD_ParticleOps.H.
AMR-hierarchy container of computational particles, stored per patch in Struct-of-Arrays form.
Definition CD_ParticleContainer.H:123
A shallow static class for doing various kinds of particle-related operations.
Definition CD_ParticleOps.H:34
static Real sum(const ParticleContainer< P, Traits > &a_particles) noexcept
Global sum of the container-owned weight column (SoA overload).
Definition CD_ParticleOpsImplem.H:302
static bool ebIntersectionRaycast(const RefCountedPtr< BaseIF > &a_impFunc, const RealVect &a_oldPos, const RealVect &a_newPos, const Real &a_tolerance, Real &a_s)
Compute the intersection point between a particle path and an implicit function using a ray-casting a...
Definition CD_ParticleOpsImplem.H:224
static bool ebIntersectionBisect(const RefCountedPtr< BaseIF > &a_impFunc, const RealVect &a_oldPos, const RealVect &a_newPos, const Real &a_bisectStep, Real &a_s)
Compute the intersection point between a particle path and an implicit function using a bisection alg...
Definition CD_ParticleOpsImplem.H:175
static void copyDestructive(ParticleContainer< P, Traits > &a_dst, ParticleContainer< P, Traits > &a_src) noexcept
Move all particles from a_src into a_dst (per leaf), emptying a_src. SoA overload.
Definition CD_ParticleOpsImplem.H:278
static void getComputationalParticlesPerCell(EBAMRCellData &a_ppc, const ParticleContainer< P, Traits > &a_src) noexcept
Get the number of computational particles per cell (SoA overload).
Definition CD_ParticleOpsImplem.H:85
static IntVect getParticleGridCell(const RealVect &a_particlePosition, const RealVect &a_probLo, const RealVect &a_dx) noexcept
Get the grid cell where the particle lives.
Definition CD_ParticleOpsImplem.H:116
static void setData(ParticleContainer< P, Traits > &a_particles, const std::function< void(ParticleSoA< P, Traits > &, std::size_t)> &a_functor) noexcept
Set value function for SoA containers. Lets the user set particle parameters via a (leaf,...
Definition CD_ParticleOpsImplem.H:334
static IntVect getParticleCellIndex(const RealVect &a_particlePosition, const RealVect &a_probLo, const Real &a_dx) noexcept
Get the cell index corresponding to the particle position.
Definition CD_ParticleOpsImplem.H:32
static void getPhysicalParticlesPerCell(EBAMRCellData &a_ppc, const ParticleContainer< P, Traits > &a_src) noexcept
Get the number of physical particles per cell (SoA overload).
Definition CD_ParticleOpsImplem.H:53
static bool domainIntersection(const RealVect &a_oldPos, const RealVect &a_newPos, const RealVect &a_probLo, const RealVect &a_probHi, Real &a_s)
Compute the intersection point between a particle path and a domain side.
Definition CD_ParticleOpsImplem.H:126
Arena-backed Struct-of-Arrays particle container for a single grid patch.
Definition CD_ParticleSoA.H:655