10 #ifndef IMPACTX_DISTRIBUTION_KURTH6D
11 #define IMPACTX_DISTRIBUTION_KURTH6D
40 amrex::ParticleReal lambdax,
41 amrex::ParticleReal lambday,
42 amrex::ParticleReal lambdat,
43 amrex::ParticleReal lambdapx,
44 amrex::ParticleReal lambdapy,
45 amrex::ParticleReal lambdapt,
46 amrex::ParticleReal muxpx=0.0,
47 amrex::ParticleReal muypy=0.0,
48 amrex::ParticleReal mutpt=0.0
62 void initialize ([[maybe_unused]] amrex::ParticleReal bunch_charge, [[maybe_unused]]
RefPart const & ref)
87 amrex::ParticleReal & AMREX_RESTRICT x,
88 amrex::ParticleReal & AMREX_RESTRICT y,
89 amrex::ParticleReal & AMREX_RESTRICT t,
90 amrex::ParticleReal & AMREX_RESTRICT px,
91 amrex::ParticleReal & AMREX_RESTRICT py,
92 amrex::ParticleReal & AMREX_RESTRICT pt,
96 using namespace amrex::literals;
99 amrex::ParticleReal v,costheta,sintheta,phi,
r;
100 amrex::ParticleReal L,
alpha,pmax,pr,
beta,p1,p2;
101 amrex::ParticleReal root,a1,a2;
106 costheta = 2_prt*(costheta-0.5_prt);
107 sintheta =
sqrt(1_prt-
pow(costheta,2));
112 r =
pow(v,1_prt/3_prt);
113 x =
r*sintheta*cos(phi);
114 y =
r*sintheta*sin(phi);
126 pr = pmax*cos(
alpha);
135 px = pr*sintheta*cos(phi) + p2*costheta*cos(phi) - p1*sin(phi);
136 py = pr*sintheta*sin(phi) + p2*costheta*sin(phi) + p1*cos(phi);
137 pt = pr*costheta - p2*sintheta;
140 amrex::ParticleReal
const c =
sqrt(5.0_prt);
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
static constexpr amrex::Real pi
constexpr std::enable_if_t< std::is_floating_point_v< T >, T > pi()
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > pow(const GpuComplex< T > &a_z, const T &a_y) noexcept
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > sqrt(const GpuComplex< T > &a_z) noexcept
@ t
fixed t as the independent variable
Definition: ReferenceParticle.H:30
void initialize([[maybe_unused]] amrex::ParticleReal bunch_charge, [[maybe_unused]] RefPart const &ref)
Definition: Kurth6D.H:62
amrex::ParticleReal m_lambdaPy
Definition: Kurth6D.H:168
amrex::ParticleReal m_lambdaT
Definition: Kurth6D.H:167
void finalize()
Definition: Kurth6D.H:71
Kurth6D(amrex::ParticleReal lambdax, amrex::ParticleReal lambday, amrex::ParticleReal lambdat, amrex::ParticleReal lambdapx, amrex::ParticleReal lambdapy, amrex::ParticleReal lambdapt, amrex::ParticleReal muxpx=0.0, amrex::ParticleReal muypy=0.0, amrex::ParticleReal mutpt=0.0)
Definition: Kurth6D.H:39
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator()(amrex::ParticleReal &AMREX_RESTRICT x, amrex::ParticleReal &AMREX_RESTRICT y, amrex::ParticleReal &AMREX_RESTRICT t, amrex::ParticleReal &AMREX_RESTRICT px, amrex::ParticleReal &AMREX_RESTRICT py, amrex::ParticleReal &AMREX_RESTRICT pt, amrex::RandomEngine const &engine) const
Definition: Kurth6D.H:86
amrex::ParticleReal m_muypy
Definition: Kurth6D.H:169
amrex::ParticleReal m_muxpx
related momentum axis intercepts of the phase space ellipse
Definition: Kurth6D.H:169
amrex::ParticleReal m_lambdaY
Definition: Kurth6D.H:167
amrex::ParticleReal m_lambdaPx
related position axis intercepts (length) of the phase space ellipse
Definition: Kurth6D.H:168
amrex::ParticleReal m_mutpt
Definition: Kurth6D.H:169
amrex::ParticleReal m_lambdaPt
Definition: Kurth6D.H:168
amrex::ParticleReal m_lambdaX
Definition: Kurth6D.H:167