Added reference-manual entry for MiMiC
authorViacheslav Bolnykh <bolnykh@gmail.com>
Wed, 28 Nov 2018 11:14:19 +0000 (12:14 +0100)
committerJoe Jordan <e.jjordan12@gmail.com>
Thu, 29 Nov 2018 20:01:50 +0000 (21:01 +0100)
Added the documentation entry describing the way to set up
and run the QM/MM simulation with MiMiC, plus cross references
to install guide and mdp options documentation.

Fixes #2691

Change-Id: Id600c621d24bb41f99b02ddb8bacb175a6bac520

docs/CMakeLists.txt
docs/install-guide/index.rst
docs/reference-manual/references.rst
docs/reference-manual/special.rst
docs/reference-manual/special/mimic-qmmm.rst [new file with mode: 0644]
docs/reference-manual/special/qmmm.rst

index b4fdbb4626a2ce1b1e2aa80cd5ec9aa851ccaab8..b8a93c2bc4cc0fc9b87304c4d1b2df3b9ddda3cb 100644 (file)
@@ -230,6 +230,7 @@ if (SPHINX_FOUND)
         reference-manual/special/qmmm.rst
         reference-manual/special/vmd-imd.rst
         reference-manual/special/membrane-embedding.rst
+        reference-manual/special/mimic-qmmm.rst
         # Analysis chapter
         reference-manual/analysis.rst
         reference-manual/analysis/using-groups.rst
index 3e899a76812ced803c02b485c4a912453324cce5..d5af9ee015ea3d313071ed7545987099e01bd65f 100644 (file)
@@ -83,18 +83,6 @@ appropriate value instead of ``xxx`` :
 * ``-DGMX_FFT_LIBRARY=xxx`` to select whether to use ``fftw3``, ``mkl`` or ``fftpack`` libraries for `FFT support`_
 * ``-DCMAKE_BUILD_TYPE=Debug`` to build |Gromacs| in debug mode
 
-Building with MiMiC QM/MM support
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-MiMiC QM/MM interface integration will require linking against MiMiC
-communication library, that establishes the communication channel between
-|Gromacs| and CPMD. Check that the installation folder of the library
-is added to CMAKE_PREFIX_PATH if it is installed in non-standard location.
-Building QM/MM-capable version requires double-precision version of |Gromacs|
-compiled with MPI support:
-
-* ``-DGMX_DOUBLE=ON -DGMX_MPI -DGMX_MIMIC=ON``
-
 Building older versions
 ^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -851,6 +839,22 @@ On Apple platforms where the Accelerate Framework is available, these
 will be automatically used for BLAS and LAPACK. This could be
 over-ridden with ``GMX_BLAS_USER``, etc.
 
+.. _installing with MiMiC:
+
+Building with MiMiC QM/MM support
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+MiMiC QM/MM interface integration will require linking against MiMiC
+communication library, that establishes the communication channel
+between |Gromacs| and CPMD. The MiMiC Communication library can be
+downloaded `here <https://gitlab.com/MiMiC-projects/CommLib>`__.
+Compile and install it. Check that the installation folder of the
+MiMiC library is added to CMAKE_PREFIX_PATH if it is installed in
+non-standard location. Building QM/MM-capable version requires
+double-precision version of |Gromacs| compiled with MPI support:
+
+* ``-DGMX_DOUBLE=ON -DGMX_MPI -DGMX_MIMIC=ON``
+
 Changing the names of |Gromacs| binaries and libraries
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
index 4392bda7746850d521d4192641afed4ce9c09e23..23f28fae37596f00c80a850d48ba7f4459802c7a 100644 (file)
@@ -2534,6 +2534,20 @@ missing term in effective pair potentials," *J. Phys. Chem.*, **91**
 :sup:`179` W.F. van Gunsteren and H.J.C. Berendsen, *Molecular dynamics
 of simple systems*, (1994).
 
+.. raw:: html
+
+   </div>
+
+.. raw:: html
+
+   <div id="ref-RoethlisbergerQMMM">
+
+.. _refRoethlisbergerQMMM:
+
+:sup:`180` A. Laio, J. VandeVondele, U. Rothlisberger, *A Hamiltonian
+electrostatic coupling scheme for hybrid Car-Parrinello
+molecular dynamics simulations*, (2002).
+
 .. raw:: html
 
    </div>
index 45b7f1ef2ca4ac3459452d0a05e37a7d2f528ace..46a55f9f96d57c6ab92b9f54e618912c334650f5 100644 (file)
@@ -20,6 +20,7 @@ the use of |Gromacs| for specific scientific problems.
    special/viscosity-calculation
    special/tabulated-interaction-functions
    special/qmmm
+   special/mimic-qmmm
    special/vmd-imd
    special/membrane-embedding
 
diff --git a/docs/reference-manual/special/mimic-qmmm.rst b/docs/reference-manual/special/mimic-qmmm.rst
new file mode 100644 (file)
index 0000000..766cc2d
--- /dev/null
@@ -0,0 +1,286 @@
+.. _mimic:
+
+MiMiC Hybrid Quantum Mechanical/Molecular Mechanical simulations
+----------------------------------------------------------------
+
+This section describes the coupling to a novel QM/MM interface.
+The Multiscale Modeling in Computational Chemistry (MiMiC) interface
+combines |Gromacs| with the `CPMD QM code <http://cpmd.org/>`__.
+To find information about other QM/MM implementations in
+|Gromacs| please refer to the section :ref:`qmmm`.
+Within a QM/MM approach, typically a small part of the system
+(e.g. active site of an enzyme where a chemical reaction can take place)
+is treated at the QM level of theory (as we cannot neglect electronic
+degrees of freedom while descibing some processes e.g.  chemical 
+reactions), while the rest of the system (remainder of the
+protein, solvent, etc.) is described by the classical forcefield (MM).
+
+Overview
+^^^^^^^^
+MiMiC implements the  QM/MM coupling scheme developed by the group
+of Prof. U. Roethlisberger described in
+\ :ref:`180 <refRoethlisbergerQMMM>`. This additive
+scheme uses electrostatic embedding of the classical system within
+the quantum Hamiltonian. The total QM/MM energy is calculated as
+a sum of subsystem contributions:
+
+   .. math::
+
+      E_{tot} = E_{QM}+E_{MM}+E_{QM/MM}
+
+The QM contribution is computed by CPMD, while the MM part is
+processed by |Gromacs| and the cross terms are treated by the
+MiMiC interface. Cross terms, i.e. the terms involving simultaneously
+atoms from the QM region and atoms from the MM region consist of
+both bonded and non-bonded interactions. 
+
+The bonded interactions are taken from the forcefield used to
+describe the MM part. Whenever there is a chemical bond crossing
+the QM/MM boundary additional care has to be taken to handle this
+situation correctly. Otherwise the QM atom involved in the cut bond
+is left with an unsaturated electronic orbital leading to
+unphysical system behaviour. Therefore, the dangling bond has to be capped
+with another QM atom. There are two different options available
+in CPMD for bond capping:
+
+#. Hydrogen capping - the simplest approach is to cap the bond with a
+   hydrogen atom, constraining its relative position
+   
+#. Link atom pseudo-potential - this strategy uses an ad-hoc pseudo-potential
+   developed to cap the bond. This pseudo-potential would represent the real
+   atom and, thus, will not require the bond constraint.
+   
+As in standard forcefields, the non-bonded contributions to :math:`E_{QM/MM}`
+can be separated into van der Waals and electrostatic contributions.
+The first contribution is again taken from the MM forcefield. The second
+part of non-bonded interactions is handled by MiMiC within the
+electrostatic embedding approach. This adds additional terms to the
+Hamiltonian of the system:
+
+   .. math::
+
+      E_{QM/MM}^{es} = -\sum_a^{N_{mm}}Q_a\int\rho(\mathbf{r})\frac{r_{c,a}^4 
+      - |\mathbf{R_a} - \mathbf{r}|^4}{r_{c,a}^5 - |\mathbf{R_a} - \mathbf{r}|^5}d\mathbf{r} 
+      + \sum_a^{N_{mm}}\sum_n^{N_{qm}}Q_aZ_n
+      \frac{r_{c,a}^4 - |\mathbf{R_a} - \mathbf{R_n}|^4}
+      {r_{c,a}^5 - |\mathbf{R_a} - \mathbf{R_n}|^5}
+
+where :math:`N_{mm}` is a number of MM atoms :math:`N_{qm}`, is the number of QM atoms
+and :math:`r_{c,a}` is the covalent radius of the MM atoms. The first
+term above corresponds to the damped Coulomb interaction between the
+eletronic density :math:`\rho(\mathbf{r})` of the QM region and the MM
+atoms. The damping is needed due to the fact that CPMD uses a plane-wave
+basis set to expand the electronic wavefunction. Unlike localized
+basis sets, plane waves are delocalized and this may give a rise to
+the so-called electron spill-out problem: positively charged MM atoms
+may artificially overpolarize the electronic cloud due to the absence
+of quantum mechanical effects (e.g. Pauli repusion) that would normally
+prevent it (in a fully quantum system). This functional form of the
+damped Coulomb potential from the equation above was introduced in
+\ :ref:`180 <refRoethlisbergerQMMM>`.
+
+Since computing the integrals in the first term above can be computational
+extremely expensive, MiMiC also implements hierarchical electrostatic
+embedding scheme in order to mitigate the enormous computational effort
+needed to compute :math:`N_{mm}` integrals over the electronic grid.
+Within this scheme the MM atoms are grouped into two shells according
+to the distance from the QM region: the short-ranged and long-ranged one.
+For the MM atoms in the short-ranged shell the QM/MM interactions are
+calculated using the equation above. In contrast to that, the interactions
+involving MM atoms from the long-ranged shell are computed using
+the multipolar expansion of the QM electrostatic potential.
+More details about it can be found in \ :ref:`180 <refRoethlisbergerQMMM>`.
+
+
+Application coupling model
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Unlike the majority of QM/MM interfaces, MiMiC uses a loose coupling between
+partner codes. This means that instead of compiling both codes into a
+single binary MiMiC builds separate executables for CPMD and |Gromacs|.
+The user will then prepare the input for both codes and run them simultaneously.
+Each of the codes is running using a separate pool of MPI processes and 
+communicate the necessary data (e.g. coordinates, energies and forces) 
+through MPI client-server mechanism. Within MiMiC framework CPMD acts 
+as a server and |Gromacs| becomes the client.
+
+Software prerequisites
+^^^^^^^^^^^^^^^^^^^^^^
+
+#. |Gromacs| version 2019+. Newer major releases may support multiple versions of
+   MiMiC.
+#. CPMD version 4.1+.
+
+Usage
+^^^^^
+
+After :ref:`installing with MiMiC`, to run a MiMiC QM/MM simulation
+one needs to:
+
+#. Get and compile CPMD with MiMiC support.
+#. Do a normal classical equilibration with |Gromacs|.
+#. Create an index group representing QM atoms within |Gromacs|.
+   Keep in mind that this group should also include link atoms
+   bound to atoms in the QM region, as they have to be treated
+   at quantum level.
+#. Prepare input for CPMD and |Gromacs| according to the recommendations
+   below.
+#. Run both CPMD and |Gromacs| as two independent instances within
+   a single batch job.
+
+Preparing the input file for |Gromacs|
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+In order to setup the :ref:`mdp` file for a MiMiC simulation one needs
+to add two options:
+
+#. :mdp-value:`integrator=mimic` to enable MiMiC workflow within GROMACS.
+#. ``QMMM-grps=<name_of_qm_index_group>`` to indicate all the atoms
+   that are going to be handled by CPMD.
+
+Since CPMD is going to perform the MD integration, only :ref:`mdp`
+options relating to force calculation and output are active.
+
+After setting up the :ref:`mdp` file one can run :ref:`grompp <gmx
+grompp>` as usual. :ref:`grompp <gmx grompp>` will set the charges of
+all the QM atoms to zero to avoid double-counting of Coulomb
+interactions. Moreover, it will update non-bonded exclusion lists to
+exclude LJ interactions between QM atoms (since they will be described
+by CPMD). Finally, it will remove bonds between QM atoms (if
+present). We recommend to output the preprocessed topology file using
+``gmx grompp -pp <preprocessed_topology_file>`` as it will help to
+prepare the input for CPMD in an automated way.
+
+Preparing the input file for CPMD
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+This section will only describe the MiMiC-related input in CPMD - for the
+configuration of a DFT-related options - please refer to the `CPMD manual
+<http://www.cpmd.org/downloadable-files/no-authentication/manual_v4_0_1.pdf>`__.
+After preparing the input for GROMACS and having obtained the
+preprocessed topology file, simply run the Python
+preprocessor script provided within the MiMiC distribution to obtain
+MiMiC-related part of the CPMD input file. The usage of the script is simple:
+
+::
+
+    prepare-qmmm.py <index_file> <gro_file> <preprocessed_topology_file> <qm_group_name>
+
+Be advised that for MiMiC it is crucial that the forcefield contains the data about
+the element number of each atom type! If it does not provide it, the preprocessor
+will fail with the error:
+
+::
+
+    It looks like the forcefield that you are using has no information about the element number.
+    The element number is needed to run QM/MM simulations.
+
+Given all the relevant information the script will print the part of the CPMD
+input that is related to MiMiC. Here is the sample output with the short
+descriptions of keywords that can be found in this part of CPMD input:
+
+::
+
+    &MIMIC
+    PATHS
+    1
+    <some_absolute_path>
+    BOX
+    35.77988547402689 35.77988547402689 35.77988547402689
+    OVERLAPS
+    3
+    2 13 1 1
+    2 14 1 2
+    2 15 1 3
+    &END
+    
+    &ATOMS
+    O
+    1
+    17.23430225802002 17.76342557295923 18.576007806615877
+    H
+    2
+    18.557110545368047 19.086233860307257 18.727185896598506
+    17.57445296048094 16.705178943080806 17.06422690678956
+    &END
+    Suggested QM box size [12.661165036045407, 13.71941166592383, 13.00131573850633]
+
+``&MIMIC`` section contains MiMiC settings:
+
+    ``PATHS`` indicates number of MM client codes involved in the simulation
+    and the absolute path to each of their respective folder. Keep in mind
+    that this path has to point to the folder, where |Gromacs| is going to
+    be run -- otherwise it will cause a deadlock in CPMD! The next line
+    contains the number of MM codes (1 in this case) and next :math:`N`
+    lines contain paths to their respective working directories
+    
+    ``BOX`` indicates the size of the whole simulation box in Bohr in
+    an ``X Y Z`` format
+
+    ``OVERLAPS`` - sets the number and IDs of atoms within |Gromacs| that are going to be 
+    treated by CPMD. The format is the following:
+
+    ::
+
+        <code_id> <atom_id_in_code> <host_code_id> <atom_id_in_that_code>
+    
+    CPMD host code id is always ID 1. Therefore, in a QM/MM simulation
+    |Gromacs| will have code ID 2.
+
+    (OPTIONAL) ``LONG-RANGE COUPLING`` - enables the faster multipole coupling for
+    atoms located at a certain distance from the QM box
+
+    (OPTIONAL) ``CUTOFF DISTANCE`` - the next line contains the cutoff for
+    explicit Coulomb coupling  (20 Bohr by default if ``LONG-RANGE COUPLING``
+    is present)
+
+    (OPTIONAL) ``MULTIPOLE ORDER`` - The next line will contain the order at which
+    the multipolar exansion will be truncated (default 2, maximum 20).
+
+The ``&ATOMS`` section of CPMD input file contains all the QM atoms
+within the system and has a default CPMD formatting. Please refer
+to the `CPMD manual
+<http://www.cpmd.org/downloadable-files/no-authentication/manual_v4_0_1.pdf>`__
+to adjust it to your needs(one will need to set the correct pseudo-potential
+for each atom species).
+
+Finally, the preprocessor suggests the size of the QM box where the electronic
+density is going to be contained. The suggested value is not final
+- further adjustment by user may be required.
+
+Running a MiMiC QM/MM simulation
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In order to run the simulation, one will need to run both |Gromacs| and CPMD within one job.
+This is easily done within the vast majority of queueing systems. For example in
+case of SLURM queue system one can use two job steps within one job. Here is
+the example job script running a 242-node slurm job, allocating 2 nodes to |Gromacs|
+and 240 nodes to CPMD (both codes are launched in the same folder):
+
+::
+
+    #!/bin/bash -x
+    #SBATCH --nodes=242
+    #SBATCH --output=mpi-out.%j
+    #SBATCH --error=mpi-err.%j
+    #SBATCH --time=00:25:00
+    #SBATCH --partition=batch
+    
+    # *** start of job script ***
+
+    srun -N2 --ntasks-per-node=6 --cpus-per-task=4 -r0 gmx_mpi_d mdrun -deffnm mimic -ntomp 4 &
+    srun -N240 --ntasks-per-node=6 --cpus-per-task=4 -r2 cpmd.x benchmark.inp <path_to_pp_folder> > benchmark-240-4.out &
+    wait
+
+
+Known Issues
+^^^^^^^^^^^^
+
+OpenMPI prior to version 3.x.x has a bug preventing the usage of MiMiC
+completely - please use newer versions or other MPI distributions.
+
+With IntelMPI communication between CPMD and |Gromacs| may result
+in a deadlock in some situations. If it happens, setting an
+IntelMPI-related environment variable may help:
+
+::
+
+    export FI_OFI_RXM_USE_SRX=1
index e4a32ebf00c03d4bb4d68918f97de6e468244268..9b322bb5b8da1056944909c0e0b5b79784ca09b8 100644 (file)
@@ -1,3 +1,5 @@
+.. _qmmm:
+
 Mixed Quantum-Classical simulation techniques
 ---------------------------------------------