10 #ifndef IMPACTX_PARTICLE_CONTAINER_H
11 #define IMPACTX_PARTICLE_CONTAINER_H
27 #include <unordered_map>
61 static constexpr
auto names_s = {
"position_x",
"position_y",
"position_t" };
63 static constexpr
auto names_t = {
"position_x",
"position_y",
"position_z" };
89 static constexpr
auto names_s = {
"momentum_x",
"momentum_y",
"momentum_t",
"qm",
"weighting" };
91 static constexpr
auto names_t = {
"momentum_x",
"momentum_y",
"momentum_z",
"qm",
"weighting" };
113 :
public amrex::ParIter<0, 0, RealSoA::nattribs, IntSoA::nattribs>
183 amrex::ParticleReal qm,
184 amrex::ParticleReal bchchg
251 amrex::ParticleReal, amrex::ParticleReal,
252 amrex::ParticleReal, amrex::ParticleReal,
253 amrex::ParticleReal, amrex::ParticleReal>
261 amrex::ParticleReal, amrex::ParticleReal,
262 amrex::ParticleReal, amrex::ParticleReal,
263 amrex::ParticleReal, amrex::ParticleReal>
276 DepositCharge (std::unordered_map<int, amrex::MultiFab> & rho,
280 std::vector<std::string>
284 std::vector<std::string>
315 std::vector<std::string>
323 std::vector<std::string>
Definition: ImpactXParticleContainer.H:145
virtual ~ImpactXParticleContainer()=default
Destruct a particle container.
int GetParticleShape() const
Definition: ImpactXParticleContainer.H:226
void SetLostParticleContainer(ImpactXParticleContainer *lost_pc)
Definition: ImpactXParticleContainer.cpp:64
void DepositCharge(std::unordered_map< int, amrex::MultiFab > &rho, amrex::Vector< amrex::IntVect > const &ref_ratio)
Definition: ChargeDeposition.cpp:27
void AddNParticles(amrex::Gpu::DeviceVector< amrex::ParticleReal > const &x, amrex::Gpu::DeviceVector< amrex::ParticleReal > const &y, amrex::Gpu::DeviceVector< amrex::ParticleReal > const &t, amrex::Gpu::DeviceVector< amrex::ParticleReal > const &px, amrex::Gpu::DeviceVector< amrex::ParticleReal > const &py, amrex::Gpu::DeviceVector< amrex::ParticleReal > const &pt, amrex::ParticleReal qm, amrex::ParticleReal bchchg)
Definition: ImpactXParticleContainer.cpp:106
std::tuple< amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal > MinAndMaxPositions()
Definition: ImpactXParticleContainer.cpp:225
void SetRefParticle(RefPart const &refpart)
Definition: ImpactXParticleContainer.cpp:198
std::vector< std::string > RealAoS_names() const
Definition: ImpactXParticleContainer.cpp:244
std::vector< std::string > RealSoA_names() const
Definition: ImpactXParticleContainer.cpp:250
CoordSystem GetCoordSystem() const
Definition: ImpactXParticleContainer.cpp:256
void SetRefParticleEdge()
Definition: ImpactXParticleContainer.cpp:216
ImpactXParticleContainer * m_particles_lost
a non-owning reference to lost particles, i.e., due to apertures
Definition: ImpactXParticleContainer.H:307
ImpactXParticleContainer(initialization::AmrCoreData *amr_core)
Construct a new particle container.
Definition: ImpactXParticleContainer.cpp:57
void SetParticleShape()
Definition: ImpactXParticleContainer.cpp:95
void SetCoordSystem(CoordSystem coord_system)
Definition: ImpactXParticleContainer.cpp:262
ImpactXParticleContainer * GetLostParticleContainer()
Definition: ImpactXParticleContainer.cpp:70
std::tuple< amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal > MeanAndStdPositions()
Definition: ImpactXParticleContainer.cpp:235
RefPart m_refpart
the reference particle for the beam in the particle container
Definition: ImpactXParticleContainer.H:301
std::optional< int > m_particle_shape
the particle shape
Definition: ImpactXParticleContainer.H:304
CoordSystem m_coordsystem
the current coordinate system of particles in this container
Definition: ImpactXParticleContainer.H:310
RefPart & GetRefParticle()
Definition: ImpactXParticleContainer.cpp:204
Definition: ImpactXParticleContainer.H:130
ParConstIter(ContainerType &pc, int level)
Definition: ImpactXParticleContainer.cpp:49
Definition: ImpactXParticleContainer.H:114
ParIter(ContainerType &pc, int level)
Definition: ImpactXParticleContainer.cpp:41
Definition: AmrCoreData.H:42
Definition: ImpactX.cpp:35
std::vector< std::string > get_RealSoA_names(int num_real_comps)
Definition: ImpactXParticleContainer.cpp:279
std::vector< std::string > get_RealAoS_names()
Definition: ImpactXParticleContainer.cpp:268
CoordSystem
Definition: ImpactXParticleContainer.H:33
@ s
fixed s as the independent variable
@ t
fixed t as the independent variable
Definition: ImpactXParticleContainer.H:100
@ nattribs
the number of particles above (always last)
Definition: ImpactXParticleContainer.H:103
Definition: ImpactXParticleContainer.H:46
@ nattribs
the number of attributes above (always last)
Definition: ImpactXParticleContainer.H:52
@ x
position in x [m] (at fixed s OR fixed t)
Definition: ImpactXParticleContainer.H:49
@ y
position in y [m] (at fixed s OR fixed t)
Definition: ImpactXParticleContainer.H:50
@ t
c * time-of-flight [m] (at fixed s)
Definition: ImpactXParticleContainer.H:51
static constexpr auto names_t
named labels for fixed t
Definition: ImpactXParticleContainer.H:63
static constexpr auto names_s
named labels for fixed s
Definition: ImpactXParticleContainer.H:61
@ z
position in z [m] (at fixed t)
Definition: ImpactXParticleContainer.H:57
Definition: ImpactXParticleContainer.H:72
static constexpr auto names_s
named labels for fixed s
Definition: ImpactXParticleContainer.H:89
static constexpr auto names_t
named labels for fixed t
Definition: ImpactXParticleContainer.H:91
@ pz
momentum in z, scaled by the magnitude of the reference momentum [unitless] (at fixed t)
Definition: ImpactXParticleContainer.H:85
@ pt
energy deviation, scaled by speed of light * the magnitude of the reference momentum [unitless] (at f...
Definition: ImpactXParticleContainer.H:77
@ w
particle weight, number of real particles represented by this macroparticle [unitless]
Definition: ImpactXParticleContainer.H:79
@ px
momentum in x, scaled by the magnitude of the reference momentum [unitless] (at fixed s or t)
Definition: ImpactXParticleContainer.H:75
@ nattribs
the number of attributes above (always last)
Definition: ImpactXParticleContainer.H:80
@ py
momentum in y, scaled by the magnitude of the reference momentum [unitless] (at fixed s or t)
Definition: ImpactXParticleContainer.H:76
@ qm
charge to mass ratio, in q_e/m_e [q_e/eV]
Definition: ImpactXParticleContainer.H:78
Definition: ReferenceParticle.H:30