⚗️ Molecular Dynamics · Statistical Physics
📅 March 2026⏱ ~10 min read🟡 Intermediate

Lennard-Jones Potential — The Foundation of Molecular Dynamics

Two atoms passing through space experience a force that is weakly attractive at long range (van der Waals dispersion) and violently repulsive at short range (Pauli exclusion). The Lennard-Jones 12-6 potential captures both with two parameters — and it underlies almost every molecular dynamics simulation of liquids, gases, and materials.

1. The 12-6 Formula

The Lennard-Jones (LJ) potential between two atoms separated by distance r:

Lennard-Jones 12-6 potential V_LJ(r) = 4ε [ (σ/r)¹² − (σ/r)⁶ ]

ε (epsilon) = depth of the potential well [energy units]
σ (sigma) = distance at which V = 0 [length units]

Alternative form (using r_min = 2^(1/6)·σ):
V_LJ(r) = ε [ (r_min/r)¹² − 2(r_min/r)⁶ ]

The (σ/r)¹² term is repulsive (always positive); the −(σ/r)⁶ term is attractive. Together they produce a potential well with a minimum at r = 2^(1/6)·σ.

2. Physical Basis

Attractive term — r⁻⁶

The r⁻⁶ dependence comes from London dispersion forces (induced dipole-induced dipole), derived by Fritz London in 1930 via quantum perturbation theory. Even non-polar atoms like argon experience these forces because instantaneous quantum fluctuations in electron density create temporary dipoles that induce dipoles in neighbours. The interaction scales as α² (polarisability squared) and decays as r⁻⁶.

Repulsive term — r⁻¹²

The true repulsion from Pauli exclusion (electron cloud overlap) decays approximately exponentially (Buckingham potential: A·e^(−Br)). The r⁻¹² is a convenient mathematical approximation — it has no deep physical justification at this precise power, but it is computationally advantageous because (σ/r)¹² = [(σ/r)⁶]², requiring only one extra multiplication over the r⁻⁶ term already computed.

3. Equilibrium Distance and Well Depth

Minimum of LJ potential dV/dr = 0 → r_eq = 2^(1/6)·σ ≈ 1.122·σ
V(r_eq) = −ε (minimum = −ε)

Meaning of parameters:
σ = effective diameter of atom (V = 0 crossing)
ε = bond energy (depth of well, energy to separate bonded atoms)
Atom/Molecule ε/k_B (K) σ (Å)
Argon (Ar) 119.8 3.405
Neon (Ne) 35.6 2.749
Krypton (Kr) 171.0 3.61
Xenon (Xe) 221.0 4.10
CH₄ (methane) 148.2 3.817

ε/k_B is reported in Kelvin because ε is frequently compared to the thermal energy k_B·T. For argon, ε/k_B = 119.8 K means the LJ bond energy equals k_B × 119.8 K — argon condenses into a liquid only below this temperature (boiling point ≈ 87 K).

4. Force from the LJ Potential

Force is the negative gradient of potential. In 3D, the force on particle i due to particle j along the vector r_ij:

LJ force between particles F(r) = −dV/dr = 24ε/r · [ 2(σ/r)¹² − (σ/r)⁶ ]

In vector form (r⃗_ij = r⃗_i − r⃗_j):
F⃗_ij = 24ε/r² · [2(σ/r)¹² − (σ/r)⁶] · r⃗_ij

The force is zero at r = r_eq (equilibrium), repulsive at r < r_eq, and attractive at r > r_eq, becoming negligible for r > ~3σ.

5. Reduced Units

Molecular dynamics simulations conventionally use reduced (dimensionless) LJ units to eliminate ε, σ, and m from the equations. All quantities are expressed as multiples of the LJ parameters:

LJ reduced units r* = r / σ (length)
E* = E / ε (energy)
T* = k_B·T / ε (temperature)
t* = t · (ε/mσ²)^(1/2) (time)
P* = P·σ³ / ε (pressure)
ρ* = ρ·σ³ / m (number density)

In reduced units: V*(r*) = 4[(1/r*)¹² − (1/r*)⁶]

For argon, the time unit τ = σ√(m/ε) ≈ 2.1 ps. A typical MD timestep is 0.002τ ≈ 4 fs. Reduced units also make results transferable: two LJ fluids at the same T* and ρ* have the same structure and dynamics regardless of their σ and ε values (the principle of corresponding states).

6. Cutoff Radius and Tail Corrections

Computing all N(N-1)/2 pair interactions is O(N²). In practice the LJ potential is truncated at a cutoff radius r_c (typically 2.5σ), where V(r_c) ≈ −0.016ε << room temperature thermal energy:

// LJ with cutoff — fast inner loop
const rc = 2.5 * sigma;  // cutoff
const rc2inv = 1 / (rc * rc);
const Vc = 4 * eps * (Math.pow(rc2inv, 6) - Math.pow(rc2inv, 3));

function ljEnergy(r2) {  // r2 = r², avoids sqrt
  if (r2 > rc * rc) return 0;
  const r2inv = 1 / r2;
  const r6inv = r2inv * r2inv * r2inv;
  return 4 * eps * r6inv * (r6inv - 1) - Vc;  // shifted cutoff
}

function ljForce(r2) {  // returns |F|/r (multiply by r_ij vector)
  if (r2 > rc * rc) return 0;
  const r2inv = 1 / r2;
  const r6inv = r2inv * r2inv * r2inv;
  return 48 * eps * r2inv * r6inv * (r6inv - 0.5);
}

The shifted cutoff (subtracting V(r_c)) ensures the potential goes smoothly to zero at the cutoff without a discontinuous jump in energy — essential for conserving total energy in NVE simulations.

7. Implementation Notes

Validation: The LJ fluid has well-known properties from Michels (1931) through Johnson (1993). At T* = 0.72, ρ* = 0.844 the LJ fluid is a close-packed liquid near its triple point. Use these benchmarks to verify your implementation before exploring new parameter space.

8. Beyond LJ — Other Potentials

For simulating noble gases (argon, neon, krypton), LJ remains the gold standard — simple and accurate. For polar liquids (water), at minimum a partial-charge Coulomb term must be added (TIP3P, SPC/E). LJ is the foundation everything else builds on.