|
| | ExactSbend (amrex::ParticleReal ds, amrex::ParticleReal phi, amrex::ParticleReal B, amrex::ParticleReal dx=0, amrex::ParticleReal dy=0, amrex::ParticleReal rotation_degree=0, amrex::ParticleReal aperture_x=0, amrex::ParticleReal aperture_y=0, int nslice=1, std::optional< std::string > name=std::nullopt) |
| |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal | rc (RefPart const &refpart) const |
| |
| void | compute_constants (RefPart const &refpart) |
| |
| template<typename T_Real = amrex::ParticleReal, typename T_IdCpu = uint64_t> |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | operator() (T_Real &AMREX_RESTRICT x, T_Real &AMREX_RESTRICT y, T_Real &AMREX_RESTRICT t, T_Real &AMREX_RESTRICT px, T_Real &AMREX_RESTRICT py, T_Real &AMREX_RESTRICT pt, T_IdCpu &AMREX_RESTRICT idcpu, RefPart const &AMREX_RESTRICT refpart) const |
| |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | operator() (RefPart &AMREX_RESTRICT refpart) const |
| |
| AMREX_GPU_HOST AMREX_FORCE_INLINE Map6x6 | transport_map (RefPart const &AMREX_RESTRICT refpart) const |
| |
| AMREX_GPU_HOST void | set_name (std::string const &new_name) |
| |
| AMREX_GPU_HOST | Named (std::optional< std::string > name) |
| |
| AMREX_GPU_HOST_DEVICE | ~Named () |
| |
| AMREX_GPU_HOST | Named (Named const &other) |
| |
| AMREX_GPU_HOST Named & | operator= (Named const &other) |
| |
| AMREX_GPU_HOST_DEVICE | Named (Named &&other) noexcept |
| |
| AMREX_GPU_HOST_DEVICE Named & | operator= (Named &&other) noexcept |
| |
| AMREX_FORCE_INLINE std::string | name () const |
| |
| AMREX_FORCE_INLINE bool | has_name () const |
| |
| void | operator() (ImpactXParticleContainer &pc, int step, int period) |
| |
| void | operator() (ImpactXParticleContainer::iterator &pti, RefPart &AMREX_RESTRICT ref_part) |
| |
| | LinearTransport ()=default |
| |
| | LinearTransport (LinearTransport const &)=default |
| |
| | LinearTransport (LinearTransport &&)=default |
| |
| LinearTransport & | operator= (LinearTransport const &)=default |
| |
| LinearTransport & | operator= (LinearTransport &&rhs)=default |
| |
| | ~LinearTransport ()=default |
| |
| AMREX_GPU_HOST AMREX_FORCE_INLINE void | operator() (Map6x6 &AMREX_RESTRICT cm, RefPart const &AMREX_RESTRICT ref) const |
| |
| | Thick (amrex::ParticleReal ds, int nslice) |
| |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int | nslice () const |
| |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal | ds () const |
| |
| | Alignment (amrex::ParticleReal dx, amrex::ParticleReal dy, amrex::ParticleReal rotation_degree) |
| |
| | Alignment ()=default |
| |
| | Alignment (Alignment const &)=default |
| |
| Alignment & | operator= (Alignment const &)=default |
| |
| | Alignment (Alignment &&)=default |
| |
| Alignment & | operator= (Alignment &&rhs)=default |
| |
| | ~Alignment ()=default |
| |
| void | compute_constants (RefPart const &refpart) |
| |
| template<typename T_Real> |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | shift_in (T_Real &AMREX_RESTRICT x, T_Real &AMREX_RESTRICT y, T_Real &AMREX_RESTRICT px, T_Real &AMREX_RESTRICT py) const |
| |
| template<typename T_Real> |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | shift_out (T_Real &AMREX_RESTRICT x, T_Real &AMREX_RESTRICT y, T_Real &AMREX_RESTRICT px, T_Real &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 |
| |
| | PipeAperture (amrex::ParticleReal aperture_x, amrex::ParticleReal aperture_y) |
| |
| | PipeAperture ()=default |
| |
| | PipeAperture (PipeAperture const &)=default |
| |
| PipeAperture & | operator= (PipeAperture const &)=default |
| |
| | PipeAperture (PipeAperture &&)=default |
| |
| PipeAperture & | operator= (PipeAperture &&rhs)=default |
| |
| | ~PipeAperture ()=default |
| |
| template<typename T_Real = amrex::ParticleReal, typename T_IdCpu = uint64_t> |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | apply_aperture (T_Real &AMREX_RESTRICT x, T_Real &AMREX_RESTRICT y, T_IdCpu &AMREX_RESTRICT idcpu) const |
| |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal | aperture_x () const |
| |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal | aperture_y () const |
| |
| void | finalize () |
| |
| impactx::elements::ExactSbend::ExactSbend |
( |
amrex::ParticleReal | ds, |
|
|
amrex::ParticleReal | phi, |
|
|
amrex::ParticleReal | B, |
|
|
amrex::ParticleReal | dx = 0, |
|
|
amrex::ParticleReal | dy = 0, |
|
|
amrex::ParticleReal | rotation_degree = 0, |
|
|
amrex::ParticleReal | aperture_x = 0, |
|
|
amrex::ParticleReal | aperture_y = 0, |
|
|
int | nslice = 1, |
|
|
std::optional< std::string > | name = std::nullopt ) |
|
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
-
| ds | Segment length in m. |
| phi | Segment bend angle in degrees. |
| B | Magnetic 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. |
| dx | horizontal translation error in m |
| dy | vertical translation error in m |
| rotation_degree | rotation error in the transverse plane [degrees] |
| aperture_x | horizontal half-aperture in m |
| aperture_y | vertical half-aperture in m |
| nslice | number of slices used for the application of space charge |
| name | a user defined and not necessarily unique name of the element |