Closed martinschwinzerl closed 3 years ago
Addressed in #123, allows to enable
, disable
or skip
BeamBeam4D
, BeamBeam6D
and SpaceCharge*
via dedicated options. Should work even for both the run-time compiled OpenCL kernels and the once-and-for-all compiled CUDA kernels
Starting with PR #132 (i.e. v0.6.0), this should work via the Settings.cmake
file -> close.
With the arrival of space-charge elements and the renaming of be_beambeam to be_beamfields, the catch-all binary-valued beam-beam macro is too coarse. Having at least a two-stage enable process (i.e. disable, enable 4d including all the space charge models and enable full 6d as well) or even additionally the opportunity to disable the space-charges when not required seems a better fit.
The upcoming major API change around the trackjobs and especially the kernel configuration parts of the common submodule introduce a concept called "kernel variants", allowing to select tracking kernels according to a set of binary flags stored in a bit-field.
The proposal is to either convert the 4d/6d/space-charge(s) related flags into a range in the variant bitfield or to reserve bits in the bitfield to properly enumerate the required combinations of the flags.