Introduce MicroState for modular simulator
The MicroState replaces the t_state structure. It owns the position, velocity
and force vectors, as well as the box tensor. It also keeps a backup of the
previous position and box. It is therefore having more data than the pure
statistical-physical micro state definition. TODO: Decide if we should give
it another name to avoid misunderstandings!
While the modular approach aims at having as much data as possible localized,
the data in this class are so universally used in molecular simulations that it
is reasonable to keep them in a central object. Conveniently, this also is all
data commonly used in trr files.
Note that the MicroState can be converted to and from the legacy t_state
object. This is useful when dealing with functionality which has not yet
been adapted to use the new data approach - currently, domain decomposition,
PME load balancing, and the initial constraining are using this.
This commit is part of the commit chain introducing the new modular
simulator. Please see docs/doxygen/lib/modularsimulator.md for details
on the chosen approach. As the elements of the new simulator cannot all
be introduced in one commit, it might be worth to view Iaae1e205 to see
a working prototype of the approach.
Change-Id: Id1a22892c2dcf2f30127a9fd780b89d4c860640f