10 #ifndef IMPACTX_KICKER_H
11 #define IMPACTX_KICKER_H
33 static constexpr
auto name =
"Kicker";
53 amrex::ParticleReal xkick,
54 amrex::ParticleReal ykick,
56 amrex::ParticleReal
dx = 0,
57 amrex::ParticleReal
dy = 0,
58 amrex::ParticleReal rotation_degree = 0
66 using BeamOptic::operator();
79 PType& AMREX_RESTRICT p,
80 amrex::ParticleReal & AMREX_RESTRICT px,
81 amrex::ParticleReal & AMREX_RESTRICT py,
82 amrex::ParticleReal & AMREX_RESTRICT pt,
83 [[maybe_unused]]
RefPart const & refpart)
const
85 using namespace amrex::literals;
91 amrex::ParticleReal
const x = p.pos(
RealAoS::x);
92 amrex::ParticleReal
const y = p.pos(
RealAoS::y);
96 amrex::ParticleReal dpx =
m_xkick;
97 amrex::ParticleReal dpy =
m_ykick;
98 if (
m_unit == UnitSystem::Tm) {
99 dpx /= refpart.rigidity_Tm();
100 dpy /= refpart.rigidity_Tm();
104 amrex::ParticleReal pxout = px;
105 amrex::ParticleReal pyout = py;
106 amrex::ParticleReal ptout = pt;
128 using Thin::operator();
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
T_ParticleType ParticleType
Definition: ImpactX.cpp:35
@ t
fixed t as the independent variable
amrex::ParticleReal m_ykick
horizontal kick strength
Definition: Kicker.H:132
UnitSystem
Definition: Kicker.H:37
@ Tm
in units of the magnetic rigidity of the reference particle
Definition: Kicker.H:39
@ dimensionless
Definition: Kicker.H:38
static constexpr auto name
Definition: Kicker.H:33
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator()(PType &AMREX_RESTRICT p, amrex::ParticleReal &AMREX_RESTRICT px, amrex::ParticleReal &AMREX_RESTRICT py, amrex::ParticleReal &AMREX_RESTRICT pt, [[maybe_unused]] RefPart const &refpart) const
Definition: Kicker.H:78
UnitSystem m_unit
vertical kick strength
Definition: Kicker.H:133
amrex::ParticleReal m_xkick
Definition: Kicker.H:131
ImpactXParticleContainer::ParticleType PType
Definition: Kicker.H:34
Kicker(amrex::ParticleReal xkick, amrex::ParticleReal ykick, UnitSystem unit, amrex::ParticleReal dx=0, amrex::ParticleReal dy=0, amrex::ParticleReal rotation_degree=0)
Definition: Kicker.H:52
@ x
position in x [m] (at fixed s OR fixed t)
Definition: ImpactXParticleContainer.H:49
@ y
position in y [m] (at fixed s OR fixed t)
Definition: ImpactXParticleContainer.H:50
@ t
c * time-of-flight [m] (at fixed s)
Definition: ImpactXParticleContainer.H:51
Definition: ReferenceParticle.H:30
Definition: alignment.H:27
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void shift_out(amrex::ParticleReal &AMREX_RESTRICT x, amrex::ParticleReal &AMREX_RESTRICT y, amrex::ParticleReal &AMREX_RESTRICT px, amrex::ParticleReal &AMREX_RESTRICT py) const
Definition: alignment.H:91
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dx() const
Definition: alignment.H:120
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void shift_in(amrex::ParticleReal &AMREX_RESTRICT x, amrex::ParticleReal &AMREX_RESTRICT y, amrex::ParticleReal &AMREX_RESTRICT px, amrex::ParticleReal &AMREX_RESTRICT py) const
Definition: alignment.H:61
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dy() const
Definition: alignment.H:130
Definition: beamoptic.H:135
Definition: nofinalize.H:22