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();
82 amrex::ParticleReal & AMREX_RESTRICT x,
83 amrex::ParticleReal & AMREX_RESTRICT y,
84 amrex::ParticleReal & AMREX_RESTRICT t,
85 amrex::ParticleReal & AMREX_RESTRICT px,
86 amrex::ParticleReal & AMREX_RESTRICT py,
87 amrex::ParticleReal & AMREX_RESTRICT pt,
88 [[maybe_unused]] uint64_t & AMREX_RESTRICT idcpu,
89 [[maybe_unused]]
RefPart const & refpart
92 using namespace amrex::literals;
98 amrex::ParticleReal
const xout =
x;
99 amrex::ParticleReal
const yout = y;
100 amrex::ParticleReal
const tout =
t;
103 amrex::ParticleReal dpx =
m_xkick;
104 amrex::ParticleReal dpy =
m_ykick;
105 if (
m_unit == UnitSystem::Tm) {
106 dpx /= refpart.rigidity_Tm();
107 dpy /= refpart.rigidity_Tm();
111 amrex::ParticleReal pxout = px;
112 amrex::ParticleReal pyout = py;
113 amrex::ParticleReal ptout = pt;
135 using Thin::operator();
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
T_ParticleType ParticleType
Definition: ImpactX.cpp:33
@ t
fixed t as the independent variable
amrex::ParticleReal m_ykick
horizontal kick strength
Definition: Kicker.H:138
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
UnitSystem m_unit
vertical kick strength
Definition: Kicker.H:139
amrex::ParticleReal m_xkick
Definition: Kicker.H:137
ImpactXParticleContainer::ParticleType PType
Definition: Kicker.H:34
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, [[maybe_unused]] uint64_t &AMREX_RESTRICT idcpu, [[maybe_unused]] RefPart const &refpart) const
Definition: Kicker.H:81
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
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:149
Definition: nofinalize.H:22