|
ImpactX
|
#include <RFCavity.H>
Public Types | |
| using | PType = ImpactXParticleContainer::ParticleType |
Public Member Functions | |
| RFCavity (amrex::ParticleReal ds, amrex::ParticleReal escale, amrex::ParticleReal freq, amrex::ParticleReal phase, std::vector< amrex::ParticleReal > cos_coef, std::vector< amrex::ParticleReal > sin_coef, amrex::ParticleReal dx=0, amrex::ParticleReal dy=0, amrex::ParticleReal rotation_degree=0, amrex::ParticleReal aperture_x=0, amrex::ParticleReal aperture_y=0, int mapsteps=1, int nslice=1, std::optional< std::string > name=std::nullopt) | |
| 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 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 |
| std::tuple< amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal > AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE | RF_Efield (amrex::ParticleReal const zeval) const |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | map3 (amrex::ParticleReal const tau, RefPart &refpart, amrex::ParticleReal &zeval) const |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | map2 (amrex::ParticleReal const tau, RefPart &refpart, amrex::ParticleReal &zeval) const |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | map1 (amrex::ParticleReal const tau, RefPart &refpart, amrex::ParticleReal &zeval) const |
| void | finalize () |
Public Member Functions inherited from impactx::elements::mixin::Named | |
| 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 |
Public Member Functions inherited from impactx::elements::mixin::BeamOptic< RFCavity > | |
| void | operator() (ImpactXParticleContainer &pc, int step, int period) |
| void | operator() (ImpactXParticleContainer::iterator &pti, RefPart &AMREX_RESTRICT ref_part) |
Public Member Functions inherited from impactx::elements::mixin::LinearTransport< RFCavity > | |
| 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 |
Public Member Functions inherited from impactx::elements::mixin::Thick | |
| 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 |
Public Member Functions inherited from impactx::elements::mixin::Alignment | |
| 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 |
Public Member Functions inherited from impactx::elements::mixin::PipeAperture | |
| 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 |
Public Attributes | |
| amrex::ParticleReal | m_escale |
| amrex::ParticleReal | m_freq |
| scaling factor for RF electric field | |
| amrex::ParticleReal | m_phase |
| RF frequency in Hz. | |
| int | m_mapsteps |
| RF driven phase in deg. | |
| int | m_id |
| number of map integration steps per slice | |
| int | m_ncoef = 0 |
| unique RF cavity id used for data lookup map | |
| amrex::ParticleReal * | m_cos_h_data = nullptr |
| number of Fourier coefficients | |
| amrex::ParticleReal * | m_sin_h_data = nullptr |
| non-owning pointer to host cosine coefficients | |
| amrex::ParticleReal * | m_cos_d_data = nullptr |
| non-owning pointer to host sine coefficients | |
| amrex::ParticleReal * | m_sin_d_data = nullptr |
| non-owning pointer to device cosine coefficients | |
Public Attributes inherited from impactx::elements::mixin::Thick | |
| amrex::ParticleReal | m_ds |
| int | m_nslice |
| segment length in m | |
Public Attributes inherited from impactx::elements::mixin::Alignment | |
| amrex::ParticleReal | m_dx = 0 |
| amrex::ParticleReal | m_dy = 0 |
| horizontal translation error [m] | |
| amrex::ParticleReal | m_rotation = 0 |
| vertical translation error [m] | |
Public Attributes inherited from impactx::elements::mixin::PipeAperture | |
| amrex::ParticleReal | m_inv_aperture_x = 0 |
| amrex::ParticleReal | m_inv_aperture_y = 0 |
| inverse of the horizontal aperture size [1/m] | |
Static Public Attributes | |
| static constexpr auto | type = "RFCavity" |
Static Public Attributes inherited from impactx::elements::mixin::Alignment | |
| static constexpr amrex::ParticleReal | degree2rad = ablastr::constant::math::pi / 180.0 |
Static Public Attributes inherited from amrex::simd::Vectorized< amrex::simd::native_simd_size_particlereal > | |
| static constexpr int | simd_width |
|
inline |
An RF cavity
| ds | Segment length in m |
| escale | Scaling factor for on-axis RF electric field in 1/m |
| freq | RF frequency in Hz |
| phase | RF driven phase in deg |
| cos_coef | TODO |
| sin_coef | TODO |
| 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 |
| mapsteps | number of integration steps per slice used for map and reference particle push in applied fields |
| nslice | number of slices used for the application of space charge |
| name | a user defined and not necessarily unique name of the element |
|
inline |
Compute and cache the constants for the push.
In particular, used to pre-compute and cache variables that are independent of the individually tracked particle.
| refpart | reference particle |
|
inline |
Close and deallocate all data and handles.
|
inline |
This pushes the reference particle and the linear map matrix elements for an RF cavity through the symplectic map associated with H_1 in the Hamiltonian splitting H = H_1 + H_2 + H_3.
| tau | Map step size in m | |
| [in,out] | refpart | reference particle |
| [in,out] | zeval | Longitudinal on-axis location in m |
|
inline |
This pushes the reference particle and the linear map matrix elements for an RF cavity through the symplectic map associated with H_2 in the Hamiltonian splitting H = H_1 + H_2 + H_3.
| tau | Map step size in m | |
| [in,out] | refpart | reference particle |
| [in,out] | zeval | Longitudinal on-axis location in m |
|
inline |
This pushes the reference particle and the linear map matrix elements for an RF cavity through the symplectic map associated with H_3 in the Hamiltonian splitting H = H_1 + H_2 + H_3.
| tau | Map step size in m | |
| [in,out] | refpart | reference particle |
| [in,out] | zeval | Longitudinal on-axis location in m |
|
inline |
This pushes the reference particle.
| [in,out] | refpart | reference particle |
|
inline |
This is an RF cavity functor, so that a variable of this type can be used like an RF cavity function.
The
| x | particle position in x |
| y | particle position in y |
| t | particle position in t |
| px | particle momentum in x |
| py | particle momentum in y |
| pt | particle momentum in t |
| idcpu | particle global index |
| refpart | reference particle |
|
inline |
This evaluates the on-axis RF electric field at a fixed location z, together with certain required integrals and derivatives. The field returned is normalized to a peak value of 1.
| zeval | Longitudinal on-axis location in m |
|
inline |
This function returns the linear transport map.
| amrex::ParticleReal* impactx::elements::RFCavity::m_cos_d_data = nullptr |
non-owning pointer to host sine coefficients
| amrex::ParticleReal* impactx::elements::RFCavity::m_cos_h_data = nullptr |
number of Fourier coefficients
| amrex::ParticleReal impactx::elements::RFCavity::m_escale |
| amrex::ParticleReal impactx::elements::RFCavity::m_freq |
scaling factor for RF electric field
| int impactx::elements::RFCavity::m_id |
number of map integration steps per slice
| int impactx::elements::RFCavity::m_mapsteps |
RF driven phase in deg.
| int impactx::elements::RFCavity::m_ncoef = 0 |
unique RF cavity id used for data lookup map
| amrex::ParticleReal impactx::elements::RFCavity::m_phase |
RF frequency in Hz.
| amrex::ParticleReal* impactx::elements::RFCavity::m_sin_d_data = nullptr |
non-owning pointer to device cosine coefficients
| amrex::ParticleReal* impactx::elements::RFCavity::m_sin_h_data = nullptr |
non-owning pointer to host cosine coefficients
|
staticconstexpr |