Allow for "computational electrophysiology" simulations (CompEl)
authorCarsten Kutzner <ckutzne@gwdg.de>
Fri, 13 Dec 2013 09:41:57 +0000 (10:41 +0100)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Tue, 28 Jan 2014 17:49:17 +0000 (18:49 +0100)
commitba7db18082bda202aabfa29418b6d7ac74a7dd7b
tree461d0e8c037bbfb67f0e45a561e6908384d44615
parent40ac4edf9be1fc1944f0cddfd4e6bc7d328c459f
Allow for "computational electrophysiology" simulations (CompEl)

The basic new functionality is to allow exchanges of molecular
positions, e.g. of an ion with a distant water molecule. Whereas
this could be used for different things, the target application is
to determine electrophysiological properties of membrane channels.
In a double-membrane setup the number of ions, and thus the
charge imbalance, and thus the potential difference between
the two compartments can be controlled and kept constant.
If ionic flow occurs through membrane channels, which
dissipates the charge imbalance, ions can be swapped back
to restore the desired charge imbalance between the
compartments. A continuous flow of ions through the
membrane channels can be established that allows to
measure channel conductance and selectivity for example.

If requested by .mdp file settings, the do_swapcoords() routine
is called in the main MD loop. It checks whether the actual
ion counts deviate from the specified reference values and
restores the reference values by ion/water swaps. It also
reports how many ions of each type pass through which channel.

Most of this functionality is in ./src/gromacs/swap/swapcoords.c,
but there is also some new code scattered over the source tree
allowing for grompp reading of CompEl parameters, writing CompEl
data to checkpoint and letting other programs as g_tune_pme
deal with that.

There is also a section in the Latex manual in the special
section describing the protocol.

Some tests have been added in mdrun/tests/swapcoords.cpp that
at the moment only check whether the CompEl parameters are
understood, whether mdrun exits without error code when
running a CompEl simulation and whether checkpointing works.
Some extras have been added to the MdrunTestFixture
class to handle more mdrun-related filenames.

Added doxygen documentation for the new functions.

Ran uncrustify on all new files for up-to-date copyright headers
and proper code formatting. Also uncrustified tpxio.c and
changed the tpx_version from 95 to 96.

Change-Id: Iffda273fd9f47a43e511e70ecdf849f881e933c1
42 files changed:
manual/install.tex
manual/monster.bib
manual/plots/compelsetup.pdf [new file with mode: 0644]
manual/special.tex
src/gromacs/CMakeLists.txt
src/gromacs/fileio/tpxio.c
src/gromacs/gmxana/gmx_make_ndx.c
src/gromacs/gmxana/gmx_tune_pme.c
src/gromacs/gmxlib/checkpoint.c
src/gromacs/gmxlib/copyrite.cpp
src/gromacs/gmxlib/index.c
src/gromacs/gmxlib/mvdata.c
src/gromacs/gmxlib/names.c
src/gromacs/gmxlib/txtdump.c
src/gromacs/gmxlib/typedefs.c
src/gromacs/gmxpreprocess/pdb2gmx.c
src/gromacs/gmxpreprocess/readir.c
src/gromacs/legacyheaders/index.h
src/gromacs/legacyheaders/names.h
src/gromacs/legacyheaders/types/enums.h
src/gromacs/legacyheaders/types/inputrec.h
src/gromacs/legacyheaders/types/state.h
src/gromacs/mdlib/domdec.c
src/gromacs/mdlib/groupcoord.c
src/gromacs/mdlib/groupcoord.h
src/gromacs/mdlib/init.c
src/gromacs/swap/CMakeLists.txt [new file with mode: 0644]
src/gromacs/swap/swapcoords.c [new file with mode: 0644]
src/gromacs/swap/swapcoords.h [new file with mode: 0644]
src/gromacs/timing/wallcycle.c
src/gromacs/timing/wallcycle.h
src/programs/mdrun/md.c
src/programs/mdrun/mdrun.cpp
src/programs/mdrun/runner.c
src/programs/mdrun/tests/CMakeLists.txt
src/programs/mdrun/tests/OctaneSandwich.gro [new file with mode: 0644]
src/programs/mdrun/tests/OctaneSandwich.mdp [new file with mode: 0644]
src/programs/mdrun/tests/OctaneSandwich.ndx [new file with mode: 0644]
src/programs/mdrun/tests/OctaneSandwich.top [new file with mode: 0644]
src/programs/mdrun/tests/moduletest.cpp
src/programs/mdrun/tests/moduletest.h
src/programs/mdrun/tests/swapcoords.cpp [new file with mode: 0644]