Merge branch release-5-1
[alexxy/gromacs.git] / docs / user-guide / mdp-options.rst
index f379005829dcd90210730e5f4387329375f0bf81..d0c44d28cd1104c4066318d519a9c8d662b0a941 100644 (file)
@@ -13,7 +13,7 @@ General information
 
 Default values are given in parentheses, or listed first among
 choices. The first option in the list is always the default
-option. Units are given in square brackets The difference between a
+option. Units are given in square brackets. The difference between a
 dash and an underscore is ignored.
 
 A :ref:`sample mdp file <mdp>` is available. This should be
@@ -101,13 +101,6 @@ Run control
       twice as fast as with a Berendsen thermostat with the same
       :mdp:`tau-t`.
 
-   .. mdp-value:: sd2
-
-      This used to be the default sd integrator, but is now
-      deprecated. Four Gaussian random numbers are required per
-      coordinate per step. With constraints, the temperature will be
-      slightly too high.
-
    .. mdp-value:: bd
 
       An Euler integrator for Brownian or position Langevin dynamics,
@@ -156,11 +149,9 @@ Run control
       molecule. When :mdp:`nstlist` is larger than one,
       :mdp:`nstlist` insertions are performed in a sphere with radius
       :mdp:`rtpi` around a the same random location using the same
-      neighborlist (and the same long-range energy when :mdp:`rvdw`
-      or :mdp:`rcoulomb` > :mdp:`rlist`, which is only allowed for
-      single-atom molecules). Since neighborlist construction is
-      expensive, one can perform several extra insertions with the
-      same list almost for free. The random seed is set with
+      neighborlist. Since neighborlist construction is expensive,
+      one can perform several extra insertions with the same list
+      almost for free. The random seed is set with
       :mdp:`ld-seed`. The temperature for the Boltzmann weighting is
       set with :mdp:`ref-t`, this should match the temperature of the
       simulation of the original trajectory. Dispersion correction is
@@ -360,9 +351,7 @@ Output control
 
    (100)
    number of steps that elapse between calculating the energies, 0 is
-   never. This option is only relevant with dynamics. With a
-   twin-range cut-off setup :mdp:`nstcalcenergy` should be equal to
-   or a multiple of :mdp:`nstlist`. This option affects the
+   never. This option is only relevant with dynamics. This option affects the
    performance in parallel simulations, because calculating energies
    requires global communication between all processes which can
    become a bottleneck at high parallelization.
@@ -410,9 +399,10 @@ Neighbor searching
       automatically set based on :mdp:`verlet-buffer-tolerance`,
       unless this is set to -1, in which case :mdp:`rlist` will be
       used. This option has an explicit, exact cut-off at :mdp:`rvdw`
-      equal to :mdp:`rcoulomb`. Currently only cut-off,
-      reaction-field, PME electrostatics and plain LJ are
-      supported. Some :ref:`gmx mdrun` functionality is not yet
+      equal to :mdp:`rcoulomb`, unless PME or Ewald is used, in which
+      case :mdp:`rcoulomb` > :mdp:`rvdw` is allowed. Currently only
+      cut-off, reaction-field, PME or Ewald electrostatics and plain
+      LJ are supported. Some :ref:`gmx mdrun` functionality is not yet
       supported with the :mdp:`Verlet` scheme, but :ref:`gmx grompp`
       checks for this. Native GPU acceleration is only supported with
       :mdp:`Verlet`. With GPU-accelerated PME or with separate PME
@@ -438,8 +428,7 @@ Neighbor searching
 
    .. mdp-value:: >0
 
-      Frequency to update the neighbor list (and the long-range
-      forces, when using twin-range cut-offs). When this is 0, the
+      Frequency to update the neighbor list. When this is 0, the
       neighbor list is made only once. With energy minimization the
       neighborlist will be updated for every energy evaluation when
       :mdp:`nstlist` is greater than 0. With :mdp:`Verlet` and
@@ -461,48 +450,6 @@ Neighbor searching
 
       Unused.
 
