Van Hove¶
This page is a self-contained, textbook-style introduction to two time-resolved correlation functions: the Van Hove function \(G(r,t)\) — the time-dependent generalization of the radial distribution function — and the Legendre reorientational correlations \(C_1(t)\), \(C_2(t)\) that quantify how fast molecular vectors lose their orientation. Together they bridge the static structure of the structural guide and the transport coefficients of the transport guide: they show how structure decorrelates in time.
Correlation kernels run in the high-performance backend; the MolPy layer unwraps trajectories where needed and returns a typed result.
Conventions used throughout
- Distances in Å; time lags in frames (multiply by the dump interval for ps or fs).
- \(\langle\cdots\rangle\) averages over particles and time origins.
- Self Van Hove needs unwrapped single-particle trajectories.
1. The Van Hove function is \(g(r)\) resolved in time¶
Van Hove (1954) asked: given a particle at the origin at time \(0\), what is the probability density of finding a particle (the same one, or another) at distance \(r\) after time \(t\)? The answer splits into self and distinct parts:
1.1 Self-part \(G_s(r,t)\)¶
\(G_s\) is the distribution of single-particle displacements:
- \(t\to 0\): a sharp peak at \(r=0\) (particles have not moved).
- Ballistic regime: peak shifts as \(\langle r\rangle\sim\langle v\rangle t\).
- Cage regime (dense liquids): probability piles up near the first-neighbour distance while the tagged particle rattles in its cage.
- Diffusive regime: \(G_s\) broadens into a Gaussian whose second moment is the MSD.
Non-Gaussian shapes (shoulders, secondary peaks) flag hopping, dynamic heterogeneity, or jump diffusion — central diagnostics in glass physics.
1.2 Distinct-part \(G_d(r,t)\)¶
At zero lag the distinct part recovers the RDF:
As \(t\) grows, the coordination shells wash out: neighbours leave and are replaced. The time for the first peak of \(G_d\) to decay is a structural relaxation time complementary to density-density correlations in \(k\)-space.
1.3 Moments, MSD, and the non-Gaussian parameter¶
The second moment of the self-part is the mean-squared displacement:
(In 3-D with the radial measure \(4\pi r^2\,\mathrm{d}r\) on the probability density convention used here; implementations store a histogram consistent with their binning.) The non-Gaussian parameter
vanishes for pure Fickian (Gaussian) diffusion and peaks when particles hop between cages — a standard glass-physics diagnostic.
1.4 Intermediate scattering function (connection)¶
Scattering experiments measure the intermediate scattering function
which is the Fourier transform of \(G_s(r,t)\). The same physics appears as a peak broadening in \(G_s\) or as a decay of \(F_s(k,t)\) at the structure-factor peak wavenumber \(k^*\). MolPy’s Van Hove API works in \(r\)-space; use it when real-space shells and hopping shoulders matter.
Figure 1. Schematic self Van Hove \(G_s(r,t)\) at fixed lag: a peak that broadens and shifts outward as \(t\) increases (Fickian limit is Gaussian).
2. Computing the Van Hove function¶
import numpy as np
import molpy as mp
def _frame(step: int) -> mp.Frame:
rng = np.random.default_rng(0)
xyz = rng.uniform(0.0, 20.0, size=(200, 3)) + 0.1 * step
frame = mp.Frame()
frame["atoms"] = {"x": xyz[:, 0], "y": xyz[:, 1], "z": xyz[:, 2]}
frame.box = mp.Box.cubic(20.0)
return frame
frames = [_frame(step) for step in range(20)]
from molpy.compute import VanHove
vh = VanHove(n_rbins=200, r_max=15.0, lags=[1, 5, 10, 50, 100])
result = vh(frames)
result.r_centers # radial grid, Å
result.lags # time lags (frames)
result.g_self # G_s(r, t): rows = lags, columns = radial bins
result.g_distinct # G_d(r, t) when result.has_distinct
Choose lags to straddle the dynamics of interest — short lags for
ballistic/caging, longer ones for the diffusive broadening. Keep
r_max ≤ L/2 for a clean distinct part under periodic boundaries.
3. Reorientation: how fast vectors forget their direction¶
3.1 Legendre correlations¶
For a unit vector \(\mathbf{u}(t)\) rigidly attached to a molecule (bond, dipole, symmetry axis), the Legendre reorientational correlation functions are
Both decay from \(1\) (perfect memory) toward \(0\) (fully randomized orientation). Different experiments probe different \(\ell\):
| Experiment / response | Order |
|---|---|
| Dielectric relaxation, IR | \(C_1\) |
| NMR spin relaxation, fluorescence anisotropy, Raman | \(C_2\) |
3.2 Correlation times¶
Fit the long-time exponential tail (not the librational head):
In the Debye rotational diffusion limit,
Large deviations of \(\tau_1/\tau_2\) from 3 signal jump reorientation (e.g. water’s large-amplitude H-bond exchanges) rather than small-step diffusion.
3.3 Link to spectra and dielectrics¶
- Collective \(C_1\) of the total dipole underlies dielectric spectroscopy.
- Single-molecule \(C_1\)/\(C_2\) set vibrational lineshape envelopes and NMR correlation times — complementary to the velocity-based VDOS / IR route.
4. Computing reorientational correlations¶
import numpy as np
from molpy.compute import LegendreReorientation
# Bond endpoints come from the frame's `bonds` topology block.
for f in frames:
f["bonds"] = {"atomi": np.array([0, 0]), "atomj": np.array([1, 2])}
reor = LegendreReorientation(max_lag=5)
result = reor(frames)
result.lags # lags (frames)
result.c1 # C_1(t)
result.c2 # C_2(t)
5. Pitfalls checklist¶
r_maxbeyond half the box → distinct part corrupted by periodic images.- Lags longer than the trajectory supports → few time origins; noisy tails.
- Reading \(\tau\) from a non-exponential head → fit the long-time tail of \(C_\ell\), not the librational sub-picosecond decay.
- Degenerate vectors → identical head/tail atoms make \(\mathbf{u}\) undefined.
- Wrapped coordinates for \(G_s\) → self-part saturates at the box size; unwrap single-particle trajectories.
- Comparing \(\tau_1\) and \(\tau_2\) → ensure both use the same vector definition and fit window before quoting \(\tau_1/\tau_2\).
6. References¶
- L. Van Hove, Phys. Rev. 95, 249 (1954) — \(G(r,t)\).
- B. J. Berne, R. Pecora, Dynamic Light Scattering, Wiley (1976) — reorientational correlations and the \(C_1\)/\(C_2\) distinction.
- W. Kob, H. C. Andersen, Phys. Rev. E 51, 4626 (1995) — non-Gaussian parameter and dynamical heterogeneity.
- J.-P. Hansen, I. R. McDonald, Theory of Simple Liquids, 4th ed., ch. 7–8.
- M. Brehm, M. Thomas, S. Gehrke, B. Kirchner, J. Chem. Phys. 152, 164105 (2020) — AIMD analysis stack.
See also¶
- Diffusion & Ionic Transport — MSD is the second moment of \(G_s\).
- Structural Analysis — \(G_d(r,0)=\rho\,g(r)\).
- Dielectric — \(C_1\) and collective dipoles.
- Vibrational Spectra — lineshapes and reorientation.
- API reference: Compute.