Feature matrix

Molecular

Method

Driver

Open-shell

Gradient

MP2

Validated vs PySCF

RHF

run_rhf

✓ (run_mp2)

UHF

run_uhf

✓ (run_ump2)

RKS

run_rks

UKS

run_uks

ROHF

(roadmap)

Any functional that libxc supports is available through RKS and UKS (over 500, including LDA, GGAs, hybrids, meta-GGAs). HF analytic gradients and DFT analytic gradients are both available for LDA, GGA, and hybrid functionals.

Periodic

Method

Driver

Dim 1

Dim 2

Dim 3

Notes

RHF, molecular limit

run_rhf_periodic_gamma

large unit cell only

RHF, multi-k

run_rhf_periodic

3D bulk Coulomb is cutoff-dependent

RKS, multi-k

run_rks_periodic

pure LDA/GGA validated in molecular limit

Hybrid DFT

run_rks_periodic

wired

wired

not yet benchmarked

ROHF / UHF / UKS periodic

roadmap

⚠ = cutoff-dependent results until the Ewald + Saunders-Dovesi splitting lands in Phase 12e. Molecular-limit tests pass to machine precision in all three dimensions for both HF and DFT.

Ewald summation (Phase 12e, in progress)

See user_guide/ewald.md for the math and API.

Sub-phase

Scope

Status

12e-a

Classical Ewald for the point-charge nuclear lattice sum. CoulombMethod.EWALD_3D on nuclear_repulsion_per_cell.

✅ shipped

12e-b

erfc-screened nuclear attraction compute_nuclear_erfc_lattice (Ewald building block; no SCF dispatch yet).

✅ shipped

12e-c

Reciprocal-space parts of V(g) and ERI Coulomb J, Saunders-Dovesi multipolar splitting, FFTW3 dep. Full EWALD_3D end-to-end.

pending

Literature-Madelung-constant validations (tolerance from the implementation; source uncertainty in parens):

Crystal

M reproduced

Reference

NaCl (rocksalt, ±1 charges)

1.7475645946 to 1e-8

1.7475645946…

CsCl

1.76267477 to 1e-6

1.76267477 (±1e-8)

ZnS (zincblende)

1.63805 to 1e-4

1.63805 (±1e-5)

Simple-cubic jellium

1.4186487 to 1e-6

1.4186487 (Nijboer-De Wette 1957)

Input / output

Capability

API

Notes

High-level “run-a-job” driver

run_job

dispatches to the right SCF driver, writes .out + .molden, runs BFGS if asked

Formatted text log

format_scf_trace, log_scf_trace

banner, iteration trace, energy components (DFT), orbital table, HOMO-LUMO gap

Molden file export

write_molden

RHF / UHF / RKS / UKS; verified by PySCF round-trip

Geometry trajectory

run_job(..., optimize=True)

ASE .traj file, viewable with ase gui

XYZ load

Molecule.from_xyz

picks up charge / multiplicity

POSCAR load / save

read_poscar, write_poscar

VASP 5 format

Basis sets

  • Standard — 90 sets from libint, including STO-nG, 6-31G**, cc-pVXZ, def2-TZVP, ANO-RCC, and the Karlsruhe core-valence family.

  • Solid-state — pob-TZVP, pob-TZVP-rev2, pob-DZVP-rev2 (H–Br) from the Peintinger-Vilela-Oliveira-Bredow family, designed to avoid small-exponent linear dependencies in crystals.

  • CRYSTAL-format parser — imports arbitrary CRYSTAL per-element basis files, converts to libint-compatible .g94.

  • ECP basis sets — parsed but not yet applied; requires libecpint integration.

Crystal / lattice infrastructure

  • spglib integration: Crystal, analyze_symmetry, to_primitive, irreducible_kpoints.

  • POSCAR I/O (VASP 5 format).

  • Monkhorst-Pack k-mesh generation with IBZ reduction.

Validation

Test class

Count

Level

Molecular 1e integrals vs PySCF

24

machine precision

RHF / UHF / RKS / UKS energies vs PySCF

59

machine precision (HF), grid-accuracy (DFT)

MP2 / UMP2 vs PySCF

21

1e-8 Ha

Gradients (HF, DFT) vs finite-difference

17

1e-6 Ha/bohr

Periodic machinery (invariants, molecular limit, Bloch folding)

76

machine precision

Crystal / POSCAR / basis parsing

18

Full suite: ~280 tests, runs in about a minute.