10 #ifndef IMPACTX_DISTRIBUTION_WATERBAG
11 #define IMPACTX_DISTRIBUTION_WATERBAG
32 Waterbag(amrex::ParticleReal
const sigx, amrex::ParticleReal
const sigy,
33 amrex::ParticleReal
const sigt,amrex::ParticleReal
const sigpx,
34 amrex::ParticleReal
const sigpy,amrex::ParticleReal
const sigpt,
35 amrex::ParticleReal
const muxpx=0.0, amrex::ParticleReal
const muypy=0.0,
36 amrex::ParticleReal
const mutpt=0.0
55 amrex::ParticleReal & x,
56 amrex::ParticleReal & y,
57 amrex::ParticleReal & t,
58 amrex::ParticleReal & px,
59 amrex::ParticleReal & py,
60 amrex::ParticleReal & pt,
63 using namespace amrex::literals;
65 amrex::ParticleReal ln1,
norm,u1,u2;
66 amrex::ParticleReal g1,g2,g3,g4,g5,g6;
67 amrex::ParticleReal root,a1,a2;
69 constexpr amrex::ParticleReal
pi = 3.14159265358979_prt;
75 g1 = ln1*cos(2_prt*
pi*u2);
76 g2 = ln1*sin(2_prt*
pi*u2);
80 g3 = ln1*cos(2_prt*
pi*u2);
81 g4 = ln1*sin(2_prt*
pi*u2);
85 g5 = ln1*cos(2_prt*
pi*u2);
86 g6 = ln1*sin(2_prt*
pi*u2);
89 norm =
sqrt(g1*g1+g2*g2+g3*g3+g4*g4+g5*g5+g6*g6);
99 u2 =
sqrt(8_prt)*
pow(u1,1_prt/6);
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
constexpr std::enable_if_t< std::is_floating_point< T >::value, T > pi()
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > log(const GpuComplex< T > &a_z) noexcept
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE T norm(const GpuComplex< T > &a_z) noexcept
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
Definition: Waterbag.H:22
amrex::ParticleReal m_muypy
Definition: Waterbag.H:127
amrex::ParticleReal m_sigmaPx
related RMS sizes (length)
Definition: Waterbag.H:126
amrex::ParticleReal m_muxpx
RMS momentum.
Definition: Waterbag.H:127
amrex::ParticleReal m_mutpt
Definition: Waterbag.H:127
amrex::ParticleReal m_sigmaPt
Definition: Waterbag.H:126
amrex::ParticleReal m_sigmaT
Definition: Waterbag.H:125
amrex::ParticleReal m_sigmaY
Definition: Waterbag.H:125
amrex::ParticleReal m_sigmaX
Definition: Waterbag.H:125
Waterbag(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: Waterbag.H:32
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: Waterbag.H:54
amrex::ParticleReal m_sigmaPy
Definition: Waterbag.H:126