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

#include <DipEdge.H>

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

Public Types

using PType = ImpactXParticleContainer::ParticleType
 

Public Member Functions

 DipEdge (amrex::ParticleReal psi, amrex::ParticleReal rc, amrex::ParticleReal g, amrex::ParticleReal K2, amrex::ParticleReal dx=0, amrex::ParticleReal dy=0, amrex::ParticleReal rotation_degree=0)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator() (PType &AMREX_RESTRICT p, amrex::ParticleReal &AMREX_RESTRICT px, amrex::ParticleReal &AMREX_RESTRICT py, [[maybe_unused]] amrex::ParticleReal &AMREX_RESTRICT pt, [[maybe_unused]] RefPart const &refpart) const
 
- Public Member Functions inherited from impactx::elements::BeamOptic< DipEdge >
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 ()
 

Static Public Attributes

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

Private Attributes

amrex::ParticleReal m_psi
 
amrex::ParticleReal m_rc
 pole face angle in rad More...
 
amrex::ParticleReal m_g
 bend radius in m More...
 
amrex::ParticleReal m_K2
 gap parameter in m More...
 

Additional Inherited Members

- 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...
 

Member Typedef Documentation

◆ PType

Constructor & Destructor Documentation

◆ DipEdge()

impactx::DipEdge::DipEdge ( amrex::ParticleReal  psi,
amrex::ParticleReal  rc,
amrex::ParticleReal  g,
amrex::ParticleReal  K2,
amrex::ParticleReal  dx = 0,
amrex::ParticleReal  dy = 0,
amrex::ParticleReal  rotation_degree = 0 
)
inline

Edge focusing associated with bend entry or exit

This model assumes a first-order effect of nonzero gap. Here we use the linear fringe field map, given to first order in g/rc (gap / radius of curvature).

References: K. L. Brown, SLAC Report No. 75 (1982). K. Hwang and S. Y. Lee, PRAB 18, 122401 (2015).

Parameters
psiPole face angle in rad.
rcRadius of curvature in m.
gGap parameter in m.
K2Fringe field integral (unitless).
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::DipEdge::operator() ( PType &AMREX_RESTRICT  p,
amrex::ParticleReal &AMREX_RESTRICT  px,
amrex::ParticleReal &AMREX_RESTRICT  py,
[[maybe_unused] ] amrex::ParticleReal &AMREX_RESTRICT  pt,
[[maybe_unused] ] RefPart const &  refpart 
) const
inline

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

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

Member Data Documentation

◆ m_g

amrex::ParticleReal impactx::DipEdge::m_g
private

bend radius in m

◆ m_K2

amrex::ParticleReal impactx::DipEdge::m_K2
private

gap parameter in m

◆ m_psi

amrex::ParticleReal impactx::DipEdge::m_psi
private

◆ m_rc

amrex::ParticleReal impactx::DipEdge::m_rc
private

pole face angle in rad

◆ name

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

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