Refactoring of the interaction update
Description
This MR includes two changes:
-
Introduced two new concepts: interaction partner and interaction with a partner. These are implemented as abstract classes. The systems are then interaction partners and the gravity is an interaction with a partner. Besides helping clarify some concepts, these changes allow to break a circular dependency between the abstract system and interaction, thus allowing to move some generic code to the abstract classes.
-
The interactions do not hold pointers to the partner quantities anymore. Instead, a copy is done when needed.
-
Allow the interaction to be updated when the partner is ahead in time. In this case the interaction uses the old quantities.
News snippet
Refactoring of the interaction update
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.
Edited by Martin Lueders