Latest Features and Bug Fixes in LAMMPS

This page is a continuous listing of new features and bug fixes for the LAMMPS molecular dynamics package. It also lists periodic "stable" versions which have undergone more testing.

See the unfixed bug page for info on as-yet unresolved bugs.

In some cases, new features change the syntax or operation of an existing input script command, which can cause LAMMPS output to change, or even "break" an earlier working script. These cases are highlighted below with a "BACKWARD COMPATIBILITY" note.

To stay up-to-date with the current LAMMPS, you have 3 choices:

This page contains a year's worth of new features and bug fixes.

Past years of features/fixes are here: 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004

Periodic summaries of major new features added to LAMMPS are on the history page.

Stable versions

These are recently released "stable" versions of LAMMPS, which have successfully passed a suite of build and run tests. This is more testing than is done for the incremental development patches listed below.

If you don't want to track the bleeding edge of LAMMPS development, you can always download a tarball of the most recent stable version on the download page. A summary of what is in each stable release is provided on the LAMMPS GitHub site.

Earlier stable versions are also available as tarballs on the LAMMPS web site, at this link, using the appropriate date from the list above.

You can use Git to check out a specific stable version in one of two ways, using the tag listed above:

(1) If you do not have an existing checkout:

git clone -b stable_4Nov2016 mylammps 

(2) If you already have an existing checkout:

git fetch origin
git checkout -b release-4Nov16 stable_4Nov2016 

which will create a branch with the name "release-4Nov16", with all the files for that specific stable release.

Likewise, you can use SVN to check out a specific stable version, using the tag listed above:

svn checkout mylammps 

Additional info on how to track other branches (stable, unstable, master) of the GitHub LAMMPS repository via Git or SVN are given on the download page.

What version of LAMMPS do you have?

A LAMMPS "version" is the date when it was released, such as 1 Oct 2010. LAMMPS is updated continuously. Every time we fix a bug or add a feature, we release it immediately, as listed below. Each dated copy of LAMMPS contains all the features and bug-fixes up to and including that version date. The version date is printed to the screen and logfile every time you run LAMMPS. It is on the first page of the HTML version of the manual. It is also in the file src/version.h and in the LAMMPS directory name created when you unpack a tarball.

13 Apr 2017

Fixed a small issue with the python package, introduced in the most recent patch, with respect to the instantiation/destruction of the Python interpreter. It could cause a segfault at the very end of a simulation, when LAMMPS exits.

This patch file can be applied to the 11 Apr 2017 version. This is the list of changed files.

11 Apr 2017

Stefan Paquay (Eindhoven U of Tech, The Netherlands) added bond coefficient options to the fix adapt command.

The name of the new dihedral_style charmmfsh command was changed to dihedral_style charmmfsw. This is to reflect that it should be used with both of the new pair_style charmmfsw commands, for both cutoff and long-range Coulombics.

BACKWARD COMPATIBILITY: As explained above, the dihedral_style charmmfsh command no longer exists. Use the dihedral_style charmmfsw command instead.

This patch file can be applied to the 31 Mar 2017 version. This is the list of changed files.

31 Mar 2017

Minor changes to enable 31Mar17 stable release.

Thanks to Axel Kohlmeyer and Richard Berger (Temple U) for birddogging this process and ensuring as much regression testing and bug fixing as possible was done.

This patch file can be applied to the 28 Mar 2017 version. This is the list of changed files.

28 Mar 2017

We changed the internal units of the Planck constant defined for LJ units, which only affects the fix gcmc command. The change makes it easier to choose an input chemical potential in a more consistent and natural way.

BACKWARD COMPATIBILITY: The internal units for the mu parameter for the fix gcmc command has changed when using LJ units. This means an input script using this parameter will give different results. The fix gcmc doc page explains the difference in units, and how to choose a new value for mu that would reproduce the old behavior.

Oliver Henrich (U Edinburgh) has augmented his USER-CGDNA package with additional pair and bond styles.

This patch file can be applied to the 24 Mar 2017 version. This is the list of changed files.

24 Mar 2017

