Previous Section - LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands - Next Section

1. Introduction

These sections provide an overview of what LAMMPS can and can't do, describe what it means for LAMMPS to be an open-source code, and acknowledge the funding and people who have contributed to LAMMPS over the years.

1.1 What is LAMMPS
1.2 LAMMPS features
1.3 LAMMPS non-features
1.4 Open source distribution
1.5 Acknowledgments and citations

1.1 What is LAMMPS

LAMMPS is a classical molecular dynamics code that models an ensemble of particles in a liquid, solid, or gaseous state. It can model atomic, polymeric, biological, metallic, granular, and coarse-grained systems using a variety of force fields and boundary conditions.

For examples of LAMMPS simulations, see the Publications page of the LAMMPS WWW Site.

LAMMPS runs efficiently on single-processor desktop or laptop machines, but is designed for parallel computers. It will run on any parallel machine that compiles C++ and supports the MPI message-passing library. This includes distributed- or shared-memory parallel machines and Beowulf-style clusters.

LAMMPS can model systems with only a few particles up to millions or billions. See this section for information on LAMMPS performance and scalability, or the Benchmarks section of the LAMMPS WWW Site.

LAMMPS is a freely-available open-source code, distributed under the terms of the GNU Public License, which means you can use or modify the code however you wish. See this section for a brief discussion of the open-source philosophy.

LAMMPS is designed to be easy to modify or extend with new capabilities, such as new force fields, atom types, boundary conditions, or diagnostics. See this section for more details.

The current version of LAMMPS is written in C++. Earlier versions were written in F77 and F90. See this section for more information on different versions. All versions can be downloaded from the LAMMPS WWW Site.

LAMMPS was originally developed under a US Department of Energy CRADA (Cooperative Research and Development Agreement) between two DOE labs and 3 companies. It is distributed by Sandia National Labs. See this section for more information on LAMMPS funding and individuals who have contributed to LAMMPS.

In the most general sense, LAMMPS integrates Newton's equations of motion for collections of atoms, molecules, or macroscopic particles that interact via short- or long-range forces with a variety of initial and/or boundary conditions. For computational efficiency LAMMPS uses neighbor lists to keep track of nearby particles. The lists are optimized for systems with particles that are repulsive at short distances, so that the local density of particles never becomes too large. On parallel machines, LAMMPS uses spatial-decomposition techniques to partition the simulation domain into small 3d sub-domains, one of which is assigned to each processor. Processors communicate and store "ghost" atom information for atoms that border their sub-domain. LAMMPS is most efficient (in a parallel sense) for systems whose particles fill a 3d rectangular box with roughly uniform density. Papers with technical details of the algorithms used in LAMMPS are listed in this section.


1.2 LAMMPS features

This section highlights LAMMPS features, with pointers to specific commands which give more details. If LAMMPS doesn't have your favorite interatomic potential, boundary condition, or atom type, see this section, which describes how you can add it to LAMMPS.

General features

Particle and model types

(atom style command)

Force fields

(pair style, bond style, angle style, dihedral style, improper style, kspace style commands)

hybrid potentials: multiple pair, bond, angle, dihedral, improper potentials can be used in one simulation overlaid potentials: superposition of multiple pair potentials

Atom creation

(read_data, lattice, create_atoms, delete_atoms, displace_atoms, replicate commands)

Ensembles, constraints, and boundary conditions

(fix command)

Integrators

(run, run_style, minimize commands)

Diagnostics

Output

(dump, restart commands)

Multi-replica models

nudged elastic band parallel replica dynamics temperature accelerated dynamics parallel tempering

Pre- and post-processing

Specialized features

These are LAMMPS capabilities which you may not think of as typical molecular dynamics options:


1.3 LAMMPS non-features

LAMMPS is designed to efficiently compute Newton's equations of motion for a system of interacting particles. Many of the tools needed to pre- and post-process the data for such simulations are not included in the LAMMPS kernel for several reasons:

Specifically, LAMMPS itself does not:

A few tools for pre- and post-processing tasks are provided as part of the LAMMPS package; they are described in this section. However, many people use other codes or write their own tools for these tasks.

As noted above, our group has also written and released a separate toolkit called Pizza.py which addresses some of the listed bullets. It provides tools for doing setup, analysis, plotting, and visualization for LAMMPS simulations. Pizza.py is written in Python and is available for download from the Pizza.py WWW site.

LAMMPS requires as input a list of initial atom coordinates and types, molecular topology information, and force-field coefficients assigned to all atoms and bonds. LAMMPS will not build molecular systems and assign force-field parameters for you.

