Clarify connection of temperature / pressure coupling and propagators
authorPascal Merz <pascal.merz@me.com>
Fri, 2 Apr 2021 00:53:32 +0000 (00:53 +0000)
committerPascal Merz <pascal.merz@me.com>
Fri, 2 Apr 2021 00:53:32 +0000 (00:53 +0000)
commitf6e20e137fcc0bfa4fe10e500cb2f37ee10294c3
tree33339e6f601abd1b5542949cb53075a7a41f5e76
parent37d7e7d31d04fb716885abb082124804768d3daf
Clarify connection of temperature / pressure coupling and propagators

Temperature and pressure coupling and propagators are linked, as most
thermostats and barostats apply some type of scaling to positions and
/ or velocities. The temperature and pressure coupling objects must
therefore be linked to the propagators to properly function.

The current implementation did not allow for much flexibility, as it
only allowed propagators to decide whether to connect to a thermostat
or barostat or not. To allow for more complex algorithms, more
flexibility is required. To that end, this change introduces a
PropagatorTag object, which tags the propagators, and allows the
temperature and pressure coupling objects to pick which propagator to
act on. Additionally, this moves the responsibility of connecting to
the coupling algorithm rather than the propagator, which makes more
sense conceptually.

Refs #3423
docs/doxygen/lib/modularsimulator.md
src/gromacs/modularsimulator/modularsimulator.cpp
src/gromacs/modularsimulator/modularsimulatorinterfaces.h
src/gromacs/modularsimulator/parrinellorahmanbarostat.cpp
src/gromacs/modularsimulator/parrinellorahmanbarostat.h
src/gromacs/modularsimulator/propagator.cpp
src/gromacs/modularsimulator/propagator.h
src/gromacs/modularsimulator/velocityscalingtemperaturecoupling.cpp
src/gromacs/modularsimulator/velocityscalingtemperaturecoupling.h