Add restart functionality to the multisystem framework with classical_particles as an example
Description
Add restart functionality to the multisystem framework, including general functions that each system needs to implement that are called for reading and writing. Implement reading and writing restart for classical particles and include a test for them. Implement reading and writing restart for clocks and trigger that from the abstract system to make it work for all systems. Implement barriers for the propagation that are used to get all systems to halt near the end of a timestep - this is needed to finish the simulation with all systems being at the same time and also to trigger a restart with all systems being at the same time. Also implement triggering restart by clean_stop and walltimer.
News snippet
Add restart functionality to the multisystem framework
Closes #332 (closed)
Checklist
-
I have checked that my code follows the Octopus coding standards -
I have added tests for all the new features added in this request.