Open
Description
In WarpX, the user can define runtime attribute on the particles, that are then tracked during the simulation. (See addRealAttributes
in the WarpX documentation ; a typical example is tracking the x/y/z position at which a particle was created.)
However, these runtime attribute are only correctly set when particles are created via the functions AddNParticles
, AddPlasma
or AddPlasmaFlux
(see #3272). This happens when we initialize particles through our various initialization/injection methods, but not when creating particles via multi-physics modules. In particular:
- Creation through binary collision processes: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/Collision/BinaryCollision/ParticleCreationFunc.H#L134
- Creation through
filterCopyTransformParticles
: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/ParticleCreation/FilterCopyTransform.H#L64
which includes impact ionization in the MCC process: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/Collision/BackgroundMCC/BackgroundMCCCollision.cpp#L504, field ionization: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/MultiParticleContainer.cpp#L902, Breit-Wheeler: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/MultiParticleContainer.cpp#L1539 and Quantum Synchrotron: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/MultiParticleContainer.cpp#L1619 - Creation through
filterCreateTransformFromFAB
: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/ParticleCreation/FilterCreateTransformFromFAB.H#L86 which includes the Schwinger process: https://github.com/ECP-WarpX/WarpX/blob/development/Source/Particles/MultiParticleContainer.cpp#L1619