10 #ifndef IMPACTX_INVARIANTS_H
11 #define IMPACTX_INVARIANTS_H
40 amrex::ParticleReal
H;
41 amrex::ParticleReal
I;
54 amrex::ParticleReal
const alpha,
55 amrex::ParticleReal
const beta,
56 amrex::ParticleReal
const tn,
57 amrex::ParticleReal
const cn )
72 amrex::ParticleReal
const x,
73 amrex::ParticleReal
const y,
74 amrex::ParticleReal
const px,
75 amrex::ParticleReal
const py
78 using namespace amrex::literals;
84 amrex::ParticleReal
const xn =
x/(
m_cn*std::sqrt(
m_beta));
85 amrex::ParticleReal
const yn = y/(
m_cn*std::sqrt(
m_beta));
91 Complex const zetaconj(xn, -yn);
92 Complex const re1(1.0_prt, 0.0_prt);
93 Complex const im1(0.0_prt, 1.0_prt);
101 Complex carcsin = im1*zeta + croot;
105 Complex Hpotential = zeta/croot;
106 Hpotential = Hpotential*carcsin;
109 Complex Ipotential = (zeta+zetaconj)/croot;
110 Ipotential = Ipotential*carcsin;
113 amrex::ParticleReal Hinv = Hpotential.
m_real;
114 amrex::ParticleReal Iinv = Ipotential.
m_real;
117 amrex::ParticleReal
const Jz = xn*pyn - yn*pxn;
118 Hinv = (std::pow(xn,2) + std::pow(yn,2) + std::pow(pxn,2) + std::pow(pyn,2))/2
120 Iinv = std::pow(Jz,2) + std::pow(pxn,2) + std::pow(xn,2) +
m_tn*Iinv;
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
T_ParticleType ParticleType
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > log(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: DiagnosticOutput.cpp:26
Definition: NonlinearLensInvariants.H:39
amrex::ParticleReal I
second phase space function ("second invariant")
Definition: NonlinearLensInvariants.H:41
amrex::ParticleReal H
first phase space function (Hamiltonian)
Definition: NonlinearLensInvariants.H:40
Definition: NonlinearLensInvariants.H:31
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE Data operator()(amrex::ParticleReal const x, amrex::ParticleReal const y, amrex::ParticleReal const px, amrex::ParticleReal const py) const
Definition: NonlinearLensInvariants.H:71
ImpactXParticleContainer::ParticleType PType
Definition: NonlinearLensInvariants.H:32
amrex::ParticleReal m_beta
Twiss alpha.
Definition: NonlinearLensInvariants.H:128
NonlinearLensInvariants(amrex::ParticleReal const alpha, amrex::ParticleReal const beta, amrex::ParticleReal const tn, amrex::ParticleReal const cn)
Definition: NonlinearLensInvariants.H:53
amrex::ParticleReal m_tn
Twiss beta (m)
Definition: NonlinearLensInvariants.H:129
amrex::ParticleReal m_cn
dimensionless strength of the nonlinear insert
Definition: NonlinearLensInvariants.H:130
amrex::ParticleReal m_alpha
Definition: NonlinearLensInvariants.H:127