-.. mdp:: nstcalclr
-
-   (-1) \[steps\]
-   Controls the period between calculations of long-range forces when
-   using the group cut-off scheme.
-
-   .. mdp-value:: 1
-
-      Calculate the long-range forces every single step. This is
-      useful to have separate neighbor lists with buffers for
-      electrostatics and Van der Waals interactions, and in particular
-      it makes it possible to have the Van der Waals cutoff longer
-      than electrostatics (useful *e.g.* with PME). However, there is
-      no point in having identical long-range cutoffs for both
-      interaction forms and update them every step - then it will be
-      slightly faster to put everything in the short-range list.
-
-   .. mdp-value:: >1
-
-      Calculate the long-range forces every :mdp:`nstcalclr` steps
-      and use a multiple-time-step integrator to combine forces. This
-      can now be done more frequently than :mdp:`nstlist` since the
-      lists are stored, and it might be a good idea *e.g.* for Van der
-      Waals interactions that vary slower than electrostatics.
-
-   .. mdp-value:: \-1
-
-      Calculate long-range forces on steps where neighbor searching is
-      performed. While this is the default value, you might want to
-      consider updating the long-range forces more frequently.
-
-      Note that twin-range force evaluation might be enabled
-      automatically by PP-PME load balancing. This is done in order to
-      maintain the chosen Van der Waals interaction radius even if the
-      load balancing is changing the electrostatics cutoff. If the
-      :ref:`mdp` file already specifies twin-range interactions (*e.g.* to
-      evaluate Lennard-Jones interactions with a longer cutoff than
-      the PME electrostatics every 2-3 steps), the load balancing will
-      have also a small effect on Lennard-Jones, since the short-range
-      cutoff (inside which forces are evaluated every step) is
-      changed.
-
 .. mdp:: ns-type
 
    .. mdp-value:: grid
@@ -591,15 +538,6 @@ Neighbor searching
    :mdp:`verlet-buffer-tolerance` option and the value of
    :mdp:`rlist` is ignored.
 
-.. mdp:: rlistlong
-
-   (-1) \[nm\]
-   Cut-off distance for the long-range neighbor list. This parameter
-   is only relevant for a twin-range cut-off setup with switched
-   potentials. In that case a buffer region is required to account for
-   the size of charge groups. In all other cases this parameter is
-   automatically set to the longest cut-off distance.
-
 
 Electrostatics
 ^^^^^^^^^^^^^^
@@ -608,9 +546,9 @@ Electrostatics
 
    .. mdp-value:: Cut-off
 
-      Twin range cut-offs with neighborlist cut-off :mdp:`rlist` and
-      Coulomb cut-off :mdp:`rcoulomb`, where :mdp:`rcoulomb` >=
-      :mdp:`rlist`.
+      Plain cut-off with neighborlist radius :mdp:`rlist` and
+      Coulomb cut-off :mdp:`rcoulomb`, where :mdp:`rlist` >=
+      :mdp:`rcoulomb`.
 
    .. mdp-value:: Ewald
 
@@ -649,7 +587,7 @@ Electrostatics
    .. mdp-value:: Reaction-Field
 
       Reaction field electrostatics with Coulomb cut-off
-      :mdp:`rcoulomb`, where :mdp:`rcoulomb` >= :mdp:`rlist`. The
+      :mdp:`rcoulomb`, where :mdp:`rlist` >= :mdp:`rvdw`. The
       dielectric constant beyond the cut-off is
       :mdp:`epsilon-rf`. The dielectric constant can be set to
       infinity by setting :mdp:`epsilon-rf` =0.
@@ -657,7 +595,7 @@ Electrostatics
    .. mdp-value:: Generalized-Reaction-Field
 
       Generalized reaction field with Coulomb cut-off
-      :mdp:`rcoulomb`, where :mdp:`rcoulomb` >= :mdp:`rlist`. The
+      :mdp:`rcoulomb`, where :mdp:`rlist` >= :mdp:`rcoulomb`. The
       dielectric constant beyond the cut-off is
       :mdp:`epsilon-rf`. The ionic strength is computed from the
       number of charged (*i.e.* with non zero charge) charge
@@ -679,17 +617,6 @@ Electrostatics
       :mdp:`Reaction-Field-zero` computationally more expensive than
       normal reaction-field.
 
-   .. mdp-value:: Reaction-Field-nec
-
-      The same as :mdp-value:`coulombtype=Reaction-Field`, but
-      implemented as in |Gromacs| versions before 3.3. No
-      reaction-field correction is applied to excluded atom pairs and
-      self pairs. The 1-4 interactions are calculated using a
-      reaction-field. The missing correction due to the excluded pairs
-      that do not have a 1-4 interaction is up to a few percent of the
-      total electrostatic energy and causes a minor difference in the
-      forces and the pressure.
-
    .. mdp-value:: Shift
 
       Analogous to :mdp-value:`vdwtype=Shift` for :mdp:`vdwtype`. You
