Skip to content

Stable release 23 June 2022

Compare
Choose a tag to compare
@akohlmey akohlmey released this 22 Jun 21:40
· 5976 commits to stable since this release
stable_23Jun2022
7d5fc35

Below is a list of major changes since the last stable release 29 September 2021

This stable release adds about 3000 commits since the previous stable release. 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.

With this release we will remove the previously used branches master and unstable and use the current equivalents develop and release. The stable keeps its name, but since we published bugfix updates to the last stable release it will now run parallel to develop and be explicitly synchronized with it (technically speaking, the patch_23Jun2022 and the stable_23Jun2022 tags will point to different commit hashes due to the difference in their histories, but the content will be identical).

General Changes

  • Continued refactoring of the core LAMMPS code and many packages to increase code reuse, simplify new additions, improve consistency, and benefit from C++11 features. Several convenience functions and classes were added in the process.
  • New platform namespace with abstractions for platform specific operations or getting information about platforms and tools. This includes dynamic loading of shared objects and file and directory operations.
  • start ongoing project to change how errors and warnings are reported and documented
  • Improved portability, especially to Windows. It is now possible to build most of LAMMPS (including unit testing) natively on Windows with Visual Studio 2022 and MSVC++ compilers or Clang or Intel OneAPI compilers. Settings for Visual Studio are included.
  • Improved plugin mechanism and option to automatically load custom plugins that are either not distributed with LAMMPS or depend on libraries that have licensing terms or technical requirements preventing linking them into LAMMPS directly. Examples for how to build such plugins for the KIM and the ML-PACE package are included. For the latter also a NSIS script to build an installer for Windows.
  • Semi-automatic refactoring with clang-tidy: this has updated the coding style to take advantage of C++11 features and make things more explicit, so the compiler can warn more easily about problems. Also, clang-format is now applied to more files.
  • update force style unit tests to work with Kokkos + OpenMP
  • Refactor handling of thermodynamic output for better readability and add new thermo_style "yaml"
  • Automatically load plugins in folders listed in the LAMMPS_PLUGIN_PATH environment variable
  • More content and improvements for the Programmer Guide section of the Manual

