Basis sets for AICCM¶
Both CCM lines select their orbital and auxiliary bases through the same vibe-qc basis-set machinery, but which basis you need depends on the backend, the system, and the reference you are targeting.
Orbital basis¶
The orbital basis labels are the same as everywhere else in vibe-qc:
built-in names (sto-3g, 6-31g*, cc-pvdz) or pob-* solid-state
bases (pob-tzvp-rev2, pob-dzvp-rev2).
basis |
purpose |
Δ vs CRYSTAL |
|---|---|---|
|
Cross-check. Cheap, well-conditioned, works for every element H–Kr. The default for the AICCM-2026 benchmark so that Γ-CCM, χ-CCM, bipole, and GDF all run on the same basis. |
large (minimal basis), not for production |
|
Production comparison. The solid-state triple-zeta basis used in the CRYSTAL23 |
~mHa/atom for insulators |
|
Lighter solid-state double-zeta; faster SCF convergence than TZVP. |
larger than TZVP, smaller than STO-3G |
|
Molecular basis; usable for 1-D chains and vacuum-padded slabs. |
N/A for bulk |
Note
The Γ-CCM test set uses sto-3g by default for the four-center routes
and pob-tzvp-rev2 for the periodic reference routes (via
--crystal-basis). The χ-CCM test set uses sto-3g and specifies the
auxiliary basis explicitly.
Specifying the orbital basis¶
Γ-CCM test-set runner:
python run_case.py c-diamond aiccm-hf --basis pob-tzvp-rev2
python run_case.py mgo gdf --basis pob-tzvp-rev2 # CRYSTAL23 comparison
χ-CCM test-set runner:
python run_case_b.py mgo rhf-ri --basis pob-tzvp-rev2
Python API:
# Γ-CCM
ccm = CCMSystem(system, (2, 2, 2), "pob-tzvp-rev2")
# χ-CCM
basis = vq.BasisSet(system.unit_cell_molecule(), "pob-tzvp-rev2")
Auxiliary basis (RI / density fitting)¶
The auxiliary basis is only needed for RI, RIJCOSX, and GDF routes. The four-center backends need no auxiliary basis.
Γ-CCM¶
route |
auxiliary basis |
how it is chosen |
|---|---|---|
|
none |
four-center, direct |
|
implicit (GDF auto-builds the auxiliary from the orbital basis) |
no user control — the GDF driver constructs the JK-fit basis |
|
implicit (RI-J uses GDF; COSX-K uses a grid, no auxiliary) |
same as above |
|
you supply the plane-wave cutoff |
|
The GDF container auto-selects the auxiliary basis for each element. For the neutral cderi the PW cutoff controls accuracy — the default 120 Ha is converged for STO-3G; for pob-TZVP use 200–300 Ha.
χ-CCM¶
backend |
auxiliary basis |
flag |
|---|---|---|
|
none |
— |
|
|
|
|
same RI-J auxiliary + COSX grid |
|
# χ-CCM — explicitly set the auxiliary basis
python run_case_b.py mgo rhf-ri --aux-basis def2-svp-jk
python run_case_b.py mgo rhf-ri --aux-basis def2-tzvp-jk
The χ-CCM fleet runner (make_jobs_b.py) hardcodes --aux-basis def2-svp-jk on every emitted command — the fastest JK-fit basis that
still gives ∼sub-mHa accuracy.
In the Python API:
result = vq.run_periodic_job(
system, basis,
method="RHF", jk_method="aiccm2026dev-b",
aiccm_backend="ri",
aux_basis="def2-tzvp-jk",
...
)
GDF settings (χ-CCM)¶
χ-CCM’s RI/GDF route uses the range-separated GDF (RSGDF) method with a plane-wave cutoff:
python run_case_b.py mgo rhf-ri --gdf-method rsgdf --rsgdf-ke-cutoff 200
The default is rsgdf with ke_cutoff=200 Ha in the fleet runner.
Higher cutoff = more accurate RI fit, more expensive.
Basis-set caveats¶
Cs has no STO-3G. The cscl test-set system defaults to
pob-tzvp-rev2 for this reason. The element coverage of STO-3G stops at
Kr (Z=36); Cs (Z=55) and heavier elements need a pob-* or other
compiled basis.
pob- and linear dependence.* The pob-* bases are designed to avoid linear dependence in crystals (they omit the most diffuse functions). They are the recommended choice for solid-state work. Molecular bases (cc-pVZ, 6-31G) can become linearly dependent in tight crystals — vibe-qc’s linear-dependence removal will catch this, but the removed functions reduce variational freedom.
Basis-set superposition error (BSSE). STO-3G has large BSSE; do not use it for binding energies or adsorption energies. The TZVP bases reduce BSSE to chemically acceptable levels (~1–2 kcal/mol).
See also¶
Basis sets — the general vibe-qc basis set guide
pob-TZVP tutorial — using solid-state bases
Basis convergence tutorial — general basis-set convergence workflow