@@ -1467,7 +1394,7 @@ Bonds
 
 .. mdp:: lincs-warnangle
 
-   (30) \[degrees\]
+   (30) \[deg\]
    maximum angle that a bond can rotate before LINCS will complain
 
 .. mdp:: morse
@@ -1600,25 +1527,15 @@ applicable pulling coordinate.
    (1e-6)
    the relative constraint tolerance for constraint pulling
 
-.. mdp:: pull-print-com1
+.. mdp:: pull-print-com
 
    .. mdp-value:: no
 
-      do not print the COM of the first group in each pull coordinate
+      do not print the COM for any group
 
    .. mdp-value:: yes
 
-      print the COM of the first group in each pull coordinate
-
-.. mdp:: pull-print-com2
-
-   .. mdp-value:: no
-
-      do not print the COM of the second group in each pull coordinate
-
-   .. mdp-value:: yes
-
-      print the COM of the second group in each pull coordinate
+      print the COM of all groups for all pull coordinates
 
 .. mdp:: pull-print-ref-value
 
@@ -1719,9 +1636,24 @@ applicable pulling coordinate.
 
    .. mdp-value:: flat-bottom
 
-      At distances beyond :mdp:`pull-coord1-init` a harmonic potential
+      At distances above :mdp:`pull-coord1-init` a harmonic potential
+      is applied, otherwise no potential is applied.
+
+   .. mdp-value:: flat-bottom-high
+
+      At distances below :mdp:`pull-coord1-init` a harmonic potential
       is applied, otherwise no potential is applied.
 
+   .. mdp-value:: external-potential
+
+      An external potential that needs to be provided by another
+      module.
+
+.. mdp:: pull-coord1-potential-provider
+
+      The name of the external module that provides the potential for
+      the case where :mdp:`pull-coord1-type` is external-potential.
+
 .. mdp:: pull-coord1-geometry
 
    .. mdp-value:: distance
@@ -1771,15 +1703,38 @@ applicable pulling coordinate.
       component. This geometry is not supported with constraint
       pulling.
 
+   .. mdp-value:: angle
+
+      Pull along an angle defined by four groups. The angle is
+      defined as the angle between two vectors: the vector connecting
+      the COM of the first group to the COM of the second group and
+      the vector connecting the COM of the third group to the COM of
+      the fourth group.
+
+   .. mdp-value:: angle-axis
+
+      As :mdp-value:`angle` but the second vector is given by :mdp:`pull-coord1-vec`.
+      Thus, only the two groups that define the first vector need to be given.
+
+   .. mdp-value:: dihedral
+
+      Pull along a dihedral angle defined by six groups. These pairwise
+      define three vectors: the vector connecting the COM of group 1
+      to the COM of group 2, the COM of group 3 to the COM of group 4,
+      and the COM of group 5 to the COM group 6. The dihedral angle is
+      then defined as the angle between two planes: the plane spanned by the
+      the two first vectors and the plane spanned the two last vectors.
+
+
 .. mdp:: pull-coord1-groups
 
-   The two groups indices should be given on which this pull
-   coordinate will operate. The first index can be 0, in which case an
+   The group indices on which this pull coordinate will operate.
+   The number of group indices required is geometry dependent.
+   The first index can be 0, in which case an
    absolute reference of :mdp:`pull-coord1-origin` is used. With an
    absolute reference the system is no longer translation invariant
    and one should think about what to do with the center of mass
-   motion. Note that (only) for :mdp:`pull-coord1-geometry` =
-   :mdp-value:`direction-relative` four groups are required.
+   motion.
 
 .. mdp:: pull-coord1-dim
 
@@ -1817,25 +1772,27 @@ applicable pulling coordinate.
 
 .. mdp:: pull-coord1-init
 
-   (0.0) \[nm\]
+   (0.0) \[nm\] / \[deg\]
    The reference distance at t=0.
 
 .. mdp:: pull-coord1-rate
 
-   (0) \[nm/ps\]
+   (0) \[nm/ps\] / \[deg/ps\]
    The rate of change of the reference position.
 
 .. mdp:: pull-coord1-k
 
-   (0) \[kJ mol-1 nm-2\] / \[kJ mol-1 nm-1\]
+   (0) \[kJ mol-1 nm-2\] / \[kJ mol-1 nm-1\] / \[kJ mol-1 rad-2\] / \[kJ mol-1 rad-1\]
    The force constant. For umbrella pulling this is the harmonic force
