10 #ifndef IMPACTX_DISTRIBUTION_TRIANGLE
11 #define IMPACTX_DISTRIBUTION_TRIANGLE
39 amrex::ParticleReal
const lambdax, amrex::ParticleReal
const lambday,
40 amrex::ParticleReal
const lambdat, amrex::ParticleReal
const lambdapx,
41 amrex::ParticleReal
const lambdapy, amrex::ParticleReal
const lambdapt,
42 amrex::ParticleReal
const muxpx=0.0, amrex::ParticleReal
const muypy=0.0,
43 amrex::ParticleReal
const mutpt=0.0
57 void initialize ([[maybe_unused]] amrex::ParticleReal bunch_charge, [[maybe_unused]]
RefPart const & ref)
82 amrex::ParticleReal & x,
83 amrex::ParticleReal & y,
84 amrex::ParticleReal & t,
85 amrex::ParticleReal & px,
86 amrex::ParticleReal & py,
87 amrex::ParticleReal & pt,
92 using namespace amrex::literals;
95 amrex::ParticleReal ln1,
norm, u0, u1, u2;
96 amrex::ParticleReal g1, g2, g3, g4, g5;
97 amrex::ParticleReal d, root, a1, a2;
108 g1 = ln1*cos(2_prt*
pi*u2);
109 g2 = ln1*sin(2_prt*
pi*u2);
113 g3 = ln1*cos(2_prt*
pi*u2);
114 g4 = ln1*sin(2_prt*
pi*u2);
118 g5 = ln1*cos(2_prt*
pi*u2);
124 norm =
sqrt(g1*g1+g2*g2+g3*g3+g4*g4);
133 u2 =
sqrt(d+2_prt)*
pow(u1,1_prt/d);
#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 > 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
@ t
fixed t as the independent variable
Definition: ReferenceParticle.H:30
Definition: Triangle.H:26
amrex::ParticleReal m_lambdaPy
Definition: Triangle.H:158
amrex::ParticleReal m_lambdaPx
related position axis intercepts (length) of the phase space ellipse
Definition: Triangle.H:158
amrex::ParticleReal m_lambdaT
Definition: Triangle.H:157
amrex::ParticleReal m_lambdaX
Definition: Triangle.H:157
amrex::ParticleReal m_mutpt
Definition: Triangle.H:159
amrex::ParticleReal m_lambdaY
Definition: Triangle.H:157
amrex::ParticleReal m_muypy
Definition: Triangle.H:159
amrex::ParticleReal m_lambdaPt
Definition: Triangle.H:158
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: Triangle.H:81
Triangle(amrex::ParticleReal const lambdax, amrex::ParticleReal const lambday, amrex::ParticleReal const lambdat, amrex::ParticleReal const lambdapx, amrex::ParticleReal const lambdapy, amrex::ParticleReal const lambdapt, amrex::ParticleReal const muxpx=0.0, amrex::ParticleReal const muypy=0.0, amrex::ParticleReal const mutpt=0.0)
Definition: Triangle.H:38
void initialize([[maybe_unused]] amrex::ParticleReal bunch_charge, [[maybe_unused]] RefPart const &ref)
Definition: Triangle.H:57
void finalize()
Definition: Triangle.H:66
amrex::ParticleReal m_muxpx
related momentum axis intercepts of the phase space ellipse
Definition: Triangle.H:159