10 #ifndef IMPACTX_ELEMENTS_MIXIN_BEAMOPTIC_H 11 #define IMPACTX_ELEMENTS_MIXIN_BEAMOPTIC_H 36 template <
typename T_Element>
51 PType* AMREX_RESTRICT aos_ptr,
52 amrex::ParticleReal* AMREX_RESTRICT part_px,
53 amrex::ParticleReal* AMREX_RESTRICT part_py,
54 amrex::ParticleReal* AMREX_RESTRICT part_pt,
99 template<
typename T_Element >
102 RefPart & AMREX_RESTRICT ref_part,
119 element, aos_ptr, part_px, part_py, part_pt, ref_part);
130 template<
typename T_Element>
142 RefPart & AMREX_RESTRICT ref_part
144 T_Element& element = *
static_cast<T_Element*
>(
this);
145 detail::push_all_particles<T_Element>(pti, ref_part, element);
151 #endif // IMPACTX_ELEMENTS_MIXIN_BEAMOPTIC_H momentum in z, scaled by the magnitude of the reference momentum [unitless] (at fixed t) OR energy de...
Definition: ImpactXParticleContainer.H:57
amrex::ParticleReal *const AMREX_RESTRICT m_part_py
Definition: beamoptic.H:92
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void operator()(long i) const
Definition: beamoptic.H:73
Definition: ImpactXParticleContainer.H:80
Definition: beamoptic.H:37
SoARef GetStructOfArrays() const
momentum in y, scaled by the magnitude of the reference momentum [unitless] (at fixed t or s) ...
Definition: ImpactXParticleContainer.H:56
AoSRef GetArrayOfStructs() const
momentum in x, scaled by the magnitude of the reference momentum [unitless] (at fixed t or s) ...
Definition: ImpactXParticleContainer.H:55
RefPart const m_ref_part
Definition: beamoptic.H:94
~PushSingleParticle()=default
amrex::ParticleReal *const AMREX_RESTRICT m_part_pt
Definition: beamoptic.H:93
Definition: beamoptic.H:131
PushSingleParticle()=delete
#define AMREX_FORCE_INLINE
std::enable_if_t< std::is_integral< T >::value > ParallelFor(TypeList< CTOs... >, std::array< int, sizeof...(CTOs)> const &runtime_options, T N, F &&f)
T_Element const m_element
Definition: beamoptic.H:89
PType *const AMREX_RESTRICT m_aos_ptr
Definition: beamoptic.H:90
Particle< NStructReal, NStructInt > ParticleType
Definition: ReferenceParticle.H:29
PushSingleParticle(T_Element element, PType *AMREX_RESTRICT aos_ptr, amrex::ParticleReal *AMREX_RESTRICT part_px, amrex::ParticleReal *AMREX_RESTRICT part_py, amrex::ParticleReal *AMREX_RESTRICT part_pt, RefPart ref_part)
Definition: beamoptic.H:50
ImpactXParticleContainer::ParticleType PType
Definition: beamoptic.H:39
Definition: beamoptic.H:19
amrex::ParticleReal *const AMREX_RESTRICT m_part_px
Definition: beamoptic.H:91
void push_all_particles(ImpactXParticleContainer::iterator &pti, RefPart &AMREX_RESTRICT ref_part, T_Element &element)
Definition: beamoptic.H:100