Introduce MicroState for modular simulator
authorPascal Merz <pascal.merz@me.com>
Thu, 27 Jun 2019 06:25:11 +0000 (00:25 -0600)
committerPascal Merz <pascal.merz@me.com>
Wed, 28 Aug 2019 23:57:14 +0000 (16:57 -0700)
commitb08bb27684ea58e975370c3d161057bfdd182331
tree6d4e30860cdb076fdc0bd8795ebe1483190a78af
parentc1e6bbf947fbdc25dde8a662d4281143545281fd
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
docs/doxygen/lib/modularsimulator.md
src/gromacs/mdlib/mdoutf.h
src/gromacs/mdlib/update.cpp
src/gromacs/mdlib/update.h
src/gromacs/modularsimulator/CMakeLists.txt
src/gromacs/modularsimulator/microstate.cpp [new file with mode: 0644]
src/gromacs/modularsimulator/microstate.h [new file with mode: 0644]