Make the timeloop more powerful. lbm::refinement::TimeStep duplicates much of the functionality of timeloop::SweepTimeloop
For refined simulations, one needs to use lbm::refinement::TimeStep
, which duplicates much of the functionality of the regular timeloop::SweepTimeloop
. The lbm::refinement::TimeStep
is then attached to a timeloop::SweepTimeloop
. This is not very elegant and the two should be merged so that one does not end up with multiple timing::TimingPool
objects, gets the same amount of debug logging, etc. Further problems include that lbm::refinement::TimeStep
does not provide callbacks in all desirable places (I would for example need one each after (startCommunication|wait)(CoarseToFine|FineToCoarse|EqualLevel)
).
Perhaps lbm::refinement::TimeStep
can be replaced with a set of helper functions that add the appropriate functors to an (enhanced) timeloop::SweepTimeloop
.
Additionally, timeloop::SweepTimeloop
should itself conform to the concept of timeloop::Timeloop::SelectableFunc
so that timeloops can be nested. This would be useful for things that have internal iterations, like the PDE solvers.