Feature matrix¶
The capability matrix as of v0.11.0 (codename Sun’s Stingray).
For when each feature shipped, see
CHANGELOG.md.
For what’s coming next, see roadmap.md.
Molecular SCF¶
Method |
Driver |
Open-shell |
Gradient |
Hessian (FD) |
Hessian (analytic) |
MP2 |
Validated vs PySCF |
|---|---|---|---|---|---|---|---|
RHF |
|
— |
✓ |
✓ ( |
✓ ( |
✓ ( |
✓ machine precision |
UHF |
|
✓ |
✓ |
✓ |
(roadmap 17c) |
✓ ( |
✓ machine precision |
RKS |
|
— |
✓ |
✓ |
(roadmap 17e) |
— |
✓ grid-accuracy |
UKS |
|
✓ |
✓ |
✓ |
(roadmap 17f) |
— |
✓ grid-accuracy |
ROHF |
— |
— |
— |
— |
— |
— |
(roadmap) |
Any functional libxc supports works through RKS / UKS (500+ functionals including LDA, GGAs, hybrid GGAs, the τ-dependent meta-GGA family (TPSS, TPSSh, M06-L, M06-2X, SCAN, r²SCAN), and the range-separated hybrids ωB97X and ωB97X-D). HF and DFT analytic gradients are available for LDA, GGA, hybrid-GGA, and the τ-dependent meta-GGA family (modulo the f-shell gradient bug on open-shell UHF / UKS). Meta-GGA analytic Hessians and range-separated-hybrid analytic gradients are still queued. Range-separated hybrids run via direct SCF (not yet density-fitting).
Wavefunction methods (vibeqc.solvers, v0.9.0)¶
Non-mean-field electronic-structure methods that do not
conceptually rely on a Hartree-Fock reference. All reachable
through run_job(method=…) and as a standalone
vibeqc.solvers import. See
user_guide/non_hf_solvers.md
and the non_hf_solvers tutorial.
Method |
|
Solver entry point |
Notes |
|---|---|---|---|
Full CI |
|
(dense |
Exact within the (active) orbital space; reference for the approximate solvers. Small active spaces only. |
Selected CI (CIPSI) |
|
|
Iterative perturbative selection; |
DMRG |
|
|
Two-site sweep, MPS wavefunction, bond-dimension schedule. Minimal Python implementation — ≤12 orbitals. |
Variational 2-RDM |
|
|
Augmented-Lagrangian SDP; currently only the |
Transcorrelated CI |
|
|
Similarity-transformed Hamiltonian (Gaussian / Jastrow correlator) fed to selected CI. |
Active-space truncation: pass
active_space=(n_orbitals, n_electrons)torun_jobto restrict any solver to a frozen-core / CAS-style window. The runner builds a truncatedHamiltonianfrom the selected MO block before handing it to the solver. Caveat: the truncation is exact foractive_space=(norb, nelec)(full-space identity) but does not yet add the frozen-coreh1edressing or theE_coreoffset for genuinen_active < norbCAS runs, so absolute energies on real-CAS runs are off by ~E_core. Energy differences at fixedn_activeare still meaningful. Tracked by strict xfail intests/test_solvers_active_space_api.py; seepython/vibeqc/solvers/ACTIVE_SPACE.mdfor the contract.Orbital source is decoupled — the solvers operate on an abstract
Hamiltonianin an orthonormal MO basis;get_hf_orbital_provideris a convenience, not a requirement.Geometry optimisation — wavefunction methods optimise via numerical gradients (
run_job(method="fci", optimize=True)); analytic gradients are roadmap.Parity — He / OH FCI parity tests and DMRG-vs-FCI cross-checks ship in
tests/test_solvers_*.
Density fitting + RIJCOSX (v0.8.0)¶
JKBuilder polymorphic Fock build via three concrete kernels;
see user_guide/density_fitting.md.
Kernel |
Driver flags |
When |
|---|---|---|
|
(default) |
small (≤250 BFs) |
|
|
medium (~250–1000 BFs), hybrid DFT |
|
|
large (>1000 BFs), hybrid DFT |
RIJK gradient: production-ready. The historical ~115 mHa glycine bug closed in v0.8.0; see
user_guide/density_fitting.md.RIJCOSX SCF + analytic gradient: validated to 0.13 mHa vs ORCA 6.1.1 on glycine / def2-TZVP.
default_aux_basis_for(orbital_basis_name, kind="jk"/"ri")helper picks aux basis automatically.
Periodic SCF (native GDF/FFTDF in progress)¶
Method |
Driver |
k-point support |
Notes |
|---|---|---|---|
RHF, Γ-only GDF |
|
Γ, dim=1/2/3 |
native vibe-qc J/K via Gaussian density fitting; no in-process PySCF |
RKS / hybrids, Γ-only GDF |
|
Γ, dim=1/2/3 |
native libxc |
KRHF multi-k GDF |
|
Γ + multi-k, dim=1/2/3 |
native k-dependent GDF; Γ delegates to the Γ-GDF path, any other Monkhorst-Pack mesh runs the full multi-k loop. Also reachable via |
KRKS multi-k GDF |
|
Γ + multi-k, dim=1/2/3 |
native multi-k RKS / hybrid path; PySCF / CRYSTAL are out-of-process references only |
Cell-resolved DF integral blocks |
|
dim=1/2/3 |
native translation-resolved 2c/3c storage and Bloch/Lpq assembly for k-dependent GDF; Γ tensors are recovered by summing blocks |
BIPOLE RHF / UHF / RKS / UKS, Γ-only |
|
Γ |
v0.9.0 CRYSTAL-style BIPOLE Fock build; DIIS-validated on MgO, diamond, silicon. This is the production periodic path today, including open-shell |
RHF / RKS / UHF / UKS Ewald-3D (legacy) |
|
Γ + multi-k |
native debug path; not the CRYSTAL-parity target |
Multi-k UHF / UKS via GDF |
— |
— |
roadmap (paired with the periodic GDF parity chain, in progress) |
ROHF periodic |
— |
— |
roadmap |
Atomic gradients (periodic) |
|
Γ + multi-k |
Phase G1; ships for RHF / UHF / RKS / UKS |
Periodic stress tensor |
|
Γ + multi-k |
Phase G2; available on all periodic backends |
Reference benchmark: ΔE = -6.8e-12 Ha for MgO/sto-3g/Γ RHF vs out-of-process PySCF.pbc.GDF. Multi-k KRHF / KRKS GDF is now native — the multi-k Ewald-gauge fix brings a multi-k mesh to within 0.000 mHa of the Γ-point energy in the molecular limit; there is no in-process PySCF backend.
See user_guide/multi_k_scf.md
for the full multi-k story including the dense-Lpq RAM
ceiling caveat.
Effective core potentials¶
libecpint 1.0.7 vendored. Heavy-element chemistry (d-block, lanthanides, actinides) reachable without all-electron basis.
ECP library |
Family |
Coverage |
|---|---|---|
|
Stuttgart-Köln MDF, 10-electron core |
post-K (rows 4+) |
|
Stuttgart-Köln MDF, 28-electron core |
post-Cd |
|
Stuttgart-Köln MDF, 46-electron core |
post-Hg |
|
Stuttgart-Köln MDF, 60-electron core |
f-block (post-Yb) |
|
Stuttgart-Köln MDF, 78-electron core |
actinides |
|
Hay-Wadt LANL |
post-Na (rows 3+) |
Two recipes: manual ECPCenter (always shipped) and
vq.auto_ecp_centers(mol, basis_name) (basissetdev-
conditional). See user_guide/ecp.md
for the full story including the basissetdev policy gating.
Reference: Pt UHF/LANL2DZ = −118.227 Ha (22 BFs, 125 SCF iters).
SCF convergence aids¶
Aid |
API |
Coverage |
Notes |
|---|---|---|---|
DIIS extrapolation |
|
molecular + periodic Γ + multi-k |
default on, ~10× iter speedup |
EDIIS + EDIIS+DIIS hybrid (v0.8.0) |
|
molecular + C++ direct-truncated periodic + Python Γ-Ewald (RHF/RKS/UHF/UKS) |
flagship for stiff convergence; rollout to Python multi-k Ewald / BIPOLE / GDF in progress |
KDIIS (Kollmar) |
|
molecular + C++ Γ-only periodic + Python Γ-Ewald (RHF/RKS/UHF/UKS) |
orbital-rotation gradient error; ORCA’s strict-convergence default; multi-k path needs per-k MO-basis design |
ADIIS (Augmented Roothaan-Hall) |
|
molecular + C++ direct-truncated periodic + Python Γ-Ewald |
EDIIS sibling, no per-iter energy needed |
Dynamic damping (Zerner-Hehenberger 1979) |
|
molecular + C++ direct-truncated periodic + Python Γ-Ewald (RHF/RKS/UHF/UKS) |
adaptive density mixing α; composes freely with the accelerator family |
Damping (static) |
|
all |
density mixing |
CRYSTAL-style FMIXING |
|
molecular + native periodic direct/GDF |
Fock/KS matrix mixing; |
Saunders-Hillier level shift |
|
molecular + periodic Γ + multi-k |
Phase C1a |
Level-shift warm-up/restart |
|
native Γ-GDF + Γ KRHF/KRKS bridge |
|
Quadratic (“Newton”) SCF |
|
molecular + periodic Γ + multi-k |
Phase C1c — fallback for small-gap systems |
Fermi-Dirac smearing |
|
“metal” |
…) |
|
|
periodic |
default on; jointly optimises lattice cutoffs + Schwarz screening |
XC functionals (v0.8.0 expanded)¶
Resolved through libxc 7.0.0; see
user_guide/functionals.md. Short
aliases the resolver knows:
Alias |
Type |
HF-exchange |
libxc id |
|---|---|---|---|
|
LDA |
0 % |
1 + 7 |
|
GGA |
0 % |
101 + 130 |
|
GGA |
0 % |
106 + 131 |
|
hybrid |
20 % |
475 (was 402; behaviour change at v0.8.0) |
|
hybrid |
20 % |
402 (Gaussian/VWN3 variant; mirrors ORCA |
|
hybrid |
25 % |
406 |
|
hybrid |
20 % |
weighted-sum |
|
range-sep hybrid |
25 % SR |
425 |
Plus everything libxc accepts directly + custom weighted-sum
strings (PW1PW pattern: "0.2*HF + 0.8*GGA_X_PW91, GGA_C_PW91").
B3LYP behaviour change at v0.8.0: b3lyp now resolves to
libxc id 475 (VWN5 — the ORCA / ADF convention) instead of id
402 (VWN-RPA / VWN3 — the libxc default and Gaussian
convention). Energies move ~10–15 mHa per heavy atom. The new
b3lyp/g alias selects the Gaussian-compatible VWN3 variant
(libxc 402), mirroring ORCA’s B3LYP / B3LYP/G keyword pair.
Ewald summation (Phase 12e, mostly shipped)¶
See user_guide/ewald.md for the math
API.
Sub-phase |
Scope |
Status |
|---|---|---|
12e-a |
Classical Ewald nuclear lattice sum ( |
✅ |
12e-b |
erfc-screened nuclear attraction |
✅ |
12e-c-1 |
Gaussian-charge Ewald V(g) via grid integration |
✅ |
12e-c-2 |
erfc-screened ERIs for Ewald short-range J/K |
✅ |
12e-c-3a |
FFTW3 build dep + |
✅ |
12e-c-3b |
|
✅ |
12e-c-3c |
Saunders-Dovesi multipolar splitting |
⏳ in progress |
12e-c-4 |
End-to-end EWALD_3D SCF dispatch (RHF/RKS/UHF/UKS, Γ + multi-k) |
✅ |
Madelung-constant validation:
Crystal |
M reproduced |
Reference |
|---|---|---|
NaCl rocksalt |
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) |
External data fetcher (vqfetch, v0.8.0)¶
Pulls structures + reference data from public databases on demand. Per-record provenance + license preserved.
Subcommand |
Source |
Default license |
|---|---|---|
|
OPTIMADE federation |
per-provider |
|
Materials Project |
CC-BY 4.0 |
|
COD |
CC0 / public domain |
|
(5 round-trip-verified slugs) |
(per primary) |
|
NIST CCCBDB |
US Govt public domain |
See user_guide/external_structures.md
user_guide/reference_data.md. End-to-end planetx round-trip: MgO sto-3g RKS-LDA E = −950.4204308512 Ha (13 SCF iters).
Job queue (vq v0.5.6, v0.8.0)¶
SSH-backed remote job submission co-shipped in
vibe-queue/. Cgroup-v2 enforcement, web dashboard,
pause/resume, multi-venv --branch routing. See
user_guide/queue.md.
Capability |
Since |
|---|---|
Local queue + CLI + daemon + JobSpec v1 + systemd unit |
v0.1.0 |
Cross-machine SSH submit + |
v0.2.0 |
Resource watchdog ( |
v0.3.0 |
Cgroup-v2 enforcement (systemd-run scope), pgid-based daemon recovery |
v0.4.0 |
|
v0.4.1 |
Read-only web dashboard (FastAPI + htmx) |
v0.5.0 |
|
v0.5.1 |
|
v0.5.2 |
CRYSTAL14 + PROPERTIES14 reachable through dispatched jobs |
v0.5.3 |
Parallel CRYSTAL14 (Pcrystal/Pproperties default |
v0.5.4–5 |
Multi-venv routing via |
v0.5.6 |
Properties¶
Property |
API |
Methods |
Notes |
|---|---|---|---|
Mulliken charges |
|
RHF / UHF / RKS / UKS |
atomic populations |
Löwdin charges |
|
all |
symmetric-orth populations |
Mayer bond orders |
|
all |
per-pair indices |
Dipole moment |
|
all |
with optional origin |
Natural orbitals |
|
all |
for post-SCF analysis |
Static polarizability α |
|
RHF (closed-shell) |
via CPHF, Phase 17b-1; UHF/KS roadmap |
Vibrational frequencies (FD) |
|
all |
FD on analytic gradient; trans/rot projection |
Vibrational frequencies (analytic) |
|
RHF |
CPHF + libint deriv_order=2; Phase 17b-3 |
IR intensities |
|
all |
dipole derivatives along normal modes |
Thermochemistry (ZPE / U / H / S / G / Cv) |
|
all |
rigid-rotor + harmonic-oscillator + ideal-gas |
D3(BJ) dispersion |
|
all |
Grimme D3 with Becke-Johnson damping |
D4 dispersion (v0.8.0) |
|
all |
Caldeweyher-Bannwarth-Grimme 2019 |
Cube file output |
|
all |
density / orbital / spin density |
Molden file export |
|
RHF / UHF / RKS / UKS |
verified by PySCF round-trip |
Periodic band structure |
|
periodic SCF |
k-path sampling |
Periodic density of states |
|
periodic SCF |
tetrahedron + Gaussian smearing |
Input / output¶
Capability |
API |
Notes |
|---|---|---|
High-level “run-a-job” driver |
|
dispatches to right SCF driver, writes .out + .molden, runs BFGS if asked |
Formatted SCF log |
|
banner, iteration trace, energy components, orbital table, HOMO-LUMO gap |
Molden export |
|
verified by PySCF round-trip |
Geometry trajectory |
|
ASE .traj file |
XYZ load |
|
picks up charge / multiplicity |
POSCAR load / save |
|
VASP 5 format |
Cube load / save |
|
volumetric data |
BXSF (band structure) |
|
XCrySDen 3D Fermi-surface format |
Basis sets¶
142 standard sets bundled (curated subset of libint 2.13.1’s 450+) — STO-nG, 6-31G**, cc-pVxZ, def2 family, ANO-RCC, Karlsruhe core-valence, JKFIT / RIFIT / CABS aux.
3 custom sets in
python/vibeqc/basis_library/custom/: pob-TZVP, pob-DZVP-rev2, pob-TZVP-rev2 (Bredow-group periodic-tuned).CRYSTAL-format parser — imports arbitrary CRYSTAL per-element basis files; converts to libint-compatible
.g94. Phase 14f adds CRYSTALINPUTECP-block parsing (basissetdev-conditional).ECP basis sets — fully wired through libecpint (see ECP section above).
Future — 87 BSE-fetched sets on
basissetdevbranch (NOT shipping in v0.8.0; on-demand fetcher design queued for the eventual basissetdev merge — seedocs/license.md).
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.
1D / 2D / 3D
PeriodicSystemgeometry.Hexagonal and other skew-cell geometry support; the native EWALD_3D Hartree path uses the analytical AO-pair FT on the full reciprocal metric.
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 / RI-MP2 / SCS-MP2 / SOS-MP2 / B2PLYP vs PySCF |
55 |
1e-9 Ha (MP2 family) / 1e-7 Ha (B2PLYP) |
Gradients (HF, DFT) vs FD / PySCF |
17 |
1e-6 Ha/bohr |
FD Hessian skeleton vs FD-on-gradient |
8 |
1e-4 to 1e-3 |
Analytic RHF Hessian vs PySCF analytic |
8 |
2.5e-9 Ha/bohr², freqs <0.01 cm⁻¹ |
FD Hessian + IR + thermochemistry vs PySCF |
51 |
1e-7 Ha |
CPHF + polarizability vs PySCF FD |
11 |
1e-5 a.u. |
Periodic machinery (invariants, molecular limit, Bloch folding) |
76 |
machine precision |
Periodic SCF convergence aids |
27 |
per-test scoped |
Periodic native GDF/FFTDF parity |
planned |
compare parsed out-of-process CRYSTAL and PySCF outputs |
Multi-k KRHF/KRKS native parity |
planned |
no in-process PySCF backend |
JKBuilder + RIJCOSX vs ORCA 6.1.1 (v0.8.0) |
curated |
RIJCOSX max |Δ| = 0.13 mHa on glycine def2-TZVP |
vqfetch acceptance harness (v0.8.0) |
5 structures + 8 molecules |
round-trip end-to-end |
Crystal / POSCAR / basis parsing |
18 |
— |
Parametrised basis-load + single-atom SCF (basissetdev) |
366 cases / 236 files |
360 pass + 18 xfail (basissetdev branch only) |
Plus the full regression suite at
examples/regression/
(since v0.7.2 Boys’ Crucible) covers the cross-code parity
matrix (vibe-qc vs PySCF vs ORCA) on a curated S22 / X23 /
pob-TZVP test set.
Full pytest suite: ~1800 test functions across ~190 files
covering the molecular, periodic, wavefunction-solver, and
output stacks; runs in ~3–4 minutes on an M-class MacBook
(faster with pytest -n auto).
Known issues¶
See the warning admonition on docs/index.md for
the live open-bugs list. Highlights:
Periodic GDF parity (compcell + multi-k + AFT) is the in-progress flagship (held to PySCF parity as the only gate; not yet closed — see the roadmap). The Γ-only BIPOLE driver is the production periodic path today.
Multi-k dense Lpq RAM ceiling (multi-TB on production systems). Streaming-Lpq tracks with the periodic GDF work.
Si-diamond × 3 + C-diamond / PBE / pob-TZVP ~mHa drift vs PySCF (suspected DIIS-tightness, not algorithmic).
Open-shell UHF / UKS analytic gradient on f-shells with two or more different second-row elements still disagrees with ORCA. Closed-shell direct gradients now auto-route through the DF gradient path; the open-shell auto-route is queued.
AUTO initial guess (SAP on closed-shell light-atom systems) oscillates on long n-alkanes and on H2CO + PBE. Pin
InitialGuess.SADto work around.pob-TZVP/pob-TZVP-rev2missing Ne entry.Heavy-atom basis-load test OOMs a 16 GB laptop in batch mode; route via
vq submitto a larger box.ωB97X / ωB97X-D UKS on orbital-near-degenerate radicals needs a level shift to converge.
3c composite methods are calibrated on molecular systems; the periodic flavours need recalibration before being trusted.
The B3LYP local-correlation convention change (libxc 402 to 475) is documented on the homepage as informational, not a bug.