A couple of bug fixes were made for the fix ave/chunk command for its density/number and density/mass options, which sometimes affected how normalization was performed.

Dan Bolintineanu (Sandia) added an option to treat spherical particles as 2d discs (circles), when time integrated with a rotational moment of inertia. It also affects the particle mass when set as a density parameter. This adds a new option to these commands:

Aidan Thompson (Sandia) added a new fix_modify dynamic/dof option for use with fix rigid/small/nvt and fix rigid/small/npt, which allows them to thermostat correctly when the number of rigid bodies varies dynamically. E.g. when rigid bodies are inserted via the fix gcmc, fix deposit, or fix pour commands.

Aidan also added some fix gcmc examples in a new examples/gcmc dir.

Ya Zhou, Kristen Fichthorn, and Tonnam Balankura (Penn State University) contributed a new pair_style momb command for a many-body metal-organic (MOMB) potential.

Robert Meissner and Lucio Colombi Ciacchi (Bremen U) and Robert Latour (Clemson U) have provided a more accurate implementation of the CHARMM force field for pairwise interactions. Specifically, they implemented the CHARMM-standard force-switching and force-shifting functions for pairwise distances between the inner and outer cutoffs for LJ and Coulombic interactions respectively. These can work better than the energy-switching function used in the original LAMMPS implementation. These are the new commands:

This patch file can be applied to the 17 Mar 2017 version. This is the list of changed files.

17 Mar 2017

Lukas Fath (KIT) added a "fix filter/corotate command implements a mollified impulse method. It can be used the the rRESPA time integrator to extend the maximum timestep size, typically for biomolecular simulations with long-range electrostatics.

Tim Mattox (Engility Corp) fixed an issue with the irregular communication operation in LAMMPS which is used by several commands. On very large processor counts and some MPI implementations it could hang due to blocking communication. For example, when using the MPIIO package which has to redistribute data after its parallel read operations.

This patch file can be applied to the 10 Mar 2017 version. This is the list of changed files.

10 Mar 2017

Changed the inner workings of the RCB option in the balance and fix balance commands with regards to which dimensions they make cuts in. Previously each cut was always in the longest dimension of the current sub-box. For some problems this can lead to very "skinny" sub-boxes which in extreme cases can trigger warnings about sub-domain dimensions being smaller than the neighbor list skin distance. This in turn can lead to poor performance or lost atoms. The new method attempts a cut in all dimensions (2 or 3), and chooses a cut which induces sub-boxes to be more cube-ish (3d) or square-ish (2d). This will hopefully avoid the issue with too-skinny boxes.

Thanks to John Grime (U Chicago) for flagging this issue, sending some test scripts that triggered it, and testing the new version on large simulations.

Added a tlimit option to the fix halt command to allow benchmark runs to be halted after a desired time limit with minmimal overhead.

This patch file can be applied to the 7 Mar 2017 version. This is the list of changed files.

7 Mar 2017

Markus Höhnerbach (RWTH Aachen University) did some nice, careful work to identify a handful of bugs in the implementation of the AIREBO potential in LAMMPS, checking the consistency of forces and energies, and comparing source files to a recent implementation of AIREBO by Steve Stuart's group (Clemson U) in the KIM project's archive of potentials. Hopefully this will fix issues that arise in some systems which users occasionally report.

Peter Gordon (ExxonMobil) extended the neigh_modify exclude molecule command to exclude either intermolecular or intramolecular nonbond neighbor interactions.

Jaap Kroes (Radboud Universiteit) contributed a new pair_style kolmogorov/crespi/z command.

BACKWARD COMPATIBILITY: The neigh_modify exclude molecule command no longer exists. It now has 2 variants: neigh_modify exclude molecule/inter and neigh_modify exclude molecule/intra. The latter was what the molecule option did before.

This patch file can be applied to the 21 Feb 2017 version. This is the list of changed files.

21 Feb 2017

Mitch Wood and Aidan Thompson (SNL) added a high-accuracy SNAP potential for tungsten and tungsten/helium interactions. The potential itself is in the potentials dir; example test scripts are in the examples/snap dir. The fitting procedure (to quantum DFT data) and comparison to previous potentials for tungsten crystal and defect properties are described here