For atomic systems LAMMPS provides a create_atoms command which places atoms on solid-state lattices (fcc, bcc, user-defined, etc). Assigning small numbers of force field coefficients can be done via the pair coeff, bond coeff, angle coeff, etc commands. For molecular systems or more complicated simulation geometries, users typically use another code as a builder and convert its output to LAMMPS input format, or write their own code to generate atom coordinate and molecular topology for LAMMPS to read in.

For complicated molecular systems (e.g. a protein), a multitude of topology information and hundreds of force-field coefficients must typically be specified. We suggest you use a program like CHARMM or AMBER or other molecular builders to setup such problems and dump its information to a file. You can then reformat the file as LAMMPS input. Some of the tools in this section can assist in this process.

Similarly, LAMMPS creates output files in a simple format. Most users post-process these files with their own analysis tools or re-format them for input into other programs, including visualization packages. If you are convinced you need to compute something on-the-fly as LAMMPS runs, see this section for a discussion of how you can use the dump and compute and fix commands to print out data of your choosing. Keep in mind that complicated computations can slow down the molecular dynamics timestepping, particularly if the computations are not parallel, so it is often better to leave such analysis to post-processing codes.

A very simple (yet fast) visualizer is provided with the LAMMPS package - see the xmovie tool in this section. It creates xyz projection views of atomic coordinates and animates them. We find it very useful for debugging purposes. For high-quality visualization we recommend the following packages:

Other features that LAMMPS does not yet (and may never) support are discussed in this section.

Finally, these are freely-available molecular dynamics codes, most of them parallel, which may be well-suited to the problems you want to model. They can also be used in conjunction with LAMMPS to perform complementary modeling tasks.

CHARMM, AMBER, NAMD, NWCHEM, and Tinker are designed primarily for modeling biological molecules. CHARMM and AMBER use atom-decomposition (replicated-data) strategies for parallelism; NAMD and NWCHEM use spatial-decomposition approaches, similar to LAMMPS. Tinker is a serial code. DL_POLY includes potentials for a variety of biological and non-biological materials; both a replicated-data and spatial-decomposition version exist.


1.4 Open source distribution

LAMMPS comes with no warranty of any kind. As each source file states in its header, it is a copyrighted code that is distributed free-of- charge, under the terms of the GNU Public License (GPL). This is often referred to as open-source distribution - see www.gnu.org or www.opensource.org for more details. The legal text of the GPL is in the LICENSE file that is included in the LAMMPS distribution.

Here is a summary of what the GPL means for LAMMPS users:

(1) Anyone is free to use, modify, or extend LAMMPS in any way they choose, including for commercial purposes.

(2) If you distribute a modified version of LAMMPS, it must remain open-source, meaning you distribute it under the terms of the GPL. You should clearly annotate such a code as a derivative version of LAMMPS.

(3) If you release any code that includes LAMMPS source code, then it must also be open-sourced, meaning you distribute it under the terms of the GPL.

(4) If you give LAMMPS files to someone else, the GPL LICENSE file and source file headers (including the copyright and GPL notices) should remain part of the code.

In the spirit of an open-source code, these are various ways you can contribute to making LAMMPS better. You can send email to the developers on any of these items.


1.5 Acknowledgments and citations

LAMMPS development has been funded by the US Department of Energy (DOE), through its CRADA, LDRD, ASCI, and Genomes-to-Life programs and its OASCR and OBER offices.

Specifically, work on the latest version was funded in part by the US Department of Energy's Genomics:GTL program (www.doegenomestolife.org) under the project, "Carbon Sequestration in Synechococcus Sp.: From Molecular Machines to Hierarchical Modeling".

The following papers describe the parallel algorithms used in LAMMPS.

S. J. Plimpton, Fast Parallel Algorithms for Short-Range Molecular Dynamics, J Comp Phys, 117, 1-19 (1995).

S. J. Plimpton, R. Pollock, M. Stevens, Particle-Mesh Ewald and rRESPA for Parallel Molecular Dynamics Simulations, in Proc of the Eighth SIAM Conference on Parallel Processing for Scientific Computing, Minneapolis, MN (March 1997).

