Version 2.8

Version 2.8 (Feb 22, 2022)

Changes from version 2.7 which are relevant for users:

  • Changes leading to differences with previous versions
    • in METAD and PBMETAD, Gaussians are now stretched rather than truncated, making the energy a continuous function of the collective variable. See #420.
    • sum_hills is now aware of stretched Gaussians. This change also fixes a minor bug in the set of grid points where Gaussians were different from zero that is still present up to version 2.7.
    • it is possible to restart from a HILLS file produced with PLUMED < 2.8, but Gaussians will be reinterpreted as stretched and a warning will be written in the log file. This might lead to small numerical changes in bias potentials.
    • in METAD if possible the root walker in WALKERS_MPI will set the folder from which reading the GRID/HILLS file upon restart
    • in METAD work is not calculated by default anymore, if needed it can be obtained using CALC_WORK
    • in METAD an error will be thrown if, when restarting from FILE, the file is not found
    • the parser is more strict. Specifically, the explicitly crashes when a string cannot be parsed correctly. This was true only in a limited number of cases until v2.7 and might lead to errors when reading incorrectly formatted files. See #717.
  • New actions:
    • GHBFIX to compute generalized hydrogen-bond fixes
  • New contributed module:
  • Fixed patches:
    • A bug in using GROMACS with expanded ensemble in combination with PLUMED has been fixed (version 2020.6 and 2021.4, see #793). Notice that this fix requires PLUMED 2.8, so it won't be backward compatible.
  • Other improvements
    • in METAD a new keyword NLIST has been added to use a neighbor list for bias evaluation, this should be faster than grids with many CVs
    • in METAD there are more checks that a restart of WALKERS_MPI is working consistently among walkers
    • in driver there is a flag --restart that can be used to enforce restart (similar to using RESTART in the PLUMED input file).
    • Added configure option --enable-cxx. Can be used to select C++14 with --enable-cxx=14. Required to compile against libraries whose header files need C++14.
  • Changes in the OPES module
  • Changes in the VES module
    • New localized basis functions: Wavelets (BF_WAVELETS), Gaussians (BF_GAUSSIANS), and cubic splines (BF_CUBIC_B_SPLINES). In particular, symmetric wavelets (symlets) have shown the best performance and are recommended of the localized basis functions. Furthermore, symlets have been shown to perform better than delocalized Chebyshev and Legendre polynomials.
    • New optimizer based on Adam (OPT_ADAM). Still experimental, and restarting with it does not work yet.
    • New optimizer based on classical Robbins Monro stochastic gradient descent (OPT_ROBBINS_MONRO_SGD). Only included for reference and not recommended for usage in simulations.
    • Fixed a bug in VES_LINEAR_EXPANSION for multidimensional bias potential if one (or more) of the CVs is outside the range of the bias potential. Previously, there was a force acting on the CVs if this happened. Now, there is no biasing force acting on the CVs if one (or more) of the CVs is outside the bias potential range.
  • Changes in the DRR module
    • Added a new option MERGEHISTORYFILES to output a single history file instead of many .drrstate files.
  • For developers:
    • The C++ interface now performs type checking (see This should require no change for MD codes that were calling PLUMED with correct arguments. Checks could be disabled at runtime with export PLUMED_TYPESAFE_IGNORE=yes.
    • Two new Fortran modules have been added. One of them provides explicit interfaces for the already available wrappers. With no change in calling code, just by including this module, one could perform runtime type/shape checking. In addition, a novel object oriented Fortran interface has been designed which allow to better manipulate PLUMED instances from Fortran. Both interfaces were written with a significant help from Balint Aradi.
    • The C interface (plumed_cmd) also performs type checking and allows overload-like syntax to pass additional size and shape information. This is obtained redefining plumed_cmd to a macro that calls the C++ interface, when using a C++ compiler, or using C11 _Generic, if the C compiler supports it. This feature is not supported if used a pre-C11 C compiler (pre-C++11 C++ compilers are ok instead).
    • xxd replaced by a awk script. This removed the build dependence on vim.
    • Lepton has been updated with OpenMM 7.6.0
    • Asmjit is now enabled by default on supported architectures.
    • Xdrfile library is now embedded and always available.
    • --enable-rpath now also includes the path where is installed (see #767).

Version 2.8.1 (Oct 21, 2022)

  • Includes all fixes up to 2.7.5
  • It is now possible to pass a mpi4py communicator from the Python interface. This is backported from master, see #818 (thanks to Henrique Musseli Cezar).
  • Fix in --enable-rpath (see #807).
  • Updated gromacs patches
  • Fixed gromacs patches (2020 and 2021) to solve #829.
  • Fixed a few incorrect const conversions in wrapper/Plumed.h.

Version 2.8.2

  • Fixed a regression introduced in v2.8.0 which would make multi-thread simulations, with a separate Plumed object in each thread, crash randomly
  • Fixed a bug in SAXS cv using recent versions of arrayfire