Ray Shan (Materials Design) created Kokkos versions of the class2 bond/angle/dihedral/improper styles.

Some more (relatively minor) refactoring of neighbor lists was done to simply the possible combinations. Also to enable some new neighboring styles to be added, some of which will be useful for future commands we are working on.

The neighbor list enhancements enabled a new cutoff option for the compute rdf command so that g(r) can be calculated for distances further than the pairwise cutoff if desired. As the doc page indicates, this incurs extra communication and neighbor list building, so should be invoked judiciously.

This patch file can be applied to the 13 Jan 2017 version. This is the list of changed files.

13 Feb 2017

Axel Kohlmeyer trimmed down the 3d FFT code we use to eliminate old vendor 1d FFT support that is no longer needed.

Added a molecule option to the compute group/group command command, to allow tallying of energy and force between molecules or within molecules.

Jalil Mahdizadeh submitted a new Tersoff potential for germanium from this paper:

A Mahdizadeh, "Optimized Tersoff empirical potential for germanene", J Mol Graph Model, 72, 1-5 (2017).

This patch file can be applied to the 26 Jan 2017 version. This is the list of changed files.

26 Jan 2017

Various small bug fixes.

This patch file can be applied to the 18 Jan 2017 version. This is the list of changed files.

18 Jan 2017

Oliver Henrich (U Edinburgh) has added a USER-CGDNA package which implements coarse-grained DNA models, which can be used to model sequence-specific DNA strands. These are the new pair and bond and fix commands added by the package:

Example problems are also provide in the examples/USER/cgdna dir.

This patch file can be applied to the 17 Jan 2017 version. This is the list of changed files.

20 Jan 2017

A couple more small bug fixes to the neighbor list refactoring. Hopefully the last of them!

This patch file can be applied to the 17 Jan 2017 version. This is the list of changed files.

17 Jan 2017

Luis Gustavo Vieira Goncalves added an option to the compute coord/atom command to determine "coordination" based on an atom's bond-orientational order parameter with its neighbors. The way this is implemented, other options could be added for a central atom to calculate other properties with respect to its near neighbors to determine "coordination".

Added a line to the error messages LAMMPS generates to include the last input script command that was processed. This can be helpful when debugging an input script.

Fixed a few small bugs with the new neighbor list refactoring that were affecting specific input scripts. Thanks to sevearl users for reporting these issues.

BACKWARD COMPATIBILITY: The compute coord/atom command now takes a cstyle keyword, one of whose options is cutoff, which was the only option before.

This patch file can be applied to the 9 Jan 2017 version. This is the list of changed files.

9 Jan 2017

Lauren Abbott (Sandia) worked with Jacob Wagner from Greg Voth's group at (U Chicago) to create a new fix mscg command. It works with the Voth group's Multi-Scale Coarse-Graining (MS-CG) library, which is freely available on GitHub at this link. The new command uses the library to create coarse-grained force (CG) field parameters via a force-matching method. Thus it can be used in a workflow where an all-atom simulation is performed (e.g. with LAMMPS), its coordinates and forces are mapped to a CG model, an optimized CG force field is derived, and a new CG simulation is performed (again with LAMMPS). See more details on this workflow on the doc page for the fix mscg command and in examples/mscg.

Mike Brown (Intel) added a USER-INTEL accelerated version of the EAM pair style for Intel CPUs and KNL.

This patch file can be applied to the 6 Jan 2017 version. This is the list of changed files.

6 Jan 2017

Stan Moore (Sandia) enabled the kspaces_style pppm/tip4p command to work with triclinic boxes. This also fixes a corner case bug in the TIP4P pair styles, which sometimes occurred when the cutoff is larger than the box size. The code occasioanlly got confused with which H atom images (owned or ghost atoms) to assign to an O atom in the same water molecule.

Added a new fix nvk from Efrem Braun (UC Berkeley). Added a new fix momentum/kk (Kokkos) command from Dan Ibanez (Sandia).

This patch file can be applied to the 21 Dec 2016 version. This is the list of changed files.