10 #ifndef IMPACTX_DISTRIBUTION_KURTH6D 11 #define IMPACTX_DISTRIBUTION_KURTH6D 21 namespace distribution
37 Kurth6D(amrex::ParticleReal
const sigx, amrex::ParticleReal
const sigy,
38 amrex::ParticleReal
const sigt,amrex::ParticleReal
const sigpx,
39 amrex::ParticleReal
const sigpy,amrex::ParticleReal
const sigpt,
40 amrex::ParticleReal
const muxpx=0.0, amrex::ParticleReal
const muypy=0.0,
41 amrex::ParticleReal
const mutpt=0.0
60 amrex::ParticleReal & x,
61 amrex::ParticleReal & y,
62 amrex::ParticleReal & t,
63 amrex::ParticleReal & px,
64 amrex::ParticleReal & py,
65 amrex::ParticleReal & pt,
68 using namespace amrex::literals;
70 amrex::ParticleReal v,costheta,sintheta,phi,r;
71 amrex::ParticleReal L,
alpha,pmax,pr,beta,p1,p2;
72 amrex::ParticleReal root,a1,a2;
74 constexpr amrex::ParticleReal
pi = 3.14159265358979_prt;
79 costheta = 2_prt*(costheta-0.5_prt);
80 sintheta =
sqrt(1_prt-
pow(costheta,2));
85 r =
pow(v,1_prt/3_prt);
86 x = r*sintheta*cos(phi);
87 y = r*sintheta*sin(phi);
97 pmax = 1_prt -
pow(L/r,2) -
pow(r,2) +
pow(L,2);
103 beta = 2_prt*pi*beta;
108 px = pr*sintheta*cos(phi) + p2*costheta*cos(phi) - p1*sin(phi);
109 py = pr*sintheta*sin(phi) + p2*costheta*sin(phi) + p1*cos(phi);
110 pt = pr*costheta - p2*sintheta;
113 amrex::ParticleReal
c = sqrt(5.0_prt);
147 #endif // IMPACTX_DISTRIBUTION_KURTH6D amrex::ParticleReal m_muypy
Definition: Kurth6D.H:141
constexpr std::enable_if_t< std::is_floating_point< T >::value, T > pi()
amrex::ParticleReal m_muxpx
RMS momentum.
Definition: Kurth6D.H:141
Definition: ImpactX.cpp:31
amrex::ParticleReal m_sigmaT
Definition: Kurth6D.H:139
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator()(amrex::ParticleReal &x, amrex::ParticleReal &y, amrex::ParticleReal &t, amrex::ParticleReal &px, amrex::ParticleReal &py, amrex::ParticleReal &pt, amrex::RandomEngine const &engine) const
Definition: Kurth6D.H:59
amrex::ParticleReal m_sigmaY
Definition: Kurth6D.H:139
#define AMREX_FORCE_INLINE
amrex::ParticleReal m_sigmaPt
Definition: Kurth6D.H:140
amrex::ParticleReal m_sigmaX
Definition: Kurth6D.H:139
amrex::ParticleReal m_mutpt
Definition: Kurth6D.H:141
#define AMREX_GPU_HOST_DEVICE
Kurth6D(amrex::ParticleReal const sigx, amrex::ParticleReal const sigy, amrex::ParticleReal const sigt, amrex::ParticleReal const sigpx, amrex::ParticleReal const sigpy, amrex::ParticleReal const sigpt, amrex::ParticleReal const muxpx=0.0, amrex::ParticleReal const muypy=0.0, amrex::ParticleReal const mutpt=0.0)
Definition: Kurth6D.H:37
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > pow(const GpuComplex< T > &a_z, const T &a_y) noexcept
amrex::ParticleReal m_sigmaPx
related RMS sizes (length)
Definition: Kurth6D.H:140
amrex::ParticleReal m_sigmaPy
Definition: Kurth6D.H:140
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > sqrt(const GpuComplex< T > &a_z) noexcept