Some changes to
drift_all to improve performance:
- When recursing, abort early if there are no particles of that type in the cell.
- Split the
drift_allinto three different mappers, part, gpart, multipoles.
- Call the part/gpart ones only on local cells, the multipole one on local and foreign cells with tasks.
This makes the drift all ~35% faster on the EAGLE-50 with cosmo+grav+hydro (1.42s per call vs. 1.01s).
I have also moved all the drift_all related functions to a separate file to try to improve the code's maintainability. This makes the code review a bit more tricky but the changes highlighted above can be seen by comparing c4bf98ea...97c99293