10#ifndef IMPACTX_INITIALIZATION_INITDISTRIBUTION_H
11#define IMPACTX_INITIALIZATION_INITDISTRIBUTION_H
50 std::optional<amrex::ParticleReal> intensity = std::nullopt
66 template <
typename T_Distribution>
#define AMREX_FORCE_INLINE
amrex_particle_real ParticleReal
std::variant< Empty, Gaussian, Kurth4D, Kurth6D, KVdist, Thermal, Triangle, Semigaussian, Waterbag > KnownDistributions
Definition All.H:30
Definition AmrCoreData.cpp:18
void set_distribution_parameters_from_phase_space_inputs(amrex::ParmParse const &pp_dist, amrex::ParticleReal &lambdax, amrex::ParticleReal &lambday, amrex::ParticleReal &lambdat, amrex::ParticleReal &lambdapx, amrex::ParticleReal &lambdapy, amrex::ParticleReal &lambdapt, amrex::ParticleReal &muxpx, amrex::ParticleReal &muypy, amrex::ParticleReal &mutpt, amrex::ParticleReal &meanx, amrex::ParticleReal &meany, amrex::ParticleReal &meant, amrex::ParticleReal &meanpx, amrex::ParticleReal &meanpy, amrex::ParticleReal &meanpt, amrex::ParticleReal &dispx, amrex::ParticleReal &disppx, amrex::ParticleReal &dispy, amrex::ParticleReal &disppy)
Definition InitDistribution.cpp:503
RefPart read_reference_particle(amrex::ParmParse const &pp_dist)
Definition InitDistribution.cpp:40
distribution::KnownDistributions read_distribution(amrex::ParmParse const &pp_dist)
Definition InitDistribution.cpp:56
Envelope create_envelope(distribution::KnownDistributions const &distr, std::optional< amrex::ParticleReal > intensity=std::nullopt)
Definition InitDistribution.cpp:206
void set_distribution_parameters_from_twiss_inputs(amrex::ParmParse const &pp_dist, amrex::ParticleReal &lambdax, amrex::ParticleReal &lambday, amrex::ParticleReal &lambdat, amrex::ParticleReal &lambdapx, amrex::ParticleReal &lambdapy, amrex::ParticleReal &lambdapt, amrex::ParticleReal &muxpx, amrex::ParticleReal &muypy, amrex::ParticleReal &mutpt, amrex::ParticleReal &meanx, amrex::ParticleReal &meany, amrex::ParticleReal &meant, amrex::ParticleReal &meanpx, amrex::ParticleReal &meanpy, amrex::ParticleReal &meanpt, amrex::ParticleReal &dispx, amrex::ParticleReal &disppx, amrex::ParticleReal &dispy, amrex::ParticleReal &disppy)
Definition InitDistribution.cpp:423
~InitSingleParticleData()=default
amrex::ParticleReal *const AMREX_RESTRICT m_part_px
Definition InitDistribution.H:127
amrex::ParticleReal *const AMREX_RESTRICT m_part_pt
Definition InitDistribution.H:129
amrex::ParticleReal *const AMREX_RESTRICT m_part_t
Definition InitDistribution.H:126
amrex::ParticleReal *const AMREX_RESTRICT m_part_py
Definition InitDistribution.H:128
InitSingleParticleData()=delete
amrex::ParticleReal *const AMREX_RESTRICT m_part_y
Definition InitDistribution.H:125
amrex::ParticleReal *const AMREX_RESTRICT m_part_x
Definition InitDistribution.H:124
InitSingleParticleData(InitSingleParticleData const &)=default
InitSingleParticleData(InitSingleParticleData &&)=default
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void operator()(amrex::Long i, amrex::RandomEngine const &engine) const
Definition InitDistribution.H:106
InitSingleParticleData(T_Distribution distribution, amrex::ParticleReal *AMREX_RESTRICT part_x, amrex::ParticleReal *AMREX_RESTRICT part_y, amrex::ParticleReal *AMREX_RESTRICT part_t, amrex::ParticleReal *AMREX_RESTRICT part_px, amrex::ParticleReal *AMREX_RESTRICT part_py, amrex::ParticleReal *AMREX_RESTRICT part_pt)
Definition InitDistribution.H:79
T_Distribution const m_distribution
Definition InitDistribution.H:123
amrex::ParticleReal *const AMREX_RESTRICT m_part_sx
Definition InitDistribution.H:190
InitSingleParticleSpin()=delete
InitSingleParticleSpin(InitSingleParticleSpin const &)=default
amrex::ParticleReal *const AMREX_RESTRICT m_part_sz
Definition InitDistribution.H:192
~InitSingleParticleSpin()=default
distribution::SpinvMF const m_spinv
Definition InitDistribution.H:189
InitSingleParticleSpin(InitSingleParticleSpin &&)=default
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void operator()(amrex::Long i, amrex::RandomEngine const &engine) const
Definition InitDistribution.H:175
amrex::ParticleReal *const AMREX_RESTRICT m_part_sy
Definition InitDistribution.H:191
InitSingleParticleSpin(distribution::SpinvMF spinv, amrex::ParticleReal *AMREX_RESTRICT part_sx, amrex::ParticleReal *AMREX_RESTRICT part_sy, amrex::ParticleReal *AMREX_RESTRICT part_sz)
Definition InitDistribution.H:152