RT injection upgrades - Round 1
Ok, so here's round 1 of RT injection task upgrades.
In the RT injection tasks, we interact star particles with the gas and distribute the photon energy and flux from the stars onto the gas. In this version, the active hydro particles "ask" neighbouring star particles to inject them with energy, as opposed to what happens in the feedback task, where the active stars "push" energy into the gas.
The big improvements in this merge request are the following:
- written "proper" sub_self and sub_pair injection tasks. "Proper" here means they actually recurse.
- added checks for sorts and drifts in pair / sub_self / sub_pair tasks
- added hydro / star drift and sort dependencies
- added RT stuff to task lock/unlock functions and other bugfixes
- when running with RT, activate engine policy feedback even if compiled without feedback.
Here's the new version of the dependency graph:
And here are the task plots. The most significant difference reveals itself when only few particles are active. Here is a task plot with made with what's currently in the master (roughly ~1000 hydro particles active):
and this is what it looks like now:
It effectively reduced the runtime on 4 threads on the IsolatedGalaxy_feedback
example for 50 steps from ~200 to ~40s (with debugging checks enabled)
@lhausammann : could you have a look first?