-   constant in kJ mol-1 nm-2. For constant force pulling this is the
+   constant in kJ mol-1 nm-2 (or kJ mol-1 rad-2 for angles). For constant force pulling this is the
    force constant of the linear potential, and thus the negative (!)
-   of the constant force in kJ mol-1 nm-1.
+   of the constant force in kJ mol-1 nm-1 (or kJ mol-1 rad-1 for angles).
+   Note that for angles the force constant is expressed in terms of radians
+   (while :mdp:`pull-coord1-init` and :mdp:`pull-coord1-rate` are expressed in degrees).
 
 .. mdp:: pull-coord1-kB
 
-   (pull-k1) \[kJ mol-1 nm-2\] / \[kJ mol-1 nm-1\]
+   (pull-k1) \[kJ mol-1 nm-2\] / \[kJ mol-1 nm-1\] / \[kJ mol-1 rad-2\] / \[kJ mol-1 rad-1\]
    As :mdp:`pull-coord1-k`, but for state B. This is only used when
    :mdp:`free-energy` is turned on. The force constant is then (1 -
    lambda) * :mdp:`pull-coord1-k` + lambda * :mdp:`pull-coord1-kB`.
@@ -2825,113 +2782,131 @@ Implicit solvent
    calculations are done.
 
 
-Adaptive Resolution Simulation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Computational Electrophysiology
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Use these options to switch on and control ion/water position exchanges in "Computational
+Electrophysiology" simulation setups. (See the `reference manual`_ for details).
 
-.. mdp:: adress
+.. mdp:: swapcoords
 
-   (no)
-   Decide whether the AdResS feature is turned on.
+   .. mdp-value:: no
 
-.. mdp:: adress-type
+      Do not enable ion/water position exchanges.
 
-   .. mdp-value:: Off
+   .. mdp-value:: X ; Y ; Z
 
-      Do an AdResS simulation with weight equal 1, which is equivalent
-      to an explicit (normal) MD simulation. The difference to
-      disabled AdResS is that the AdResS variables are still read-in
-      and hence are defined.
+      Allow for ion/water position exchanges along the chosen direction.
+      In a typical setup with the membranes parallel to the x-y plane,
+      ion/water pairs need to be exchanged in Z direction to sustain the
+      requested ion concentrations in the compartments.
 
-   .. mdp-value:: Constant
+.. mdp:: swap-frequency
 
-      Do an AdResS simulation with a constant weight,
-      :mdp:`adress-const-wf` defines the value of the weight
+   (1) The swap attempt frequency, i.e. every how many time steps the ion counts
+   per compartment are determined and exchanges made if necessary.
+   Normally it is not necessary to check at every time step.
+   For typical Computational Electrophysiology setups, a value of about 100 is
+   sufficient and yields a negligible performance impact.
 
-   .. mdp-value:: XSplit
+.. mdp:: split-group0
 
-      Do an AdResS simulation with simulation box split in
-      x-direction, so basically the weight is only a function of the x
-      coordinate and all distances are measured using the x coordinate
-      only.
+   Name of the index group of the membrane-embedded part of channel #0.
+   The center of mass of these atoms defines one of the compartment boundaries
+   and should be chosen such that it is near the center of the membrane.
 
-   .. mdp-value:: Sphere
+.. mdp:: split-group1
 
-      Do an AdResS simulation with spherical explicit zone.
+   Channel #1 defines the position of the other compartment boundary.
 
-.. mdp:: adress-const-wf
+.. mdp:: massw-split0
 
-   (1)
-   Provides the weight for a constant weight simulation
-   (:mdp:`adress-type` =Constant)
+   (no) Defines whether or not mass-weighting is used to calculate the split group center.
 
-.. mdp:: adress-ex-width
+   .. mdp-value:: no
 
-   (0)
-   Width of the explicit zone, measured from
-   :mdp:`adress-reference-coords`.
+      Use the geometrical center.
 
-.. mdp:: adress-hy-width
+   .. mdp-value:: yes
 
-   (0)
-   Width of the hybrid zone.
+      Use the center of mass.
 
-.. mdp:: adress-reference-coords
+.. mdp:: massw-split1
 
-   (0,0,0)
-   Position of the center of the explicit zone. Periodic boundary
-   conditions apply for measuring the distance from it.
+   (no) As above, but for split-group #1.
 
-.. mdp:: adress-cg-grp-names
+.. mdp:: solvent-group
 
-   The names of the coarse-grained energy groups. All other energy
-   groups are considered explicit and their interactions will be
-   automatically excluded with the coarse-grained groups.
+   Name of the index group of solvent molecules.
 
