10#ifndef IMPACTX_DISTRIBUTION_WATERBAG
11#define IMPACTX_DISTRIBUTION_WATERBAG
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,
49 amrex::ParticleReal meanx=0.0,
50 amrex::ParticleReal meany=0.0,
51 amrex::ParticleReal meant=0.0,
52 amrex::ParticleReal meanpx=0.0,
53 amrex::ParticleReal meanpy=0.0,
54 amrex::ParticleReal meanpt=0.0,
55 amrex::ParticleReal dispx=0.0,
56 amrex::ParticleReal disppx=0.0,
57 amrex::ParticleReal dispy=0.0,
58 amrex::ParticleReal disppy=0.0
74 void initialize ([[maybe_unused]] amrex::ParticleReal bunch_charge, [[maybe_unused]]
RefPart const & ref)
108 using namespace amrex::literals;
111 amrex::ParticleReal ln1,norm,u1,u2;
112 amrex::ParticleReal g1,g2,g3,g4,g5,g6;
113 amrex::ParticleReal root,a1,a2;
118 ln1 = std::sqrt(-2_prt*std::log(u1));
119 g1 = ln1*std::cos(2_prt*pi*u2);
120 g2 = ln1*std::sin(2_prt*pi*u2);
123 ln1 = std::sqrt(-2_prt*std::log(u1));
124 g3 = ln1*std::cos(2_prt*pi*u2);
125 g4 = ln1*std::sin(2_prt*pi*u2);
128 ln1 = std::sqrt(-2_prt*std::log(u1));
129 g5 = ln1*std::cos(2_prt*pi*u2);
130 g6 = ln1*std::sin(2_prt*pi*u2);
133 norm = std::sqrt(g1*g1+g2*g2+g3*g3+g4*g4+g5*g5+g6*g6);
143 u2 = std::sqrt(8_prt)*std::pow(u1,1_prt/6_prt);
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
static constexpr amrex::Real pi
@ t
fixed t as the independent variable
Definition ImpactXParticleContainer.H:38
Definition ReferenceParticle.H:31
amrex::ParticleReal m_lambdaX
Definition Waterbag.H:183
amrex::ParticleReal m_muypy
Definition Waterbag.H:185
amrex::ParticleReal m_meany
Definition Waterbag.H:186
amrex::ParticleReal m_meanx
correlation length-momentum
Definition Waterbag.H:186
amrex::ParticleReal m_dispx
momentum coordinates of centroid offset
Definition Waterbag.H:188
amrex::ParticleReal m_muxpx
related momentum axis intercepts of the phase space ellipse
Definition Waterbag.H:185
Waterbag(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, amrex::ParticleReal meanx=0.0, amrex::ParticleReal meany=0.0, amrex::ParticleReal meant=0.0, amrex::ParticleReal meanpx=0.0, amrex::ParticleReal meanpy=0.0, amrex::ParticleReal meanpt=0.0, amrex::ParticleReal dispx=0.0, amrex::ParticleReal disppx=0.0, amrex::ParticleReal dispy=0.0, amrex::ParticleReal disppy=0.0)
Definition Waterbag.H:39
amrex::ParticleReal m_mutpt
Definition Waterbag.H:185
amrex::ParticleReal m_dispy
Definition Waterbag.H:188
void finalize()
Definition Waterbag.H:83
void initialize(amrex::ParticleReal bunch_charge, RefPart const &ref)
Definition Waterbag.H:74
amrex::ParticleReal m_meant
Definition Waterbag.H:186
amrex::ParticleReal m_meanpt
Definition Waterbag.H:187
amrex::ParticleReal m_disppy
Definition Waterbag.H:188
amrex::ParticleReal m_lambdaPt
Definition Waterbag.H:184
amrex::ParticleReal m_lambdaT
Definition Waterbag.H:183
amrex::ParticleReal m_lambdaPx
related position axis intercepts (length) of the phase space ellipse
Definition Waterbag.H:184
amrex::ParticleReal m_lambdaPy
Definition Waterbag.H:184
amrex::ParticleReal m_lambdaY
Definition Waterbag.H:183
amrex::ParticleReal m_meanpx
spatial coordinates of centroid offset
Definition Waterbag.H:187
amrex::ParticleReal m_meanpy
Definition Waterbag.H:187
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 Waterbag.H:98
amrex::ParticleReal m_disppx
Definition Waterbag.H:188