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

#include <Multipole.H>

Inheritance diagram for impactx::Multipole:
impactx::elements::BeamOptic< Multipole > impactx::elements::Thin impactx::elements::Alignment impactx::elements::NoFinalize

Public Types

using PType = ImpactXParticleContainer::ParticleType
 

Public Member Functions

 Multipole (int multipole, amrex::ParticleReal K_normal, amrex::ParticleReal K_skew, amrex::ParticleReal dx=0, amrex::ParticleReal dy=0, amrex::ParticleReal rotation_degree=0)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator() (amrex::ParticleReal &AMREX_RESTRICT x, amrex::ParticleReal &AMREX_RESTRICT y, [[maybe_unused]] 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
 
- Public Member Functions inherited from impactx::elements::BeamOptic< Multipole >
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::Alignment
 Alignment (amrex::ParticleReal dx, amrex::ParticleReal dy, amrex::ParticleReal rotation_degree)
 
 Alignment ()=default
 
 Alignment (Alignment const &)=default
 
Alignmentoperator= (Alignment const &)=default
 
 Alignment (Alignment &&)=default
 
Alignmentoperator= (Alignment &&rhs)=default
 
 ~Alignment ()=default
 
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
 
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
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dx () const
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dy () const
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal rotation () const
 
- Public Member Functions inherited from impactx::elements::NoFinalize
void finalize ()
 

Public Attributes

int m_multipole
 
int m_mfactorial
 multipole index More...
 
amrex::ParticleReal m_Kn
 factorial of multipole index More...
 
amrex::ParticleReal m_Ks
 integrated normal multipole coefficient More...
 
- Public Attributes inherited from impactx::elements::Alignment
amrex::ParticleReal m_dx = 0
 
amrex::ParticleReal m_dy = 0
 horizontal translation error [m] More...
 
amrex::ParticleReal m_rotation = 0
 vertical translation error [m] More...
 

Static Public Attributes

static constexpr auto name = "Multipole"
 
- Static Public Attributes inherited from impactx::elements::Alignment
static constexpr amrex::ParticleReal degree2rad = ablastr::constant::math::pi / 180.0
 

Member Typedef Documentation

◆ PType

Constructor & Destructor Documentation

◆ Multipole()

impactx::Multipole::Multipole ( int  multipole,
amrex::ParticleReal  K_normal,
amrex::ParticleReal  K_skew,
amrex::ParticleReal  dx = 0,
amrex::ParticleReal  dy = 0,
amrex::ParticleReal  rotation_degree = 0 
)
inline

A general thin multipole element

Parameters
multipoleindex m (m=1 dipole, m=2 quadrupole, m=3 sextupole etc.)
K_normalIntegrated normal multipole coefficient (1/meter^m)
K_skewIntegrated skew multipole coefficient (1/meter^m)
dxhorizontal translation error in m
dyvertical translation error in m
rotation_degreerotation error in the transverse plane [degrees]

Member Function Documentation

◆ operator()()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void impactx::Multipole::operator() ( amrex::ParticleReal &AMREX_RESTRICT  x,
amrex::ParticleReal &AMREX_RESTRICT  y,
[[maybe_unused] ] 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
inline

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

Parameters
xparticle position in x
yparticle position in y
tparticle position in t
pxparticle momentum in x
pyparticle momentum in y
ptparticle momentum in t
idcpuparticle global index (unused)
refpartreference particle (unused)

Member Data Documentation

◆ m_Kn

amrex::ParticleReal impactx::Multipole::m_Kn

factorial of multipole index

◆ m_Ks

amrex::ParticleReal impactx::Multipole::m_Ks

integrated normal multipole coefficient

◆ m_mfactorial

int impactx::Multipole::m_mfactorial

multipole index

◆ m_multipole

int impactx::Multipole::m_multipole

◆ name

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

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