New LAMMPS Stable version 29 September 2021 released

The new release is available from: Release Stable release 29 September 2021 · lammps/lammps · GitHub
and from https://lammps.org/download.html

Below is a list of major changes since the last stable release 29 October 2020

This release contains the work of the last 11 months. This includes many contributions from beyond the core LAMMPS developers, but also continues the internal refactoring of the code base to make it more consistent and reliable yet also take more advantage of C++ features where they help to simplify the code and easier to modify, maintain, and contribute to.

General changes:

  • Continued refactoring of the core LAMMPS code and many packages to increase code reuse, simplify new additions, improve consistentcy, and benefit from C++11 features. Several convenience functions and classes were added in the process.
  • Reorganization of packages: the “USER” prefix has been dropped, some packages have prefixes to group them (CG-, DPD-, EXTRA-, ML-) and the contents of the USER-MISC package have been moved to appropriate existing or new packages. There are now EXTRA-PAIR, EXTRA-COMPUTE, EXTRA-FIX, EXTRA-DUMP, EXTRA-MOLECULE packages for the less commonly used styles. We recommend that external packages (i.e. those not included in the LAMMPS distribution) adopt a USER- prefix to make them recognizable as external package.
  • Refactored multi-cutoff neighbor list support resulting in significant performance improvements for polydisperse granular systems.
  • Continued improvements to the build systems, especially the CMake based version.
  • Refactored the handling of embedded citation strings to make them more visible.
  • Updates and additions to the programmer guide section of the manual including updated guidelines and information for contributing code to LAMMPS.
  • Add support for using clang-format in the src tree with a configuration file and suitable comments in the source files. This is recommended for new contributions and will be gradually applied to existing .cpp files as the reformatting can interfere with the readability in some cases.
  • Scripts to support building LAMMPS and its documentation via CMake on systems without direct internet access.

Updates and new commands or styles or packages:

  • Expanded support for machine learning potentials in the ML-IAP package and the added ML-HDNNP, ML-PACE, ML-RANN packages
  • New MDI package to allow client/server mode coupling of LAMMPS to other code using the MolSSI Driver Interface API
  • New BROWNIAN package for Brownian dynamics time integration of point and extended particles plus updates for fix propel/self
  • New DIELECTRIC package with boundary element solvers for computing induced charges at interfaces
  • Major refactoring of the REAXFF package to eliminate dead code and inconsistencies, modernize force field file parsing, and correctly handle computing of the virial stress under different settings and with OpenMP
  • Updates to the library interface and corresponding changes to the LAMMPS python module: bug fixes, additional introspection support and support for setting callbacks for fix external and other associated properties with C and Python callbacks/functions possible.
  • Updated GPU package with improved support for OpenCL which enables using the GPU package with GPUs embedded in Intel processors (Iris, UHD, and HD graphics using the “NEO” OpenCL runtime).
  • Diverse updates, performance improvements, and bugfixes for the following packages: DRUDE, PLUMED, COLVARS, KOKKOS, KIM, ML-IAP, SNAP, REACTION
  • Many bugfixes, updates, and individual contributed commands and styles.

Backward compatibility notes:

  • The LAMMPS python module is now a folder with multiple Python script files instead of a single lammps.py file. This should not affect how the module can be used “in-place” by setting environment variables. The python module contains a version check that should help detecting when a LAMMPS shared library that does not match the python module.
  • Multi-cutoff neighbor list and communication is using a new and more flexible code path with a few additional constraints over the old code path, which is still available as a backup that must be explicitly requested.
  • KIM package commands have been reorganized into a single wrapper and multiple sub-commands: kim_<something> has become kim <something>
  • The CMake preset “minimal” has been renamed to “basic”. There are no more “make yes/no-standard” and “make yes/no-user” due to the package reorganization; instead “make yes/no-basic” and a “make yes/no-most” targets have been added to reflect the corresponding CMake presets