Updates and new commands or styles or packages:

  • New fix acks2/reaxff for ACKS2 charge equilibration and updates to fix qeq/reaxff that add support for fix efield to both charge equilibration methods.
  • New fix mol/swap for swapping of atom types within a single, randomly selected molecule
  • Add support for multi-species potentials to ML-PACE package
  • Allow GPU package pair styles to be used with newton_pair on
  • New pair style sw/mod providing an empirically modified Stillinger-Weber potential suitable for compounds like MoS2
  • New pair style nm/cut/split and bond style fene/nm for coarse grain polymer models
  • Support for binary native dump files for read_dump and rerun
  • Updated singularity/apptainer definition files
  • New compute ave/sphere/atom to compute averaged properties in a sphere around atoms
  • Support writing to dump files at regular time interface for variable timestep simulations
  • Add centroid atomic stress support for shake, rattle and rigid/small fixes
  • Add new pair style harmonic/cut providing a repulsive-only harmonic potential
  • Add new fix numdiff/virial for deriving virial stress from potential energy via numerical differences
  • Add two new interlayer pair styles ilp/tmd and saip/metal
  • new option for multi-file dumps to have files that are more evenly sized to address post-processing and visualization issues for simulations of very large systems
  • accelerator support (including KOKKOS) and improvements for dynamical_matrix and third_order commands
  • re-implementation of the tools/eam_database Fortran code in Python
  • update setup.py and install.py for python module to use setuptools instead of deprecated distutils and build a binary wheel file
  • Add computes for local components of the pressure tensor in cartesian and spherical coordinates
  • Major update of the LATBOLTZ package
  • Code optimization for several KOKKOS styles
  • Add fixes for damping of rotational and translational energy for extended particles
  • Add support for an inner cutoff switching function to SNAP related commands that smoothly turns of SNAP descriptors at short range
  • Memory usage optimization and bugfix for mesocnt pair style
  • new BPM package for bonded particle models
  • new ELECTRODE package
  • updates and additions to the DIELECTRIC package
  • new compute fep/ta for the FEP package implementing test-area perturbation
  • new pair styles ilp/graphene/hbn/opt, ilp/tmd/opt, and saip/metal/opt for the OPT package with 2x speedup
  • new pair styles smatb and smatb/single for the SMTBQ package
  • new dump_style yaml command in the EXTRA-DUMP package
  • add Kspace support to the PLUGIN package
  • enhancements and additions for the MDI package. This obsoletes the MESSAGE package.
  • additions to the BROWNIAN package to support different rotational and translational temperatures and option to constrain rotation in a plane in 3d
  • additions to PyTorch support in ML-IAP packge
  • new compute born/matrix command to compute elastic stress
  • add KOKKOS package versions of the pair styles from the DPD-BASIC package
  • add KOKKOS package version of pair style adp
  • new colname option for dump_modify and thermo_modify to replace the column header strings for thermo output or in dump files
  • add support for writing yaml format files to fix ave/time and also support fix_modify colname similar to thermo and dump
  • add support for angle styles to fix adapt and add or update "extract()" methods to some angle/bond styles and make the extract arguments more consistent
  • add region style ellipsoid
  • add "aveabs" and "sumabs" options to compute reduce
  • add "variable" option to delete_atoms command
  • bugfix for DOF handling in compute temp/profile
  • more consistent behavior of dynamic groups through moving the invocation of the internal fix to a later time in the timestep
  • make time thermo property restartable and implement a reset_timestep time option to set it manually
  • remove support for legacy GPU hardware and CUDA toolkits in the GPU package
  • Update of the bundled Kokkos library to version 3.6.0
  • Update of the bundled Colvars library to version 2022-05-24
  • Add KOKKOS package version of the pace pair style from the ML-PACE package
  • New pair styles "sw/angle/table" and "threebody/table" for the MANYBODY package
  • Add support for GPU accelerated FFTs with HIP and KOKKOS
  • Add support for SO3 descriptors to the ML-IAP package
  • New "overlap" option for create_atoms random that will avoid close contacts
  • New "mesh" option for create_atoms to approximate meshes from STL files with atoms
  • Add timer style variables for measuring wall time in seconds from the input script

Backward compatibility notices:

  • delete_atoms porosity has been renamed to delete_atoms random and uses/supports different options
  • The CC.Lebedeva interlayer potential file has been updated. It now uses by default parameters for "normal" conditions. The previous default parameters are tuned for high-pressure conditions and are still available when using "C1" instead of "C" as element.
  • Using the PyLammps python module now requires the presence of numpy
  • The new version of make install-python will not install a package over an existing package as the old version did. Instead, it will attempt to uninstall the old package and then install the new version. Packages installed with distutils, like the old version of make install-python, must be manually uninstalled (they don't store a suitable manifest). This should only be needed once, since from then on uninstall should be possible.
  • The update to the LATBOLTZ package is a significant update that changes the syntax of the fix lb/fluid command in a way that is not backward compatible. Inputs must be updated accordingly. Also fixes lb/pc and lb/pc/rigid/sphere have been removed and fixes nve and rigid should be used in their stead.
  • The thermodynamic output format is slightly changed. This may break parser implementations for analysis of LAMMPS log files that are not indifferent to whitespace changes and width of fields.
  • the MESSAGE package has been removed. its functionality is provided in a more general way by the MDI package
  • the GPU package using CUDA now requires CUDA toolkit version 8 or later and GPU architector 3.0 (aka Kepler or later). When compiling for OpenCL, driver support for OpenCL 1.2 is required. OpenCL can provide support for GPUs not supported by the CUDA toolkit anymore.
  • the bug fix to the DOF calculation in compute temp/profile changes the results (usually by a small margin)