10 #ifndef IMPACTX_PARTICLE_CONTAINER_H
11 #define IMPACTX_PARTICLE_CONTAINER_H
26 #include <unordered_map>
54 static constexpr
auto names_s = {
"position_x",
"position_y",
"position_t" };
56 static constexpr
auto names_t = {
"position_x",
"position_y",
"position_z" };
82 static constexpr
auto names_s = {
"momentum_x",
"momentum_y",
"momentum_t",
"qm",
"weighting" };
84 static constexpr
auto names_t = {
"momentum_x",
"momentum_y",
"momentum_z",
"qm",
"weighting" };
106 :
public amrex::ParIter<0, 0, RealSoA::nattribs, IntSoA::nattribs>
177 amrex::ParticleReal
const & qm,
178 amrex::ParticleReal
const & bchchg);
234 amrex::ParticleReal, amrex::ParticleReal,
235 amrex::ParticleReal, amrex::ParticleReal,
236 amrex::ParticleReal, amrex::ParticleReal>
244 amrex::ParticleReal, amrex::ParticleReal,
245 amrex::ParticleReal, amrex::ParticleReal,
246 amrex::ParticleReal, amrex::ParticleReal>
259 DepositCharge (std::unordered_map<int, amrex::MultiFab> & rho,
Definition: ImpactXParticleContainer.H:138
virtual ~ImpactXParticleContainer()=default
Destruct a particle container.
void AddNParticles(int lev, amrex::Vector< amrex::ParticleReal > const &x, amrex::Vector< amrex::ParticleReal > const &y, amrex::Vector< amrex::ParticleReal > const &t, amrex::Vector< amrex::ParticleReal > const &px, amrex::Vector< amrex::ParticleReal > const &py, amrex::Vector< amrex::ParticleReal > const &pt, amrex::ParticleReal const &qm, amrex::ParticleReal const &bchchg)
Definition: ImpactXParticleContainer.cpp:85
int GetParticleShape() const
Definition: ImpactXParticleContainer.H:209
void SetRefParticle(RefPart const refpart)
Definition: ImpactXParticleContainer.cpp:158
void DepositCharge(std::unordered_map< int, amrex::MultiFab > &rho, amrex::Vector< amrex::IntVect > const &ref_ratio)
Definition: ChargeDeposition.cpp:25
std::tuple< amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal > MinAndMaxPositions()
Definition: ImpactXParticleContainer.cpp:185
ImpactXParticleContainer(amrex::AmrCore *amr_core)
Construct a new particle container.
Definition: ImpactXParticleContainer.cpp:54
void SetRefParticleEdge()
Definition: ImpactXParticleContainer.cpp:176
void SetParticleShape()
Definition: ImpactXParticleContainer.cpp:74
std::tuple< amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal > MeanAndStdPositions()
Definition: ImpactXParticleContainer.cpp:195
RefPart m_refpart
the reference particle for the beam in the particle container
Definition: ImpactXParticleContainer.H:265
std::optional< int > m_particle_shape
the particle shape
Definition: ImpactXParticleContainer.H:268
RefPart & GetRefParticle()
Definition: ImpactXParticleContainer.cpp:164
Definition: ImpactXParticleContainer.H:123
ParConstIter(ContainerType &pc, int level)
Definition: ImpactXParticleContainer.cpp:46
Definition: ImpactXParticleContainer.H:107
ParIter(ContainerType &pc, int level)
Definition: ImpactXParticleContainer.cpp:38
Definition: ImpactX.cpp:32
Definition: ImpactXParticleContainer.H:93
@ nattribs
the number of particles above (always last)
Definition: ImpactXParticleContainer.H:96
Definition: ImpactXParticleContainer.H:39
@ nattribs
the number of attributes above (always last)
Definition: ImpactXParticleContainer.H:45
@ x
position in x [m] (at fixed s OR fixed t)
Definition: ImpactXParticleContainer.H:42
@ y
position in y [m] (at fixed s OR fixed t)
Definition: ImpactXParticleContainer.H:43
@ t
c * time-of-flight [m] (at fixed s)
Definition: ImpactXParticleContainer.H:44
static constexpr auto names_t
named labels for fixed t
Definition: ImpactXParticleContainer.H:56
static constexpr auto names_s
named labels for fixed s
Definition: ImpactXParticleContainer.H:54
@ z
position in z [m] (at fixed t)
Definition: ImpactXParticleContainer.H:50
Definition: ImpactXParticleContainer.H:65
static constexpr auto names_s
named labels for fixed s
Definition: ImpactXParticleContainer.H:82
static constexpr auto names_t
named labels for fixed t
Definition: ImpactXParticleContainer.H:84
@ pz
momentum in z, scaled by the magnitude of the reference momentum [unitless] (at fixed t)
Definition: ImpactXParticleContainer.H:78
@ pt
energy deviation, scaled by speed of light * the magnitude of the reference momentum [unitless] (at f...
Definition: ImpactXParticleContainer.H:70
@ w
particle weight, number of real particles represented by this macroparticle [unitless]
Definition: ImpactXParticleContainer.H:72
@ px
momentum in x, scaled by the magnitude of the reference momentum [unitless] (at fixed s or t)
Definition: ImpactXParticleContainer.H:68
@ nattribs
the number of attributes above (always last)
Definition: ImpactXParticleContainer.H:73
@ py
momentum in y, scaled by the magnitude of the reference momentum [unitless] (at fixed s or t)
Definition: ImpactXParticleContainer.H:69
@ qm
charge to mass ratio, in q_e/m_e [q_e/eV]
Definition: ImpactXParticleContainer.H:71
Definition: ReferenceParticle.H:30