If you use LAMMPS results in your published work, please cite the J Comp Phys reference and include a pointer to the LAMMPS WWW Site (http://lammps.sandia.gov).

If you send is information about your publication, we'll be pleased to add it to the Publications page of the LAMMPS WWW Site. Ditto for a picture or movie for the Pictures or Movies pages.

The core group of LAMMPS developers is at Sandia National Labs. They include Steve Plimpton, Paul Crozier, and Aidan Thompson and can be contacted via email: sjplimp, pscrozi, athomps at sandia.gov.

Here are various folks who have made significant contributions to features in LAMMPS. The most recent contributions are at the top of the list.

pppm GPU single and double Mike Brown (ORNL)
pair_style lj/cut/expand Inderaj Bains (NVIDIA)
temperature accelerated dynamics (TAD) Aidan Thompson (Sandia)
pair reax/c and fix qeq/reax Metin Aktulga (Purdue, now LBNL)
DREIDING force field, pair_style hbond/dreiding, etc Tod Pascal (CalTech)
fix adapt and compute ti for thermodynamic integreation for free energies Sai Jayaraman (Sandia)
pair born and pair gauss Sai Jayaraman (Sandia)
stochastic rotation dynamics (SRD) via fix srd Jemery Lechman (Sandia) and Pieter in 't Veld (BASF)
ipp Perl script tool Reese Jones (Sandia)
eam_database and createatoms tools Xiaowang Zhou (Sandia)
electron force field (eFF) Andres Jaramillo-Botero and Julius Su (Caltech)
embedded ion method (EIM) potential Xiaowang Zhou (Sandia)
COMB potential with charge equilibration Tzu-Ray Shan (U Florida)
fix ave/correlate Benoit Leblanc, Dave Rigby, Paul Saxe (Materials Design) and Reese Jones (Sandia)
pair_style peri/lps Mike Parks (Sandia)
fix msst Lawrence Fried (LLNL), Evan Reed (LLNL, Stanford)
thermo_style custom tpcpu & spcpu keywords Axel Kohlmeyer (Temple U)
fix rigid/nve, fix rigid/nvt Tony Sheh and Trung Dac Nguyen (U Michigan)
public SVN & Git repositories for LAMMPS Axel Kohlmeyer (Temple U) and Bill Goldman (Sandia)
fix nvt, fix nph, fix npt, Parinello/Rahman dynamics, fix box/relax Aidan Thompson (Sandia)
compute heat/flux German Samolyuk (ORNL) and Mario Pinto (Computational Research Lab, Pune, India)
pair yukawa/colloid Randy Schunk (Sandia)
fix wall/colloid Jeremy Lechman (Sandia)
pair_style dsmc for Direct Simulation Monte Carlo (DSMC) modeling Paul Crozier (Sandia)
fix imd for real-time viz and interactive MD Axel Kohlmeyer (Temple Univ)
concentration-dependent EAM potential Alexander Stukowski (Technical University of Darmstadt)
parallel replica dymamics (PRD) Mike Brown (Sandia)
min_style hftn Todd Plantenga (Sandia)
fix atc Reese Jones, Jon Zimmerman, Jeremy Templeton (Sandia)
dump cfg Liang Wan (Chinese Academy of Sciences)
fix nvt with Nose/Hoover chains Andy Ballard (U Maryland)
pair_style lj/cut/gpu, pair_style gayberne/gpu Mike Brown (Sandia)
pair_style lj96/cut, bond_style table, angle_style table Chuanfu Luo
fix langevin tally Carolyn Phillips (U Michigan)
compute heat/flux for Green-Kubo Reese Jones (Sandia), Philip Howell (Siemens), Vikas Varsney (AFRL)
region cone Pim Schravendijk
fix reax/bonds Aidan Thompson (Sandia)
pair born/coul/long Ahmed Ismail (Sandia)
fix ttm Paul Crozier (Sandia) and Carolyn Phillips (U Michigan)
fix box/relax Aidan Thompson and David Olmsted (Sandia)
ReaxFF potential Aidan Thompson (Sandia) and Hansohl Cho (MIT)
compute cna/atom Wan Liang (Chinese Academy of Sciences)
Tersoff/ZBL potential Dave Farrell (Northwestern U)
peridynamics Mike Parks (Sandia)
fix smd for steered MD Axel Kohlmeyer (U Penn)
GROMACS pair potentials Mark Stevens (Sandia)
lmp2vmd tool Axel Kohlmeyer (U Penn)
compute group/group Naveen Michaud-Agrawal (Johns Hopkins U)
CG-CMM user package for coarse-graining Axel Kohlmeyer (U Penn)
cosine/delta angle potential Axel Kohlmeyer (U Penn)
VIM editor add-ons for LAMMPS input scripts Gerolf Ziegenhain
pair lubricate Randy Schunk (Sandia)
compute ackland/atom Gerolf Zeigenhain
kspace_style ewald/n, pair_style lj/coul, pair_style buck/coul Pieter in 't Veld (Sandia)
AI-REBO bond-order potential Ase Henry (MIT)
making LAMMPS a true "object" that can be instantiated multiple times, e.g. as a library Ben FrantzDale (RPI)
pymol_asphere viz tool Mike Brown (Sandia)
NEMD SLLOD integration Pieter in 't Veld (Sandia)
tensile and shear deformations Pieter in 't Veld (Sandia)
GayBerne potential Mike Brown (Sandia)
ellipsoidal particles Mike Brown (Sandia)
colloid potentials Pieter in 't Veld (Sandia)
fix heat Paul Crozier and Ed Webb (Sandia)
neighbor multi and communicate multi Pieter in 't Veld (Sandia)
MATLAB post-processing scripts Arun Subramaniyan (Purdue)
triclinic (non-orthogonal) simulation domains Pieter in 't Veld (Sandia)
thermo_extract tool Vikas Varshney (Wright Patterson AFB)
fix ave/time and fix ave/spatial Pieter in 't Veld (Sandia)
MEAM potential Greg Wagner (Sandia)
optimized pair potentials for lj/cut, charmm/long, eam, morse James Fischer (High Performance Technologies), David Richie and Vincent Natoli (Stone Ridge Technologies)
fix wall/lj126 Mark Stevens (Sandia)
Stillinger-Weber and Tersoff potentials Aidan Thompson and Xiaowang Zhou (Sandia)
region prism Pieter in 't Veld (Sandia)
LJ tail corrections for energy/pressure Paul Crozier (Sandia)
fix momentum and recenter Naveen Michaud-Agrawal (Johns Hopkins U)
multi-letter variable names Naveen Michaud-Agrawal (Johns Hopkins U)
OPLS dihedral potential Mark Stevens (Sandia)
POEMS coupled rigid body integrator Rudranarayan Mukherjee (RPI)
faster pair hybrid potential James Fischer (High Performance Technologies, Inc), Vincent Natoli and David Richie (Stone Ridge Technology)
breakable bond quartic potential Chris Lorenz and Mark Stevens (Sandia)
DCD and XTC dump styles Naveen Michaud-Agrawal (Johns Hopkins U)
grain boundary orientation fix Koenraad Janssens and David Olmsted (Sandia)
lj/smooth pair potential Craig Maloney (UCSB)
radius-of-gyration spring fix Naveen Michaud-Agrawal (Johns Hopkins U) and Paul Crozier (Sandia)
self spring fix Naveen Michaud-Agrawal (Johns Hopkins U)
EAM CoAl and AlCu potentials Kwang-Reoul Lee (KIST, Korea)
cosine/squared angle potential Naveen Michaud-Agrawal (Johns Hopkins U)
helix dihedral potential Naveen Michaud-Agrawal (Johns Hopkins U) and Mark Stevens (Sandia)
Finnis/Sinclair EAM Tim Lau (MIT)
dissipative particle dynamics (DPD) potentials Kurt Smith (U Pitt) and Frank van Swol (Sandia)
TIP4P potential (4-site water) Ahmed Ismail and Amalie Frischknecht (Sandia)
uniaxial strain fix Carsten Svaneborg (Max Planck Institute)
thermodynamics enhanced by fix quantities Aidan Thompson (Sandia)
compressed dump files Erik Luijten (U Illinois)
cylindrical indenter fix Ravi Agrawal (Northwestern U)
electric field fix Christina Payne (Vanderbilt U)
AMBER <-> LAMMPS tool Keir Novik (Univ College London) and Vikas Varshney (U Akron)
CHARMM <-> LAMMPS tool Pieter in 't Veld and Paul Crozier (Sandia)
Morse bond potential Jeff Greathouse (Sandia)
radial distribution functions Paul Crozier & Jeff Greathouse (Sandia)
force tables for long-range Coulombics Paul Crozier (Sandia)
targeted molecular dynamics (TMD) Paul Crozier (Sandia) and Christian Burisch (Bochum University, Germany)
FFT support for SGI SCSL (Altix) Jim Shepherd (Ga Tech)
lmp2cfg and lmp2traj tools Ara Kooser, Jeff Greathouse, Andrey Kalinichev (Sandia)
parallel tempering Mark Sears (Sandia)
embedded atom method (EAM) potential Stephen Foiles (Sandia)
multi-harmonic dihedral potential Mathias Puetz (Sandia)
granular force fields and BC Leo Silbert & Gary Grest (Sandia)
2d Ewald/PPPM Paul Crozier (Sandia)
CHARMM force fields Paul Crozier (Sandia)
msi2lmp tool Steve Lustig (Dupont), Mike Peachey & John Carpenter (Cray)
HTFN energy minimizer Todd Plantenga (Sandia)
class 2 force fields Eric Simon (Cray)
NVT/NPT integrators Mark Stevens (Sandia)
rRESPA Mark Stevens & Paul Crozier (Sandia)
Ewald and PPPM solvers Roy Pollock (LLNL)

Other CRADA partners involved in the design and testing of LAMMPS were