SixTrack / sixtracklib

Library for single charged particle simulations in accelerators
GNU Lesser General Public License v2.1
12 stars 16 forks source link

Convert beam-beam enable/disable preprocessor macros to kernel config variants #92

Closed martinschwinzerl closed 3 years ago

martinschwinzerl commented 5 years ago

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.

martinschwinzerl commented 4 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

martinschwinzerl commented 3 years ago

Starting with PR #132 (i.e. v0.6.0), this should work via the Settings.cmake file -> close.