-.. mdp:: adress-site
+.. mdp:: coupl-steps
 
-   The mapping point from which the weight is calculated.
+   (\10) Average the number of ions per compartment over these many swap attempt steps.
+   This can be used to prevent that ions near a compartment boundary
+   (diffusing through a channel, e.g.) lead to unwanted back and forth swaps.
 
-   .. mdp-value:: COM
+.. mdp:: iontypes
 
-      The weight is calculated from the center of mass of each charge group.
+   (1) The number of different ion types to be controlled. These are during the
+   simulation exchanged with solvent molecules to reach the desired reference numbers.
 
-   .. mdp-value:: COG
+.. mdp:: iontype0-name
 
-      The weight is calculated from the center of geometry of each charge group.
+   Name of the first ion type.
 
-   .. mdp-value:: Atom
+.. mdp:: iontype0-in-A
 
-      The weight is calculated from the position of 1st atom of each charge group.
+   (-1) Requested (=reference) number of ions of type 0 in compartment A.
+   The default value of -1 means: use the number of ions as found in time step 0
+   as reference value.
 
-   .. mdp-value:: AtomPerAtom
+.. mdp:: iontype0-in-B
 
-      The weight is calculated from the position of each individual atom.
+   (-1) Reference number of ions of type 0 for compartment B.
 
-.. mdp:: adress-interface-correction
+.. mdp:: bulk-offsetA
 
-   .. mdp-value:: Off
+   (0.0) Offset of the first swap layer from the compartment A midplane.
+   By default (i.e. bulk offset = 0.0), ion/water exchanges happen between layers
+   at maximum distance (= bulk concentration) to the split group layers. However,
+   an offset b (-1.0 < b < +1.0) can be specified to offset the bulk layer from the middle at 0.0
+   towards one of the compartment-partitioning layers (at +/- 1.0).
 
-      Do not apply any interface correction.
+.. mdp:: bulk-offsetB
 
-   .. mdp-value:: thermoforce
+   (0.0) Offset of the other swap layer from the compartment B midplane.
 
-      Apply thermodynamic force interface correction. The table can be
-      specified using the ``-tabletf`` option of :ref:`gmx mdrun`. The
-      table should contain the potential and force (acting on
-      molecules) as function of the distance from
-      :mdp:`adress-reference-coords`.
 
-.. mdp:: adress-tf-grp-names
+.. mdp:: threshold
 
-   The names of the energy groups to which the thermoforce is applied
-   if enabled in :mdp:`adress-interface-correction`. If no group is
-   given the default table is applied.
+   (\1) Only swap ions if threshold difference to requested count is reached.
 
-.. mdp:: adress-ex-forcecap
+.. mdp:: cyl0-r
 
-   (0)
-   Cap the force in the hybrid region, useful for big molecules. 0
-   disables force capping.
+   (2.0) \[nm\] Radius of the split cylinder #0.
+   Two split cylinders (mimicking the channel pores) can optionally be defined
+   relative to the center of the split group. With the help of these cylinders
+   it can be counted which ions have passed which channel. The split cylinder
+   definition has no impact on whether or not ion/water swaps are done.
+
+.. mdp:: cyl0-up
+
+   (1.0) \[nm\] Upper extension of the split cylinder #0.
+
+.. mdp:: cyl0-down
+
+   (1.0) \[nm\] Lower extension of the split cylinder #0.
+
+.. mdp:: cyl1-r
+
+   (2.0) \[nm\] Radius of the split cylinder #1.
+
+.. mdp:: cyl1-up
+
+   (1.0) \[nm\] Upper extension of the split cylinder #1.
+
+.. mdp:: cyl1-down
+
+   (1.0) \[nm\] Lower extension of the split cylinder #1.
 
 
 User defined thingies
@@ -2950,6 +2925,18 @@ User defined thingies
 
    These you can use if you modify code. You can pass integers and
    reals and groups to your subroutine. Check the inputrec definition
-   in ``src/gromacs/legacyheaders/types/inputrec.h``
+   in ``src/gromacs/mdtypes/inputrec.h``
+
+Removed features
+^^^^^^^^^^^^^^^^
+
+This feature has been removed from |Gromacs|, but so that old
+:ref:`mdp` and :ref:`tpr` files cannot be mistakenly misused, we still
+parse this option. :ref:`gmx grompp` and :ref:`gmx mdrun` will issue a
+fatal error if this is set.
+
+.. mdp:: adress
+
+   (no)
 
 .. _reference manual: gmx-manual-parent-dir_