10 #ifndef IMPACTX_ELEMENTS_PROGRAMMABLE_H
11 #define IMPACTX_ELEMENTS_PROGRAMMABLE_H
26 static constexpr
auto name =
"Programmable";
74 amrex::ParticleReal
ds ()
const
84 amrex::ParticleReal
m_ds = 0.0;
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
T_ParticleType ParticleType
Definition: ImpactXParticleContainer.H:138
Definition: ImpactXParticleContainer.H:107
Definition: ImpactX.cpp:32
Definition: Programmable.H:25
std::function< void(ImpactXParticleContainer::iterator *, RefPart &)> m_beam_particles
hook for push of whole container
Definition: Programmable.H:97
void finalize()
Definition: Programmable.cpp:56
ImpactXParticleContainer::ParticleType PType
Definition: Programmable.H:27
static constexpr auto name
Definition: Programmable.H:26
int m_nslice
segment length in m
Definition: Programmable.H:85
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal ds() const
Definition: Programmable.H:74
amrex::ParticleReal m_ds
Definition: Programmable.H:84
Programmable(amrex::ParticleReal ds=0.0, int nslice=1)
Definition: Programmable.H:31
std::function< void(RefPart &)> m_ref_particle
hook for beam particles
Definition: Programmable.H:98
bool m_threadsafe
number of slices used for the application of space charge
Definition: Programmable.H:94
std::function< void(ImpactXParticleContainer *, int)> m_push
Definition: Programmable.H:96
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int nslice() const
Definition: Programmable.H:64
void operator()(ImpactXParticleContainer &pc, int step) const
Definition: Programmable.cpp:18
std::function< void()> m_finalize
hook for reference particle
Definition: Programmable.H:99
Definition: ReferenceParticle.H:30