\(\renewcommand{\AA}{\text{Å}}\)

1.3. LAMMPS features

LAMMPS is a classical molecular dynamics (MD) code with these general classes of functionality:

  1. General features

  2. Particle and model types

  3. Interatomic potentials (force fields)

  4. Atom creation

  5. Ensembles, constraints, and boundary conditions

  6. Integrators

  7. Diagnostics

  8. Output

  9. Multi-replica models

  10. Pre- and post-processing

  11. Specialized features (beyond MD itself)


1.3.1. General features

  • runs on a single processor or in parallel

  • distributed memory message-passing parallelism (MPI)

  • shared memory multi-threading parallelism (OpenMP)

  • spatial decomposition of simulation domain for MPI parallelism

  • particle decomposition inside spatial decomposition for OpenMP and GPU parallelism

  • GPLv2 licensed open-source distribution

  • highly portable C++-11

  • modular code with most functionality in optional packages

  • only depends on MPI library for basic parallel functionality, MPI stub for serial compilation

  • other libraries are optional and only required for specific packages

  • GPU (CUDA, OpenCL, HIP, SYCL), Intel Xeon Phi, and OpenMP support for many code features

  • easy to extend with new features and functionality

  • runs from an input script

  • syntax for defining and using variables and formulas

  • syntax for looping over runs and breaking out of loops

  • run one or multiple simulations simultaneously (in parallel) from one script

  • build as library, invoke LAMMPS through library interface (from C, C++, Fortran) or provided Python wrapper or SWIG based wrappers

  • couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both, MDI coupling interface

  • call out to Python for computing forces, time integration, or other tasks

  • plugin interface for loading external features at runtime

  • large integrated collection of tests

1.3.2. Particle and model types

(See atom style command)

  • atoms

  • coarse-grained particles (e.g. bead-spring polymers)

  • united-atom polymers or organic molecules

  • all-atom polymers, organic molecules, proteins, DNA

  • metals

  • metal oxides

  • granular materials

  • coarse-grained mesoscale models

  • finite-size spherical and ellipsoidal particles

  • finite-size line segment (2d) and triangle (3d) particles

  • finite-size rounded polygons (2d) and polyhedra (3d) particles

  • point dipole particles

  • particles with magnetic spin

  • rigid collections of n particles

  • hybrid combinations of these

1.3.3. Interatomic potentials (force fields)

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

  • pairwise potentials: Lennard-Jones, Buckingham, Morse, Born-Mayer-Huggins, Yukawa, soft, Class II (COMPASS), hydrogen bond, harmonic, gaussian, tabulated, scripted

  • charged pairwise potentials: Coulombic, point-dipole

  • many-body potentials: EAM, Finnis/Sinclair, MEAM, MEAM+SW, EIM, EDIP, ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB, Streitz-Mintmire, 3-body polymorphic, BOP, Vashishta

  • machine learning potentials: ACE, AGNI, GAP, Behler-Parrinello (N2P2), POD, RANN

  • interfaces to ML potentials distributed by external groups: ANI, ChIMES, DeepPot, HIPNN, MTP

  • long-range interactions for charge, point-dipoles, and LJ dispersion: Ewald, Wolf, PPPM (similar to particle-mesh Ewald), MSM, ScaFaCoS

  • polarization models: QEq, core/shell model, Drude dipole model

  • charge equilibration (QEq via dynamic, point, shielded, Slater methods)

  • coarse-grained potentials: DPD, GayBerne, REsquared, colloidal, DLVO, oxDNA / oxRNA, SPICA

  • mesoscopic potentials: granular, Peridynamics, SPH, mesoscopic tubular potential (MESONT)

  • semi-empirical potentials: multi-ion generalized pseudopotential theory (MGPT), second moment tight binding + QEq (SMTB-Q)

  • electron force field (eFF, AWPMD)

  • bond potentials: harmonic, FENE, Morse, nonlinear, Class II (COMPASS), quartic (breakable), tabulated, scripted

  • angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, Class II (COMPASS), tabulated, scripted

  • dihedral potentials: harmonic, CHARMM, multi-harmonic, helix, Class II (COMPASS), OPLS, tabulated, scripted

  • improper potentials: harmonic, cvff, umbrella, Class II (COMPASS), tabulated

  • polymer potentials: all-atom, united-atom, bead-spring, breakable

  • water potentials: TIP3P, TIP4P, SPC, SPC/E and variants

  • interlayer potentials for graphene and analogues, hetero-junctions

  • metal-organic framework potentials (QuickFF, MO-FF)

  • implicit solvent potentials: hydrodynamic lubrication, Debye

  • force-field compatibility with CHARMM, AMBER, DREIDING, OPLS, GROMACS, Class II (COMPASS), UFF, ClayFF, DREIDING, AMOEBA, INTERFACE

  • access to the OpenKIM Repository of potentials via the kim command

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

  • overlaid potentials: superposition of multiple pair potentials (including many-body) with optional scale factor

