10#ifndef IMPACTX_ELEMENTS_MIXIN_ALIGNMENT_H
11#define IMPACTX_ELEMENTS_MIXIN_ALIGNMENT_H
83 template<
typename T_Real>
93 T_Real
const xc = x -
m_dx;
94 T_Real
const yc = y -
m_dy;
99 T_Real
const pxc = px;
100 T_Real
const pyc = py;
112 template<
typename T_Real>
119 T_Real
const sxc = sx;
120 T_Real
const syc = sy;
134 template<
typename T_Real>
152 T_Real
const pxc = px;
153 T_Real
const pyc = py;
165 template<
typename T_Real>
172 T_Real
const sxc = sx;
173 T_Real
const syc = sy;
246 A(1, 1) = cos_rotation; A(1, 3) = -sin_rotation;
247 A(3, 1) = sin_rotation; A(3, 3) = cos_rotation;
248 A(2, 2) = cos_rotation; A(2, 4) = -sin_rotation;
249 A(4, 2) = sin_rotation; A(4, 4) = cos_rotation;
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
amrex_particle_real ParticleReal
__host__ __device__ std::pair< double, double > sincos(double x)
Definition alignment.H:25
amrex::SmallMatrix< amrex::ParticleReal, 6, 6, amrex::Order::F, 1 > Map6x6
Definition CovarianceMatrix.H:20
static constexpr __host__ __device__ SmallMatrix< T, NRows, NCols, ORDER, StartIndex > Identity() noexcept
__host__ __device__ SmallMatrix< T, NCols, NRows, ORDER, StartIndex > transpose() const
Definition ReferenceParticle.H:33
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void rotate_out(T_Real &AMREX_RESTRICT sx, T_Real &AMREX_RESTRICT sy) const
Definition alignment.H:167
amrex::ParticleReal m_dy
horizontal translation error [m]
Definition alignment.H:275
Alignment(Alignment &&)=default
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void rotate_in(T_Real &AMREX_RESTRICT sx, T_Real &AMREX_RESTRICT sy) const
Definition alignment.H:114
amrex::ParticleReal m_sin_rotation
rotation error in the transverse plane [rad]
Definition alignment.H:281
amrex::ParticleReal m_cos_rotation
std::sin(m_rotation)
Definition alignment.H:282
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
Definition alignment.H:136
void compute_constants(RefPart const &refpart)
Definition alignment.H:67
amrex::ParticleReal m_rotation
vertical translation error [m]
Definition alignment.H:276
static constexpr amrex::ParticleReal degree2rad
Definition alignment.H:30
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dy() const
Definition alignment.H:193
static constexpr amrex::ParticleReal DEFAULT_dy
Definition alignment.H:34
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal rotation() const
Definition alignment.H:203
static constexpr amrex::ParticleReal DEFAULT_dx
Definition alignment.H:33
amrex::ParticleReal m_dx
Definition alignment.H:274
Alignment(Alignment const &)=default
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal dx() const
Definition alignment.H:183
AMREX_GPU_HOST AMREX_FORCE_INLINE Map6x6 rotate_aligned_map(Map6x6 const &R) const
Definition alignment.H:267
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool misaligned() const
Definition alignment.H:218
Alignment(amrex::ParticleReal dx, amrex::ParticleReal dy, amrex::ParticleReal rotation_degree)
Definition alignment.H:43
AMREX_GPU_HOST AMREX_FORCE_INLINE Map6x6 rotation_map() const
Definition alignment.H:241
static constexpr amrex::ParticleReal DEFAULT_rotation_degree
Definition alignment.H:35
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
Definition alignment.H:85
Alignment & operator=(Alignment const &)=default