New and improved features
^^^^^^^^^^^^^^^^^^^^^^^^^

Added support for AWH biasing
"""""""""""""""""""""""""""""
The AWH (Accelerated Weight Histogram) method is an adaptive biasing
method used for overcoming free energy barriers and calculating
free energies (see https://doi.org/10.1063/1.4890371). Although
AWH can in general bias any system parameter, this change only
implements biasing of reaction coordinates. The actual force
distribution and coordinate handling is taken care of by the pull
code. AWH interacts with the pull code by registering itself as
the external potential module for the coordinate that should be
AWH biased. The AWH code sets the potential and force for those
coordinates. See the reference manual for full documentation.

It includes a feature to compute the time-integrated force
correlation, also known as the friction tensor (see
e.g. https://doi.org/10.1103/PhysRevLett.108.190602). The friction
tensor defines a metric on the coordinate space and the local volume
element of this metric is a useful measure for determining which
regions need more or less sampling.

Dual pair-list buffer with dynamic pruning
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The |Gromacs| simulation engine uses a new dual pair-list algorithm with
dynamic pruning in cases where the Verlet buffer is determined
automatically (which is the default). This allows further reducing the
frequency of pair search (and domain decomposition) while avoiding
large Verlet buffers and the previously inherent increased
computational cost in the short-ranged nonbonded kernels.  This is
achieved by constructing an "outer" pair-list built infrequently,
which includes many pairs in the list that are outside the cut-off
range for most of the lifetime of the list. Such pairs can be pruned
out very efficiently every few steps and with that building a smaller, "inner"
pair-list with a shorter life-time, and importantly a correspondingly
shorter Verlet buffer (still adhering to the specified tolerance),
which is then used in the nonbonded kernels. Thanks to this,
simulations runs are significantly less sensitive to tuning the search
frequency parameter ("nstlist").
When short-ranged interactions are running on the GPU, the dynamic pruning is overlapped
with the integration on the CPU, so is usually free. This feature
improves all of simulation rate, hardware utilization, and power
consumption.

Added physical validation suite
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
These tests run series of short simulations and verify the expected
statistical properties, e.g. of energy distributions between the
simulations, as a sensitive test that the code correctly samples
the expected ensemble.

To run everything locally (which can take a few hours!) use

::

   cmake -DGMX_PHYSICAL_VALIATION=ON ..
   make
   make check-phys-run

Currently, the script is only running a few systems, checking
convergence of energy conservation in NVE system with decaying
timestep, and the ensembles generated by a few thermostating and
barostating algorithms. Other systems and ensembles covering a broader
combination of settings will be added over time.

Added reporting of conserved quantities for coupling algorithms
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The work that some more coupling algorithms (Berendsen pressure,
Berendsen temperature, and Parrinello-Rahman pressure) applies on the
system is calculated and integrated. Formulae are in the reference
manual.

Added acceleration correction VCM mode
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
New mdp option to remove the center of mass translational velocity and
correct the center of mass position, assuming linear acceleration. This
is useful e.g. for pulling on a group using an absolute reference.

Changed handling of :ref:`gmx mdrun` -gpu_id
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
As more code is able to be offloaded to the GPU, task assignment has
become more complex, and is likely to get more complex still. The
-gpu_id command-line option now merely enables the user to restrict
which of the detected GPUs are available to the automated task
assignment scheme, somewhat like the ``CUDA_VISIBLE_DEVICES`` environment
variable. For the rare cases where full control is needed,
``gmx mdrun -gputasks`` is available and documented in the user guide.

Added log output for equivalent 1x1 pair-list setup
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The |Gromacs| NxM setup can use a shorter pair-list buffer than
other codes' simpler 1x1 scheme, so our log files now report
the equivalent setup, to help people doing performance and
correctness comparisons.

New mdp input for electric fields
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

EW3DC for non-neutral systems
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Added the corrections to force and energy according to
Ballenegger, Arnold, and Cerda, J. Chem. Phys. 131, 094107 2009
(https://doi.org/10.1063/1.3216473). Hinted that people
read https://doi.org/10.1021/ct400626b to help make good choices.
Added a warning in grompp for charged systems with Ewald.

Reduce rounding errors in SETTLE
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The parameters for SETTLE are now computed in double precision, which
lowers the systematic error.

Made ``gmx mdrun -pforce`` terminate with non-finite forces
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
The :ref:`gmx mdrun` option -pforce used to print non-finite forces,
but would not terminate the run if any were found. Now a fatal error
is issued.
