chombo-discharge
Loading...
Searching...
No Matches
Classes
CD_EBParticleMesh.H File Reference

Single-patch ParticleSoA deposit/interpolate onto an embedded-boundary mesh. More...

#include <cstddef>
#include <type_traits>
#include <utility>
#include <CH_Timer.H>
#include <ProblemDomain.H>
#include <EBISBox.H>
#include <EBCellFAB.H>
#include <RealVect.H>
#include <Box.H>
#include <IntVect.H>
#include <CD_DepositionType.H>
#include <CD_ParticleOps.H>
#include <CD_BoxLoops.H>
#include <CD_ParticleSoA.H>
#include <CD_NamespaceHeader.H>
#include <CD_NamespaceFooter.H>
Include dependency graph for CD_EBParticleMesh.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  EBParticleMesh
 Deposits/interpolates ParticleSoA leaves on a single patch, with embedded-boundary (cut-cell) awareness. More...
 

Detailed Description

Single-patch ParticleSoA deposit/interpolate onto an embedded-boundary mesh.

Author
Robert Marskar

Deposits and interpolates ParticleSoA<P, Traits> leaves on a single grid patch. The per-particle EB/cut-cell kernels (the depositParticleXXX / interpolateParticleXXX helpers) are storage-agnostic (position + Real* field + numComp) and take a destination-component offset. The public loops:

Destination components

Every public deposit/interpolate comes in two forms: a CORE form taking an explicit starting mesh component a_comp (the selected columns map to consecutive components [a_comp, a_comp + nColumns)), and a CONVENIENCE overload that omits a_comp and uses the first components (a_comp == 0).

Why depositWeight is separate

weight is a container-OWNED mandatory column, not a payload member, so it cannot be named by the deposit<&Payload::field> selector. depositWeight() is its entry point. Mechanically it is the same as deposit() – both are thin wrappers that hand depositCore a strength gatherer – it just gathers from weightColumn() instead of payload columns.

Note
Per project rule, NO default arguments – callers specify every argument (the "first components" behaviour is provided by an overload, not a default).
depositParticleTSC fixes a partition-of-unity bug present in the original AoS kernels (see the kernel).