10 #ifndef IMPACTX_ELEMENTS_PROGRAMMABLE_H 11 #define IMPACTX_ELEMENTS_PROGRAMMABLE_H 26 static constexpr
auto name =
"Programmable";
74 amrex::ParticleReal
ds ()
const 80 amrex::ParticleReal
m_ds = 0.0;
92 std::function<void(ImpactXParticleContainer *, int)>
m_push;
99 #endif // IMPACTX_ELEMENTS_PROGRAMMABLE_H Definition: ImpactXParticleContainer.H:95
Definition: ImpactX.cpp:31
Definition: Programmable.H:24
amrex::ParticleReal m_ds
Definition: Programmable.H:80
static constexpr auto name
Definition: Programmable.H:26
bool m_threadsafe
number of slices used for the application of space charge
Definition: Programmable.H:90
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int nslice() const
Definition: Programmable.H:64
int m_nslice
segment length in m
Definition: Programmable.H:81
#define AMREX_FORCE_INLINE
void operator()(ImpactXParticleContainer &pc, int step) const
Definition: Programmable.cpp:18
#define AMREX_GPU_HOST_DEVICE
std::function< void(ImpactXParticleContainer *, int)> m_push
Definition: Programmable.H:92
std::function< void(ImpactXParticleContainer::iterator *, RefPart &)> m_beam_particles
hook for push of whole container
Definition: Programmable.H:93
Particle< NStructReal, NStructInt > ParticleType
Definition: ReferenceParticle.H:29
Programmable(amrex::ParticleReal ds=0.0, int nslice=1)
Definition: Programmable.H:31
Definition: ImpactXParticleContainer.H:126
std::function< void(RefPart &)> m_ref_particle
hook for beam particles
Definition: Programmable.H:94
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal ds() const
Definition: Programmable.H:74