# 1.3. LAMMPS features¶

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

## 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 of 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 or provided Python wrapper or SWIG based wrappers

couple with other codes: LAMMPS calls other code, other code calls LAMMPS, umbrella code calls both

## 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

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 2 (COMPASS), hydrogen bond, tabulated

charged pairwise potentials: Coulombic, point-dipole

many-body potentials: EAM, Finnis/Sinclair EAM, modified EAM (MEAM), embedded ion method (EIM), EDIP, ADP, Stillinger-Weber, Tersoff, REBO, AIREBO, ReaxFF, COMB, Streitz-Mintmire, 3-body polymorphic, BOP, Vashishta

machine learning potentials: SNAP, GAP, ACE, N2P2, RANN, AGNI

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

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

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), density functional tight-binding (LATTE)

electron force field (eFF, AWPMD)

bond potentials: harmonic, FENE, Morse, nonlinear, class 2, quartic (breakable), tabulated

angle potentials: harmonic, CHARMM, cosine, cosine/squared, cosine/periodic, class 2 (COMPASS), tabulated

dihedral potentials: harmonic, CHARMM, multi-harmonic, helix, class 2 (COMPASS), OPLS, tabulated

improper potentials: harmonic, cvff, umbrella, class 2 (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

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

implicit solvent potentials: hydrodynamic lubrication, Debye

force-field compatibility with common CHARMM, AMBER, DREIDING, OPLS, GROMACS, COMPASS options

access to the OpenKIM Repository of potentials via 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 coords 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 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 or steepest descent relaxation

rRESPA hierarchical timestepping

rerun command for post-processing of dump files

## 1.3.7. Diagnostics¶

## 1.3.8. Output¶

log file of thermodynamic info

text dump files of atom coords, velocities, other per-atom quantities

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 formats

## 1.3.9. Multi-replica models¶

path-integral MD: first variant <fix_pimd>, second variant <fix_ipi>

## 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:

static and dynamic load-balancing, optional with recursive bisectioning decomposition

real-time visualization and interactive MD, built-in renderer for images and movies

calculate virtual diffraction patterns

calculate finite temperature phonon dispersion and the dynamical matrix of minimized structures

atom-to-continuum coupling with finite elements

coupled rigid body integration via the POEMS library

Monte Carlo via GCMC and tfMC and atom swapping

Direct Simulation Monte Carlo for low-density fluids