Literature review — periodic GDF for vibe-qc¶
Authoritative reference for the native-GDF feature work. Commissioned
2026-05-09 from a separate Claude chat (the commissioning brief in
docs/handover_native_gdf_documentation.md was removed in the
2026-05-17 archive sweep — recover via
git show HEAD~:docs/handover_native_gdf_documentation.md if the
lit-sweep prompt is needed verbatim). The results below resolve the
open algorithmic question that blocked slice 3c at the end of the
previous session.
Headline findings (read this if nothing else)¶
PySCF’s default for pure-GDF runs is now RSGDF (Ye & Berkelbach 2021), not the CCDF algorithm of Sun et al. 2017. RSGDF is also strictly easier to implement than CCDF — no compcell, no AO-pair multipoles, no inclusion-exclusion bookkeeping. vibe-qc should implement RSGDF as the canonical periodic-GDF path.
Switch the Lpq fit from Cholesky to eigendecomposition + threshold (Sun 2017 §III.B). Cholesky fails on larger aux bases even with a correct metric; truncating tiny eigenvalues (
linear_dep_threshold = 1e-9) is the principled handling.DOI corrections to apply across the codebase docs:
Sun et al. 2017 (Gaussian and plane-wave mixed density fitting):
10.1063/1.4998644(NOT 1.5005184).Ye & Berkelbach 2021 (RSGDF):
10.1063/5.0046617in JCP 154, 131104 (NOT JCTC 17, 4189).
RSGDF algorithm (the new implementation target)¶
Range-separate the Coulomb kernel itself, not the densities:
SR part: decays as \(\exp(-\omega^2 r^2)\) at large \(r\). The lattice sum \(\sum_T (P_0\,|\,\mathrm{erfc}(\omega \cdot)/|\cdot|\,|\,Q_T)\) converges absolutely with no compensation needed. libint exposes this as
Operator::erfc_coulomb— already used by vibe-qc incompute_nuclear_erfc_lattice(cpp/src/lattice_integrals.cpp:144).LR part: \(\widehat{\mathrm{erf}(\omega r)/r}(G) = (4\pi/G^2) \exp(-G^2/(4\omega^2))\). Decays as \(\exp(-G^2/(4\omega^2))\) in reciprocal space → small G-mesh suffices. Computed analytically via Gaussian Fourier transforms.
Parameter \(\omega\): typical 0.1–0.4 bohr⁻¹. Recommended choice \(\omega \approx \min(0.4, 0.5/r_{\rm cut})\) where \(r_{\rm cut}\) is smallest nearest-neighbour distance (Ye 2021).
G = 0 handling: omitted (charge-neutral assumption); divergent monopole-monopole piece cancels against the nuclear background. For 2D/1D systems the treatment changes — defer to PySCF’s
pyscf/pbc/df/aft.pyfor the truncated-Coulomb low-dim version.
Why RSGDF over CCDF for vibe-qc¶
One unified kernel split applies to both 2c metric AND 3c tensor. No separate compcell construction, no per-AO-pair multipole bookkeeping.
libint operators already exposed (
erfc_coulombavailable).Analytical Gaussian FTs are simple (closed form, no iterative schemes).
Default in PySCF means our parity reference uses the same algorithm.
Reported speedup: ~10× over CCDF for typical 3D solids (Ye 2021, Table II).
Trade-off: one new parameter \(\omega\) to tune; documented heuristic works for typical solids.
CCDF remains a fallback if \(\omega\) choice is awkward (very large lattice constants, low-dimensional systems). vibe-qc should ship RSGDF as the v0.7.4+ default and treat CCDF as a research project.
Final fit¶
After SR + LR assembly:
\(J(\mathbf k) = U \Lambda U^\dagger\), drop modes with \(\lambda <\)
linear_dep_threshold (default \(10^{-9}\) per Sun 2017 Fig. 2; the
choice matters — \(10^{-12}\) reintroduces noise, \(10^{-7}\)
over-truncates), then form
This is the CDERI tensor consumed by the SCF driver.
Validation oracle plan¶
The full lit-sweep §6 lays out three published reference suites beyond PySCF for cross-validation:
System |
Method / basis |
Source |
DOI |
|---|---|---|---|
MgO, NaCl, LiH (rock-salt) |
HF / Gaussian, CRYSTAL |
Doll 2002 |
10.1016/S0010-4655(01)00172-2 |
LiH, LiF, MgO |
HF + MP2 / multiple bases, CRYSCOR |
Usvyat 2007 |
10.1063/1.2768359 |
Diamond, LiF, MgO, BN |
HF + MP2 / cc-pVnZ-solids, PySCF RSGDF |
Ye & Berkelbach 2022 |
10.1021/acs.jctc.1c01245 |
Diamond |
HF, MP2, CCSD / plane-wave, VASP |
Booth 2013 |
10.1038/nature11770 |
Concrete test plan: MgO HF/sto-3g vs PySCF (already have); MgO HF/pob-tzvp vs Doll 2002 + Usvyat 2007 (independent oracles, real basis); LiF HF/cc-pVDZ-solids vs Ye & Berkelbach 2022. If all three agree to \(10^{-4}\) Ha/cell, implementation is validated.
Reference list with corrected DOIs¶
Primary — required for the implementation¶
Sun et al. 2017 (CCDF + MDF). J. Chem. Phys. 147, 164119. DOI: 10.1063/1.4998644. §II.A–§II.C derive the SR/LR split, compensating-charge construction, recovery formulas. §III.B + Fig. 2: linear-dependence calibration.
Ye & Berkelbach 2021 (RSGDF). J. Chem. Phys. 154, 131104. DOI: 10.1063/5.0046617. The actual implementation target. Read first.
Ye, Berkelbach et al. 2021 (screening estimators companion). J. Chem. Phys. 155, 124106. DOI: 10.1063/5.0064151. Tight distance-dependent estimators for SR integrals — read second.
Ye, Berkelbach et al. 2023 (PySCF production defaults). arXiv:2302.11307. Documents
cell.precision-based threshold selection and k-point screening choices that the journal papers don’t cover.
Foundational — cite in code comments / docs¶
Whitten 1973 (original Coulomb-metric DF). J. Chem. Phys. 58, 4496. DOI: 10.1063/1.1679103.
Dunlap, Connolly, Sabin 1979 (variational DF formulation; quadratic error property). Int. J. Quantum Chem. 16, 81. DOI: 10.1002/qua.560160202.
Eichkorn, Treutler, Öhm, Häser, Ahlrichs 1995 (modern atom-centred RI-J). Chem. Phys. Lett. 240, 283. DOI: 10.1016/0009-2614(95)00621-A.
Weigend 2008 (def2-universal-jkfit; what vibe-qc bundles). J. Comput. Chem. 29, 167. DOI: 10.1002/jcc.20702.
Foundational — periodic Coulomb structure¶
Saunders, Freyria-Fava, Dovesi, Salasco, Roetti 1992 (multipole decomposition + lattice-sum convergence). Mol. Phys. 77, 629. DOI: 10.1080/00268979200102671.
Harris 1975 (zero-monopole decomposition for Gaussians). Chapter in Theoretical Chemistry: Advances and Perspectives vol. 1 (Academic Press). Hard to fetch online.
Ewald 1921 (the original lattice-sum split). Ann. Phys. 369, 253. DOI: 10.1002/andp.19213690304. In German; modern restatement in Allen & Tildesley App. F.
Alternative algorithms (for context)¶
VandeVondele et al. 2005 (GPW; CP2K’s Quickstep). Comput. Phys. Commun. 167, 103. DOI: 10.1016/j.cpc.2004.12.014. Plane-wave-grid Coulomb instead of Gaussian aux. Different paradigm.
Burow, Sierka, Mohamed 2009 (Turbomole CFMM periodic). J. Chem. Phys. 131, 214101. DOI: 10.1063/1.3267858. Continuous fast-multipole on Gaussian aux. Reference for the third independent algorithm.
Aux basis design (pob-aux follow-up)¶
Stoychev, Auer, Neese 2017 (AutoAux). J. Chem. Theory Comput. 13, 554. DOI: 10.1021/acs.jctc.6b01041. Generates aux from any orbital basis automatically.
Lehtola 2021 (AutoAux contraction via SVD). J. Chem. Theory Comput. 17, 6886. DOI: 10.1021/acs.jctc.1c00607. Reduces AutoAux output size while preserving accuracy.
Hellweg, Rappoport 2015 (def2 aux design philosophy). Phys. Chem. Chem. Phys. 17, 1010. DOI: 10.1039/c4cp04286g.
Ye & Berkelbach 2022 (cc-pVnZ-style solids bases + matched aux, pseudopotential). J. Chem. Theory Comput. 18, 1595. DOI: 10.1021/acs.jctc.1c01245.
Peintinger, Vilela Oliveira, Bredow 2013 (pob-tzvp orbital basis). J. Comput. Chem. 34, 451. DOI: 10.1002/jcc.23153. No matching pob-aux exists; AutoAux + linear-dependence pruning is the recommended path for v0.7.x+. Hand-tuning a pob-aux remains paper-worthy follow-up.
Validation oracles (HF energies on solids)¶
See “Validation oracle plan” table above for DOIs. Doll 2002, Usvyat 2007, Ye & Berkelbach 2022, Booth 2013.
Loose ends — where the literature defers to source code¶
Exact
drop_eta/linear_dep_thresholddefaults: PySCF computes fromcell.precisionrather than the values in the paper. Readpyscf/pbc/df/df.py:make_modrho_basisfor current defaults.2D/1D treatment of the \(G=0\) Coulomb pole: see Sundararaman & Arias PRB 87, 165122 (2013), DOI: 10.1103/PhysRevB.87.165122.
k-point-dependent screening cutoffs: not in the journal papers; see arXiv:2302.11307.