|
ImpactX
|
#include <ThinDipole.H>
Public Types | |
| using | PType = ImpactXParticleContainer::ParticleType |
Public Attributes | |
| amrex::ParticleReal | m_theta |
| amrex::ParticleReal | m_rc |
| dipole bending angle (rad) | |
| Public Attributes inherited from impactx::elements::mixin::Alignment | |
| amrex::ParticleReal | m_dx = 0 |
| amrex::ParticleReal | m_dy = 0 |
| horizontal translation error [m] | |
| amrex::ParticleReal | m_rotation = 0 |
| vertical translation error [m] | |
Static Public Attributes | |
| static constexpr auto | type = "ThinDipole" |
| Static Public Attributes inherited from impactx::elements::mixin::Named | |
| static constexpr std::nullopt_t | DEFAULT_name = std::nullopt |
| Static Public Attributes inherited from impactx::elements::mixin::LinearTransport< ThinDipole > | |
| static constexpr bool | has_linear_transport |
| Static Public Attributes inherited from impactx::elements::mixin::Alignment | |
| static constexpr amrex::ParticleReal | degree2rad |
| static constexpr amrex::ParticleReal | DEFAULT_dx = 0 |
| static constexpr amrex::ParticleReal | DEFAULT_dy = 0 |
| static constexpr amrex::ParticleReal | DEFAULT_rotation_degree = 0 |
| Static Public Attributes inherited from amrex::simd::Vectorized< amrex::simd::native_simd_size_particlereal > | |
| static constexpr int | simd_width |
Private Attributes | |
| amrex::ParticleReal | m_beta |
| curvature radius (m) | |
| amrex::ParticleReal | m_ds |
| beta of the reference particle | |
| amrex::ParticleReal | m_kx |
| effective (equivalent) arc length | |
|
inline |
A general thin-kick dipole element with chromatic effects
This model is equivalent to the model described in Section 3.1 of G. Ripken, F. Schmidt, "A Symplectic Six-Dimensional Thin-Lens Formalism for Tracking," CERN/SL/95-12 (AP), 1995. It is intended to replicate the thin-lens dipole model in MAD-X.
| theta | - the total bending angle (degrees) |
| rc | - the curvature radius (m) |
| dx | horizontal translation error in m |
| dy | vertical translation error in m |
| rotation_degree | rotation error in the transverse plane [degrees] |
| name | a user defined and not necessarily unique name of the element |
|
inline |
Compute and cache the constants for the push.
In particular, used to pre-compute and cache variables that are independent of the individually tracked particle.
| refpart | reference particle |
|
inline |
This pushes the reference particle.
| [in,out] | refpart | reference particle |
|
inline |
This is a multipole functor, so that a variable of this type can be used like a multipole function.
The
| x | particle position in x |
| y | particle position in y (unused) |
| t | particle position in t |
| px | particle momentum in x |
| py | particle momentum in y (unused) |
| pt | particle momentum in t |
| idcpu | particle global index (unused) |
| refpart | reference particle (unused) |
|
inline |
Reverse the element (negate bending angle)
|
inline |
This function returns the linear transport map.
Linearization of the Ripken-Schmidt thin-dipole kick about the reference trajectory. With the effective arc length ds = theta * rc and curvature kx = 1/rc, the thin kick is dpx = - kx^2 * ds * x + kx * ds * f(pt) dt = + kx * ds * x * f'(pt) where f(pt) = -1 + sqrt(1 - 2*pt/beta + pt^2) satisfies f(0) = 0, f'(0) = 1/beta. The Jacobian at the origin yields: R(2,1) = - kx^2 * ds = - theta / rc R(2,6) = - kx * ds / beta = - theta / beta R(5,1) = + kx * ds / beta = + theta / beta All other entries are identity.
Ideal behavior only: alignment and rotation errors and feed-down from a nonzero reference orbit are ignored; the linearization is taken at (x, y, t) = (0, 0, 0) and pt = 0.
| [in] | refpart | reference particle |
|
private |
curvature radius (m)
|
private |
beta of the reference particle
|
private |
effective (equivalent) arc length
| amrex::ParticleReal impactx::elements::ThinDipole::m_rc |
dipole bending angle (rad)
| amrex::ParticleReal impactx::elements::ThinDipole::m_theta |
|
staticconstexpr |