10 #ifndef IMPACTX_DISTRIBUTION_KURTH4D 11 #define IMPACTX_DISTRIBUTION_KURTH4D 21 namespace distribution
35 Kurth4D(amrex::ParticleReal
const sigx, amrex::ParticleReal
const sigy,
36 amrex::ParticleReal
const sigt,amrex::ParticleReal
const sigpx,
37 amrex::ParticleReal
const sigpy,amrex::ParticleReal
const sigpt,
38 amrex::ParticleReal
const muxpx=0.0, amrex::ParticleReal
const muypy=0.0,
39 amrex::ParticleReal
const mutpt=0.0
58 amrex::ParticleReal & x,
59 amrex::ParticleReal & y,
60 amrex::ParticleReal & t,
61 amrex::ParticleReal & px,
62 amrex::ParticleReal & py,
63 amrex::ParticleReal & pt,
66 using namespace amrex::literals;
68 amrex::ParticleReal v,phi,r,u1,u2,ln1;
69 amrex::ParticleReal
alpha,u,Lz,pmax,pr,pphi;
70 amrex::ParticleReal root,a1,a2;
72 constexpr amrex::ParticleReal pi = 3.14159265358979_prt;
84 Lz = r*(2.0_prt*u-1.0_prt);
89 pmax = 1.0_prt -
pow((Lz/r),2) -
pow(r,2) +
pow(Lz,2);
95 px = pr*cos(phi)-pphi*sin(phi);
96 py = pr*sin(phi)+pphi*cos(phi);
100 t = 2.0_prt*(t-0.5_prt);
104 pt = ln1*cos(2_prt*pi*u2);
107 amrex::ParticleReal
c =
sqrt(3.0_prt);
141 #endif // IMPACTX_DISTRIBUTION_KURTH4D amrex::ParticleReal m_sigmaPx
related RMS sizes (length)
Definition: Kurth4D.H:134
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: Kurth4D.H:57
Definition: ImpactX.cpp:31
amrex::ParticleReal m_sigmaX
Definition: Kurth4D.H:133
amrex::ParticleReal m_sigmaY
Definition: Kurth4D.H:133
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
amrex::ParticleReal m_sigmaPt
Definition: Kurth4D.H:134
amrex::ParticleReal m_muxpx
RMS momentum.
Definition: Kurth4D.H:135
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > log(const GpuComplex< T > &a_z) noexcept
amrex::ParticleReal m_sigmaPy
Definition: Kurth4D.H:134
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > pow(const GpuComplex< T > &a_z, const T &a_y) noexcept
amrex::ParticleReal m_sigmaT
Definition: Kurth4D.H:133
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > sqrt(const GpuComplex< T > &a_z) noexcept
Kurth4D(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: Kurth4D.H:35
amrex::ParticleReal m_mutpt
Definition: Kurth4D.H:135
amrex::ParticleReal m_muypy
Definition: Kurth4D.H:135