An adsorption isotherm gives the uptake q of a gas or solute on a surface as the relative pressure P (0 to 1) rises at constant temperature. Three classic models are overlaid:
Langmuir: q = qmax * K * P / (1 + K * P)
Freundlich: q = Kf * P^(1/n)
BET: q = qm * C * P / [(1-P) * (1 - P + C*P)]
- Langmuir: identical, independent sites, one molecule each; K = kads/kdes. Plateau at qmax.
- Freundlich: empirical power law for heterogeneous surfaces; no plateau.
- BET: molecules also stack on top of the first layer; the curve diverges as P approaches 1 (condensation).
The surface picture is a real kinetic Monte Carlo, not a lookup. Each cell is an adsorption site that randomly captures and releases molecules. Langmuir: identical sites, so coverage settles at KP/(1+KP). Freundlich: every site gets its own affinity Ki drawn from a heavy-tailed (Pareto) distribution, so the sum of many Langmuir sites reproduces a power law whose exponent is 1/n. BET: each cell is a column; the first molecule is held strongly (leaves at k/C), later ones like liquid (leave at k), which is exactly the chain that gives the BET formula. "Occupied" and "layers" in the readout are counted from the molecules on screen; "theory" is the exact equilibrium of the same model, so the small difference is statistical noise plus a short lag behind the moving pressure.
Simplifications: no lateral interactions between molecules, one temperature, sweep slow enough for near-equilibrium; BET is stopped at P = 0.8 because near P = 1 the multilayer needs very long to equilibrate (the curve itself runs to 1, and the 0.985 cap in the plot avoids the singularity). The Freundlich prefactor Kf is empirical, so the lattice reproduces the exponent 1/n, not Kf. Molecule and surface sprites were rendered in Blender.