Periodic local MP2
Canonical periodic MP2 scales with the fifth power of system size, which prices it out of the materials it would help most. Electron correlation is short-ranged, though, so most of that work goes into pairs that contribute almost nothing. lpno exploits the locality. It implements pair-natural-orbital and orbital-specific-virtual variants of MP2 (KPNOMP2, kdOSVMP2) with full k-point sampling, as an installable extension to PySCF.
Background
Second-order Møller-Plesset perturbation theory (MP2) is the cheapest wavefunction method that captures electron correlation, including the dispersion forces that hold molecular crystals together. Its correlation energy decomposes exactly into contributions from pairs of occupied orbitals, written as
where label occupied orbitals, label virtual orbitals, is a two-electron repulsion integral in Mulliken notation, and is the energy of orbital . In canonical orbitals the sums run over every pair and every virtual, and the cost grows as the fifth power of system size.
If the occupied orbitals are localized in space instead, the pair energies decay quickly with the distance between orbitals and , so distant pairs can be screened out. The pairs that survive still see the full virtual space, and pair natural orbitals compress it. For each pair one builds an approximate pair density from guess amplitudes and diagonalizes it. The eigenvalue problem reads
where the eigenvectors are the pair natural orbitals (PNOs) of pair and the eigenvalues are their occupation numbers, which measure how strongly each virtual direction participates in correlating that pair. The occupation spectrum decays fast. Keeping only the PNOs with occupation number above a cutoff shrinks the virtual space of each pair to a small pair-specific set while recovering nearly all of . Accuracy is controlled by that single threshold. Loosening it trades accuracy for speed in a controlled way, and tightening it recovers the canonical result.
Method
lpno carries this machinery to periodic systems with full k-point sampling. A calculation starts from a k-point Hartree-Fock reference with density fitting, and the occupied orbitals are localized either with stock PySCF tools or with a periodic Pipek-Mezey scheme. The shipped examples demonstrate both routes. The package implements two compressions. kdOSVMP2 uses orbital-specific virtuals (OSVs), the diagonal-pair special case in which each occupied orbital carries its own compressed virtual set. KPNOMP2 builds the tighter pair-specific PNO spaces, with the OSV construction as an intermediate step.
Localized and truncated orbitals are no longer eigenfunctions of the Fock operator, so the amplitudes come from iterative residual equations instead of a closed-form energy denominator. Those residual equations run through Cython kernels that call BLAS dgemm directly.
Performance
The compression takes localized occupied orbitals and a truncated virtual space for each pair and drops the fifth-power scaling to roughly cubic, about 90% lower cost in practice. The basis-cubic step is the OSV build, and the PNO-space steps scale well below it. In wall time, KPNO-MP2 crosses over canonical k-point DF-MP2 as the k-mesh grows and is more than an order of magnitude faster at the largest meshes tested.
Validation
As the threshold tightens, KPNO-MP2 converges to canonical periodic MP2. The correlation part of a cohesive energy extrapolates to the thermodynamic limit alongside the canonical k-point result, demonstrated on silicon and on ammonia.
Code
lpno is an installable extension to PySCF, built against pyscf 2.13.1 and released under the Apache 2.0 license. It installs with pip install -e . from a clone of the repository. The repository ships runnable examples, including one that goes from a small test cell to a KPNO-MP2 correlation energy in about a second on a laptop. A manuscript on the method is in preparation (Liang, Yang, Ye, and Berkelbach), and closely related local-correlation implementation work is published in J. Chem. Theory Comput. 21, 2918 (2025).