1.3.4. Atom creation

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

  • read in atom coordinates from files

  • create atoms on one or more lattices (e.g. grain boundaries)

  • delete geometric or logical groups of atoms (e.g. voids)

  • replicate existing atoms multiple times

  • displace atoms

1.3.5. Ensembles, constraints, and boundary conditions

(See fix command)

  • 2d or 3d systems

  • orthogonal or non-orthogonal (triclinic symmetry) simulation domains

  • constant NVE, NVT, NPT, NPH, Parrinello/Rahman integrators

  • thermostatting options for groups and geometric regions of atoms

  • pressure control via Nose/Hoover or Berendsen barostatting in 1 to 3 dimensions

  • simulation box deformation (tensile and shear)

  • harmonic (umbrella) constraint forces

  • rigid body constraints

  • SHAKE / RATTLE bond and angle constraints

  • motion constraints to manifold surfaces

  • Monte Carlo bond breaking, formation, swapping, template based reaction modeling

  • atom/molecule insertion and deletion

  • walls of various kinds, static and moving

  • non-equilibrium molecular dynamics (NEMD)

  • variety of additional boundary conditions and constraints

1.3.6. Integrators

(See run, run_style, minimize commands)

  • velocity-Verlet integrator

  • Brownian dynamics

  • rigid body integration

  • energy minimization via conjugate gradient, steepest descent relaxation, or damped dynamics (FIRE, Quickmin)

  • rRESPA hierarchical timestepping

  • fixed or adaptive time step

  • rerun command for post-processing of dump files

1.3.7. Diagnostics

  • see various flavors of the fix and compute commands

  • introspection command for system, simulation, and compile time settings and configurations

1.3.8. Output

(dump, restart commands)

  • log file of thermodynamic info

  • text dump files of atom coordinates, velocities, other per-atom quantities

  • dump output on fixed and variable intervals, based timestep or simulated time

  • binary restart files

  • parallel I/O of dump and restart files

  • per-atom quantities (energy, stress, centro-symmetry parameter, CNA, etc.)

  • user-defined system-wide (log file) or per-atom (dump file) calculations

  • custom partitioning (chunks) for binning, and static or dynamic grouping of atoms for analysis

  • spatial, time, and per-chunk averaging of per-atom quantities

  • time averaging and histogramming of system-wide quantities

  • atom snapshots in native, XYZ, XTC, DCD, CFG, NetCDF, HDF5, ADIOS2, YAML formats

  • on-the-fly compression of output and decompression of read in files

1.3.9. Multi-replica models

1.3.10. Pre- and post-processing

  • A handful of pre- and post-processing tools are packaged with LAMMPS, some of which can convert input and output files to/from formats used by other codes; see the Tools page.

  • Our group has also written and released a separate toolkit called Pizza.py which 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.

1.3.11. Specialized features

LAMMPS can be built with optional packages which implement a variety of additional capabilities. See the Optional Packages page for details.

These are LAMMPS capabilities which you may not think of as typical classical MD options: