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

#include <ExactSbend.H>

Inheritance diagram for impactx::ExactSbend:
impactx::elements::BeamOptic< ExactSbend > impactx::elements::Thick impactx::elements::NoFinalize

Public Types

using PType = ImpactXParticleContainer::ParticleType
 

Public Member Functions

 ExactSbend (amrex::ParticleReal const ds, amrex::ParticleReal const phi, amrex::ParticleReal const B, int const nslice)
 
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, RefPart const &refpart) const
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator() (RefPart &AMREX_RESTRICT refpart) const
 
- Public Member Functions inherited from impactx::elements::BeamOptic< ExactSbend >
void operator() (ImpactXParticleContainer &pc, int step)
 
void operator() (ImpactXParticleContainer::iterator &pti, RefPart &AMREX_RESTRICT ref_part)
 
- Public Member Functions inherited from impactx::elements::Thick
 Thick (amrex::ParticleReal const ds, int const nslice)
 
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 = "ExactSbend"
 
static constexpr amrex::ParticleReal degree2rad = ablastr::constant::math::pi / 180.0
 

Private Attributes

amrex::ParticleReal m_phi
 
amrex::ParticleReal m_B
 bend angle in radians More...
 

Additional Inherited Members

- Protected Attributes inherited from impactx::elements::Thick
amrex::ParticleReal m_ds
 
int m_nslice
 segment length in m More...
 

Member Typedef Documentation

◆ PType

Constructor & Destructor Documentation

◆ ExactSbend()

impactx::ExactSbend::ExactSbend ( amrex::ParticleReal const  ds,
amrex::ParticleReal const  phi,
amrex::ParticleReal const  B,
int const  nslice 
)
inline

The body of an ideal sector bend, using the exact nonlinear transfer map. The map corresponds to the map described in: D. L. Bruhwiler et al, in Proc. of EPAC 98, pp. 1171-1173 (1998).

In the ultrarelativistic limit, this is equivalent to the map described in: E. Forest et al, Part. Accel. 45, pp. 65-94 (1994).

The model consists of a uniform bending field B_y with a hard edge. Pole faces are normal to the entry and exit velocity of the reference particle.

Parameters
dsSegment length in m.
phiSegment bend angle in degrees.
BMagnetic field strength in T. When B = 0 (default), the reference bending radius is defined by r0 = length / (angle in rad), corresponding to a magnetic field of B = rigidity / r0; otherwise the reference bending radius is defined by r0 = rigidity / B.
nslicenumber of slices used for the application of space charge

Member Function Documentation

◆ operator()() [1/2]

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void impactx::ExactSbend::operator() ( PType &AMREX_RESTRICT  p,
amrex::ParticleReal &AMREX_RESTRICT  px,
amrex::ParticleReal &AMREX_RESTRICT  py,
amrex::ParticleReal &AMREX_RESTRICT  pt,
RefPart const &  refpart 
) const
inline

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

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

◆ operator()() [2/2]

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void impactx::ExactSbend::operator() ( RefPart &AMREX_RESTRICT  refpart) const
inline

This pushes the reference particle.

Parameters
[in,out]refpartreference particle

Member Data Documentation

◆ degree2rad

constexpr amrex::ParticleReal impactx::ExactSbend::degree2rad = ablastr::constant::math::pi / 180.0
staticconstexpr

◆ m_B

amrex::ParticleReal impactx::ExactSbend::m_B
private

bend angle in radians

◆ m_phi

amrex::ParticleReal impactx::ExactSbend::m_phi
private

◆ name

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

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