ImpactX
Public Types | Public Member Functions | Static Public Attributes | Private Attributes | List of all members
impactx::Kicker Struct Reference

#include <Kicker.H>

Inheritance diagram for impactx::Kicker:
impactx::elements::BeamOptic< Kicker > impactx::elements::Thin impactx::elements::NoFinalize

Public Types

enum  UnitSystem { dimensionless = 0 , Tm = 1 }
 
using PType = ImpactXParticleContainer::ParticleType
 

Public Member Functions

 Kicker (amrex::ParticleReal xkick, amrex::ParticleReal ykick, UnitSystem unit)
 
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
 
- Public Member Functions inherited from impactx::elements::BeamOptic< Kicker >
void operator() (ImpactXParticleContainer &pc, int step)
 
void operator() (ImpactXParticleContainer::iterator &pti, RefPart &AMREX_RESTRICT ref_part)
 
- Public Member Functions inherited from impactx::elements::Thin
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator() ([[maybe_unused]] RefPart &AMREX_RESTRICT refpart) const
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int nslice () const
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal ds () const
 
- Public Member Functions inherited from impactx::elements::NoFinalize
void finalize ()
 

Static Public Attributes

static constexpr auto name = "Kicker"
 

Private Attributes

amrex::ParticleReal m_xkick
 
amrex::ParticleReal m_ykick
 horizontal kick strength More...
 
UnitSystem m_unit
 vertical kick strength More...
 

Member Typedef Documentation

◆ PType

Member Enumeration Documentation

◆ UnitSystem

Enumerator
dimensionless 
Tm 

in units of the magnetic rigidity of the reference particle

Constructor & Destructor Documentation

◆ Kicker()

impactx::Kicker::Kicker ( amrex::ParticleReal  xkick,
amrex::ParticleReal  ykick,
UnitSystem  unit 
)
inline

A thin transverse kicker element, inducing a transverse momentum displacement from the reference orbit.

Parameters
xkickStrength of horizontal kick
ykickStrength of vertical kick
unitunits of xkick and ykick

Member Function Documentation

◆ operator()()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void impactx::Kicker::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
inline

This is a transverse kicker functor, so that a variable of this type can be used like a function.

Parameters
pParticle AoS data for positions and cpu/id
pxparticle momentum in x
pyparticle momentum in y
ptparticle momentum in t
refpartreference particle (unused)

Member Data Documentation

◆ m_unit

UnitSystem impactx::Kicker::m_unit
private

vertical kick strength

◆ m_xkick

amrex::ParticleReal impactx::Kicker::m_xkick
private

◆ m_ykick

amrex::ParticleReal impactx::Kicker::m_ykick
private

horizontal kick strength

◆ name

constexpr auto impactx::Kicker::name = "Kicker"
staticconstexpr

The documentation for this struct was generated from the following file: