AICCM: the ab initio cyclic cluster model (experimental)¶
Warning
Experimental. Every AICCM variant is a research method: the drivers emit
vibeqc.AICCM2026DevAExperimentalWarning (Gamma-CCM producers) or
vibeqc.AICCM2026DevBExperimentalWarning (chi-CCM), the .system manifest
records [run].method_status = "experimental" for every AICCM job, the test
files stay in the manual research lanes, and the experimental catalog rows
stay. “Standard” means the method is reached, configured, recorded and cited
like every other vibe-qc method, not that it stops being experimental.
Selecting it¶
One front door selects every formulation; variant names the formulation
and is mandatory:
import vibeqc as vq
res = vq.run_periodic_job(
system, basis,
method="aiccm",
variant="real-gamma", # real-gamma | chi | neutral-bloch | four-center
functional=None, # None -> Hartree-Fock, a functional name -> Kohn-Sham
scf_reference=None, # None -> inferred; "rhf" | "uhf" | "rohf" | "roks" explicit
aiccm_lattice_extension=(2, 2, 2), # the Born-von Karman torus, every variant
correlation=None, # None -> SCF only; mp2 | ccsd | dlpno-*
output="lih-aiccm",
)
Omitting variant with method="aiccm" fails closed listing the four
values. jk_method stays "auto" (the default) or equals the variant’s own
underlying route; anything else raises ValueError naming both. Passing
variant=, scf_reference= or correlation= with any other method is
also refused rather than ignored.
The variants¶
|
what it runs |
Hamiltonian |
code path |
status today |
|---|---|---|---|---|
|
the neutral Gamma-CCM construction in its k-free real-Gamma supercell representation |
neutral finite torus |
|
RHF, RKS, UHF, UKS; dim 3 only; |
|
chi-CCM, the finite-translation-group character construction on a Gamma-centred character mesh |
neutral, chi-defined |
|
RHF, RKS, UHF, UKS; classic physical-pair RI ROHF; dim 3 only; |
|
the same neutral construction as |
neutral finite torus |
|
RHF, RKS, UHF, UKS; dim 3 only; the Gamma-centred mesh IS the torus; no gradients, no DFT+U, no restart |
|
the union-and-weight / Wigner-Seitz four-centre lineage (2014 AICCM, symmetrised) |
bare 1/r on the torus |
|
RHF, RKS, UHF, UKS; dim 3 only; HF on the scalable builder; no gradients, DFT+U or mixing controls |
real-gamma and neutral-bloch are one Hamiltonian in two representations
(Theorem 1 of the Gamma-CCM paper). Through the front door the two agree to
about 1e-13 Ha per cell on H2/STO-3G at torus sizes (1,1,1), (2,1,1) and
(2,2,1); the regression pin sits at 1e-9, and the library pair has its own
1e-8 pin. four-center and chi are distinct constructions from
it and from each other: a difference between variants is a construction
difference, never a convergence or representation artefact (D74, D89, D90
in the decisions log). There is no
variant="gamma": the bare spellings gamma, gamma-ccm, gamma_ccm fail
closed on the runner exactly as on the library (ruling R1, 2026-08-21,
D124), because one word cannot choose between the two neutral producers and
must never silently select the four-centre lineage.
External full-grid XC providers¶
The experimental SKALA full-grid provider is available for 3-D, all-electron,
zero-temperature RKS and UKS with variant="real-gamma" or
variant="four-center". Pure full-grid providers are also available with
variant="chi" when aiccm_backend="four_center"; the chi RI and RIJCOSX
backends remain gated.
variant="neutral-bloch" deliberately rejects external providers: the
provider’s atom-block periodic partition has not yet been proved invariant
under the real-Gamma/Bloch representation transform. This refusal is enforced
both by the front door and by the low-level neutral Bloch RKS/UKS producers.
See Microsoft SKALA-1.1 neural XC for the complete provider
contract and remaining limitations.
Correlation¶
correlation= adds a post-HF treatment on top of the variant’s SCF. It is
optional – None, the default, means an SCF-only run, which is the
ordinary complete request – and it is orthogonal to variant: the
reference stays whatever the variant and the inference below chose.
res = vq.run_periodic_job(
system, basis,
method="aiccm", variant="four-center", correlation="mp2",
aiccm_lattice_extension=(2, 1, 1),
output="h2-aiccm-mp2",
)
Today the vocabulary is "mp2", "ccsd", "dlpno-mp2" and "dlpno-ccsd",
wired on variant="four-center" (the first two), variant="real-gamma" and
variant="neutral-bloch". The driver is chosen to
match the construction the SCF ran, never to substitute another one, so
each arm cites its own lineage:
|
|
construction |
citation route |
|---|---|---|---|
|
|
union-and-weight |
|
|
|
union-and-weight |
|
|
|
neutral fitted torus |
|
|
|
neutral fitted torus |
|
|
|
neutral fitted torus |
|
|
|
neutral fitted torus |
|
|
|
neutral fitted torus |
|
|
|
neutral fitted torus |
|
|
|
neutral fitted torus |
|
|
|
neutral fitted torus |
|
Open-shell clusters take the u siblings of those rows automatically
(aiccm2026dev-a-ri-ump2, -ri-uccsd(t), -dlpno-ump2, -dlpno-uccsd(t)).
"ccsd" is CCSD(T): the perturbative triples run by default, and the
citation key records what the call actually computed – with triples off
at the library level the key loses its (t) and the reference list loses
Raghavachari, because citing a triples paper for a run without triples is the
misattribution per-call stamping exists to prevent. "ccsd" is closed-shell
only on both arms and refuses an open-shell reference: run_ccm_uccsd takes
no method=, so it cannot build the union-and-weight reference, and nothing
stamps a bare four-centre open-shell CCSD route. On real-gamma open-shell
CCSD does run: run_ccm_uccsd being neutral-only is precisely what makes
it right on that reference. "mp2" has an open-shell driver on both arms.
The two dlpno-* treatments are fitted-reference only (real-gamma
and neutral-bloch), and the reason is
structural rather than a gap: DLPNO screens pair energies on a fitted
reference and every driver takes the neutral cderi, while the bare
four-centre operator has no RI decomposition – which is exactly why that arm
is dense and small-cluster only. At the default zero truncations DLPNO is
the canonical RI correlation on the same reference and the same L
(measured: dlpno-mp2 matches mp2 to 1.7e-18 Ha and dlpno-ccsd matches
ccsd exactly on H2/STO-3G), so the truncation thresholds are what buy the
scaling. The citation routes still differ, because a DLPNO run owes the
local-correlation papers a canonical one does not. Both DLPNO treatments work open-shell.
The two never share a citation row: handing a union-and-weight SCF to a
neutral-RI driver would return a different construction’s number (ruling
R1). Both arms consume the SCF the front door already converged rather than
building a second one – on real-gamma the adapter keeps the neutral
cderi the reference rode and hands the correlation that same array, so the
number reported is the correlation of the energy printed beside it, by
identity rather than by two builds agreeing.
variant="neutral-bloch" correlates through Theorem 1 (since 2026-09-25;
it used to refuse). Its reference is the per-k Bloch representation while
the correlation drivers work in the real-Gamma supercell space, and ruling
R1 makes the two the same neutral Hamiltonian: the arm runs the multi-k
SCF with its classic per-pair fit retained, folds overlap, core
Hamiltonian, Fock and density onto the supercell (the inverse finite
Fourier transform of the torus), builds real S-orthonormal canonical
supercell orbitals from every time-reversal pair or self-paired mesh
point, folds the driver’s own fit to the supercell cderi (a rotation,
not a refit) and hands that reference to the same neutral-RI drivers the
real-gamma arm uses. The transform checks itself (fold realness,
orthonormality, Fock diagonality, eigenvalues, density, electron count,
integer occupations) and refuses a reference that fails; the .out
names the representation and the manifest records the residuals
(aiccm_correlation_reference, aiccm_bloch_fold_*, see
output files). One SCF then serves both the Bloch-side
artefacts (DOS, bands) and the correlation, and the eigenproblem is N_c
matrices of size n instead of one of size N_c·n. On the small tori
measured, LiH and MgO at (2,2,2), the two SCFs cost the same, because both
producers now build the same shared-q fit. The identity of the
correlation energies from the two producers is pinned at 1e-9 Ha/cell in
tests/test_ccm_bloch_reference.py; real-gamma stays the independent
validation producer. The same transform serves the library:
vibeqc.periodic.ccm.ccm_reference_from_bloch turns a
run_ccm_{rhf,rks,uhf,uks}_gdf result into the object
run_ccm_rhf_direct returns, every correlated entry point accepts a
Bloch result directly, and the one-call wrappers run_ccm_ri_mp2,
run_ccm_ri_ccsd and run_ccm_dlpno_mp2_direct default to
reference="bloch" (closed-shell unit cells; "direct" and "neutral"
stay selectable). variant="chi" has separate admitted explicit-source
MP2/UMP2,
ROHF RMP2 and RHF/UHF CCSD(T)
routes. Their classic sources support persistent restart;
legacy vibeqc.periodic.chi.posthf entries retain their separate scope.
correlation="mp2" needs a Hartree-Fock reference; with a functional=
set, the inferred reference is RKS or UKS and the request fails closed
naming that. The reported E(corr) / cell and E(SCF+corr) / cell are
per unit cell, and the run cites the bare-lineage route
aiccm2026dev-a-mp2 rather than the SCF’s own row.
The cost is the constraint. The bare drivers form the dense n_ref_ao**4
AO tensor, so this is a small-cluster tool: there is no dimensionality
guard, but the tensor grows as the fourth power of the cluster basis size.
Size a torus for it deliberately.
The SCF reference is inferred¶
method="aiccm" takes the place of the SCF string, so the reference is
derived the way the library’s run_ccm_scf already derives it:
functional=Noneruns Hartree-Fock; a functional name runs Kohn-Sham.The system decides restricted versus unrestricted: a multiplicity of 1 with an even electron count is restricted (RHF or RKS); any other multiplicity, or an odd electron count, is unrestricted (UHF or UKS).
scf_reference="rhf"or"uhf"asks for a Hartree-Fock reference explicitly, on every variant, so both reject afunctional."uhf"is mainly useful on a closed-shell singlet, which the rule above would run as RHF."rhf"on an odd electron count is refused by the closed-shell check rather than changed to UHF. Kohn-Sham references have no explicit spelling:functional=selects them and the system decides restricted versus unrestricted.scf_reference="rohf"or"roks"asks for the restricted open-shell references explicitly ("rohf"rejects afunctional,"roks"requires one). Classic physical-pair RI chi supports ROHF under its shared-orbital contract. Other ROHF/ROKS combinations retain their capability refusals.
The keyword is not called reference: on the library correlation drivers
that name already means the correlation reference ("neutral" versus
"direct"). A UHF reference on a closed-shell singlet is requested with
scf_reference="uhf". That alone does not break the spin symmetry: from a
spin-symmetric initial guess the UHF iterations can stay on the restricted
solution.
The torus¶
Every variant reads aiccm_lattice_extension=(N1, N2, N3) (or an integer
for a cubic extension) as the Born-von Karman torus, and
aiccm_wigner_seitz_shells=s as the odd-extension shorthand 2s+1. The
k-mesh argument kpoints= stays an accepted alias for the torus mesh
(inputs written before the front door keep running), for every variant the
rule is “the real-space control or the legacy k-mesh alias, not both”, and a
shifted mesh is rejected because the mesh defines the torus, not a Bloch
sampling.
The transverse vacuum of a padded cell¶
The two neutral producers refuse a cell declared 3-D whose atom positions leave an empty slab above 25 bohr (and above four times the shortest lattice vector) along a lattice direction, because the 3-D neutral construction then corrects for periodic images that do not exist and the energy becomes a padding artefact (the measured-dimensionality guard, IID 291). Since ruling R6 (2026-09-10) the transverse vacuum of a chain is a parameter whose convergence is tested, so the guard has an explicit opt-in:
run_periodic_job(system, basis, method="aiccm", variant="neutral-bloch",
aiccm_lattice_extension=(4, 1, 1),
aiccm_allow_vacuum_padding=True, output="chain_L40")
With the opt-in the run proceeds, emits an AICCMVacuumPaddingWarning
naming the padded lattice directions, prints allow_vacuum_padding = True
in the .out header, and records aiccm_allow_vacuum_padding = true and
aiccm_vacuum_padded_axes = "[2, 3]" (the 1-based lattice directions that
measured as vacuum) in the .system manifest. The library drivers take the
same switch as allow_vacuum_padding=True and stamp the result with
vacuum_padding_allowed and vacuum_padded_axes. Three things do not
change: the default is off, so an unmarked padded run is still refused; the
keyword is refused on four-center and chi, which carry no such guard, so
it can never be silently ignored; and the second arm of IID 291, the refusal
of a converged positive energy on a neutral cell, stays in force. A
padded-regime energy is reportable only together with the padding it was
computed at, which is why the record carries it.
Convergence keywords¶
Both lines gate the SCF on an energy change and on a gradient norm (the
DIIS commutator residual). Energy-converged is not density-converged, so a
tight conv_tol_energy alone does not give a converged density. The
run_periodic_job keywords map onto the drivers as follows:
|
|
|
|---|---|---|
|
|
|
|
|
|
gradient criterion |
|
|
Direct Python CCM SCF entry points require a finite, strictly positive
conv_tol_grad. They reject an invalid value before selecting an initial
guess or accessing the system; the error names the requested route.
A convergence control that is set explicitly but that the selected variant
cannot execute fails closed before SCF instead of being dropped. The
real-gamma loop implements no damping, Fock mixing, density mixing or
level shift (its executed values are structural zeros, recorded per D86),
so an explicit damping=, fock_mixing=, fmixing_percent=,
density_mixer= or level_shift= on that variant raises;
dynamic_damping= is chi-only, as before. The real-gamma adapter forwards
neither the DIIS controls (use_diis, diis_start_iter,
diis_subspace_size) nor solver; those keep their defaults on that
variant. It forwards initial_guess: HCORE (the AUTO default), a prepared
READ density, and an explicit SAD built on the supercell (see
initial guesses).
Both neutral variants take fit_source="sr", the multi-k driver’s default
SR/LR fit, which needs no RSGDF tail on core-heavy cells; the two variants
then record one neutral-source identity. The classic fit remains their
default (#519 RG-12). convergence="auto" is wired for the GDF and
BIPOLE routes only and is reported as “plain defaults” on every AICCM
variant.
The real-Gamma producer in Python¶
The front door runs the real-Gamma producer with its defaults. The library
drivers run_ccm_rhf_direct, run_ccm_rks_direct, run_ccm_uhf_direct and
run_ccm_uks_direct in vibeqc.periodic.ccm.direct take the controls
below (#519). Only the fit, one-electron and XC sources change the
Hamiltonian, and each of them enters the neutral-source identity, so a
comparison across two sources is refused by identity instead of averaged.
Storage of the fitted integrals¶
|
what is kept |
use |
|---|---|---|
|
the supercell tensor |
the reference; memory grows as |
|
one block per transfer |
|
|
only the fits the k-pair star plan builds, every other member as a recipe on its representative; the |
symmetric cells; implies |
The three storages are one operator. J and K agree to rounding on any
density, including one without the crystal symmetry, because the auxiliary
map of a star member is unitary and cancels in the exchange sum; the storage
is therefore not part of the source identity. cderi_info["star_storage"]
records the stored and total fit counts and the build’s recipe check. The
front door selects the storage with
run_periodic_job(..., method="aiccm", variant="real-gamma", aiccm_cderi_storage="block") and records it in the .system manifest as
cderi_storage_executed; dense stays the default, and a job with
correlation= keeps the dense array its treatment reads.
exchange_wedge=True (block or star storage built with symmetry) builds the
exchange at one bra per k-star and transports it to the others,
K(Rk) = Om K(k) Om^H. That identity needs a density with the star plan’s
symmetry, so every call first measures the density’s distance from it and
builds the full exchange when the distance is above 1e-10 of the density’s
scale. cderi_info["exchange_wedge"] counts the calls, the wedge builds and
the fallbacks.
Fit, one-electron and XC sources¶
fit_source= takes a fold source object:
ClassicRSGDFFitSource(the default), the classic all-reciprocal fit of the multi-k GDF driver with its auto-sized high-|G| tail;RangeSeparatedFitSource(), the SR/LR range-separated fit of Ye and Berkelbach (J. Chem. Phys. 154, 131104 (2021)), planned from a raw integral error and needing no tail; the front door’sfit_source="sr";MANTAFitSource(options, reciprocal_energy_cutoff), MANTA’s periodic GDF tiles. Its Bloch control is MANTA’s own whole-mesh RI method.
The classic fit takes its AO pairs from a ball of lattice cells of radius
lat_opts.cutoff_bohr (15 bohr by default) around the origin (#466). On cells
with diffuse shells that truncates pair densities once the torus resolves
them: LiH/STO-3G at (3,3,3) moves by 161 uHa/cell between a 15 and a
25 bohr list and is converged at 25 bohr. Give both producers the larger
lat_opts.cutoff_bohr, or use the SR fit, which has no such ball; its build
is still slow at N_c > 1 (#543).
With the MANTA fit, oneelectron=MANTAOneElectronSource(...) takes the
overlap, core Hamiltonian and nuclear repulsion from MANTA too, and the KS
drivers take xc_source=MANTAXCSource(...) for MANTA’s semilocal XC on its
own image domain. Together they reproduce MANTA’s fitted HF and KS energies
per cell. The classes live in vibeqc.periodic.ccm.fit_source,
vibeqc.periodic.ccm.one_electron_source and
vibeqc.periodic.ccm.xc_source.
run_ccm_rks_direct(xc_torus_complete=True) (and the UKS sibling) sums the
XC density over every pair of images that reaches a grid batch, through the
torus residue of the pair, instead of the pair graph truncated at the XC
image domain. That is the domain-converged XC term, and much cheaper on cells
with diffuse shells: LiH/STO-3G PBE at (1,1,1) converges in 40 s instead of
444 s, 2.9e-11 Ha/cell away. It is opt-in because the Bloch producer keeps the
truncated pair graph, so the two differ by the domain’s truncation (up to
about 1e-10 Ha/cell) and record different neutral-source identities.
Initial guess and state selection¶
The default guess is HCORE. initial_guess="sad" builds the superposition
of atomic densities on the supercell, and initial_density= takes a
prepared READ density, for example the Bloch reference folded by
ccm_reference_from_bloch. An ionic cell started from HCORE can converge to
a saddle point: MgO/pob-DZVP-rev2 at (1,1,1) lands about 0.26 Ha/cell
above the ground state, with a negative singlet stability eigenvalue.
run_ccm_rhf_direct(stability_check=True) evaluates the lowest RHF
orbital-Hessian eigenvalues in the singlet and triplet sectors after
convergence and stamps the molecular drivers’ verdict fields
(stability_checked, stability_eigenvalue, internal_instability).
follow_instability=True rotates the occupied orbitals along a
translation-invariant singlet mode below -stability_tol, keeps the lowest
energy of an angle scan and converges again, at most
max_instability_follow times (default 3); instability_follow records
the steps. The runner arm run_real_gamma_scf takes the same two switches,
and the .system manifest records the frontier gap as frontier_gap_ha.
Cross-code evidence¶
studies/aiccm-2026/ladder_pyscf.py compares the real-Gamma energy per cell
with PySCF’s KRHF on the same Gamma-centred mesh, with vibe-qc’s AO and
auxiliary shells transported to PySCF and exxdiv='ewald' on both sides. On
diamond, LiH, MgO and fcc Be (STO-3G) from (1,1,1) to (2,2,2) and MgO
pob-DZVP-rev2 at (1,1,1), the SR fit agrees with PySCF’s range-separated GDF
to 18 uHa/cell or better, the size of PySCF’s own spread between its two fits.
The classic fit sits 32 to 215 uHa/cell above PySCF’s GDF, its documented
dense-core floor. The measured tables are in the study’s README.
Legacy selector spellings¶
spelling |
before the front door |
since the front door |
|---|---|---|
|
the real-Gamma control |
resolves to |
|
chi-CCM |
resolves to |
|
the four-centre lineage |
resolves to |
|
the four-centre selector |
retired: fails closed with the ruling-R1 message |
|
plain unit-cell GDF |
retired: fails closed with a pointer at |
|
rejected |
rejected, unchanged (the A prefix names the four-centre construction) |
|
dispatched silently |
dispatched with the same |
The warning is attributed to your own call site, not to a vibe-qc frame,
which is what makes it visible: Python’s default filters show a
DeprecationWarning only when it is blamed on __main__. The .out carries
the same pointer for logs and for callers that filter warnings away: the line
under “J/K method” reads (user-requested: 'real-gamma'; deprecated spelling of method='aiccm', variant='real-gamma').
What the outputs record¶
The .out “J/K method” line reads aiccm (<variant>) ...; experimental,
followed by (selected by method='aiccm', variant='...'; SCF reference RHF inferred). The .system manifest carries [run].method_status = "experimental", aiccm_variant, aiccm_selector ("front-door" or
"legacy-jk_method"), the variant’s route under jk_method_requested /
_resolved / _executed (a front-door job records the route value in all
three), the inferred SCF reference under [plan].method, and the variant’s
convention record (exchange_q0, torus size, representation; see
output files). neutral-bloch adds the fit accounting
that makes the two producers auditable against each other:
lpq_pair_symmetry, gdf_pair_builds, gdf_pair_total,
gdf_pair_reduction_factor, rsgdf_tail_ke_cutoff_executed and
rsgdf_fit_source_executed; real-gamma records the last two as well.
Both record neutral_source_identity, one digest of the whole operator
(#519): a Theorem-1 pair must agree on it before its energies are compared.
Without the star reduction both pair counts are the number of (k_i, k_j)
fit tensors the multi-k driver built, read from its result
(gdf_cderi_pairs), not re-derived from its routing. The
two producers must agree on the tail and on the fit source, or they are not
one operator: since v0.17.1 the multi-k driver’s default source for 3-D cells
is its range-separated fit (sr), while the real-Γ fold builds the classic
all-reciprocal fit, so the neutral-bloch producer pins classic and reads
the executed source back from the driver (vibe-qc #378). Pass
fit_source="sr" to the front door to run the driver’s own default
deliberately; it is a different fitted operator.
Both neutral
variants record the vacuum opt-in (aiccm_allow_vacuum_padding,
aiccm_vacuum_padded_axes). Every periodic run whose producer keeps a
per-cycle trace also records the convergence it actually reached, beside
the thresholds it was compared against: scf_cycles_recorded,
scf_final_delta_e_ha, scf_final_residual and
scf_final_residual_metric (max_abs_orthonormalised_commutator for the
real-Gamma and lean neutral loops, gradient_norm for the multi-k driver
behind neutral-bloch; not-recorded where the loop keeps no trace). The
[vibeqc] section carries native_core_sha256 and native_core_bytes,
the checksum of the compiled core the process actually loaded, so the
three-layer build identity (release, source revision, core checksum) is read
from the run without an out-of-tree wrapper. The
references block cites the variant’s own route (real-gamma,
neutral-bloch, aiccm2026dev-a, or aiccm2026dev-b) rather than a plain
periodic SCF.
Limitations of this milestone¶
The front door always executes the symmetric Born-von Karman-torus four-centre weighting,
aiccm2026dev-a. The library drivers still default to the historicalunion12weight, whose Coulomb supermatrix carries a negative subspace on any basis with more than one function per centre, and there is no runner keyword through which you could ask for it.four-centerruns Hartree-Fock on the scalable lattice-sum builder, which applies the weights inside the shell-quartet loop. The dense builder that materialises the full effective integral tensor stays reachable as the library entryrun_ccm_rhf, and remains the validation reference the two agree against; it runs out of memory on the first real three-dimensional cell. Open-shell HF has no scalable entry yet, soUHFuses the dense route and inherits its cluster-size ceiling. The.systemrecords which builder ran.Both neutral producers refuse a few inputs plain GDF accepts, because they carry the neutral-torus guards: a cell declared 3-D whose transverse directions are measured as pure vacuum (a gap above 25 bohr and above the ratio to the shortest lattice vector) and a converged POSITIVE energy on a neutral cell are refused rather than reported. The first refusal has the explicit, warned, recorded opt-in
aiccm_allow_vacuum_padding=Truedescribed above; the second has none.None of
real-gamma,neutral-blochandfour-centerforwards a mixing control, so an explicitdamping,fock_mixing,fmixing_percent,density_mixerorlevel_shiftfails closed on all three rather than being silently dropped.Open-shell spin bookkeeping differs between the two neutral producers:
neutral-blochuses the multi-k convention (the UNIT cell’s multiplicity, replicated over the mesh), whilereal-gammaderives the spin from the SUPERCELL. They ask the same question only at a torus of(1,1,1), so an open-shell comparison between the variants at a larger torus needs an explicit spin-state decision first.Post-HF from the runner is
correlation="mp2"or"ccsd"onvariant="four-center",variant="real-gamma"andvariant="neutral-bloch"(see Correlation), plus"dlpno-mp2"/"dlpno-ccsd"on the two fitted producers. Onneutral-blochthe reference is the Bloch SCF folded to real-Gamma orbitals (Theorem 1). Chi has separate admitted same-source canonical correlation routes described above.External full-grid XC is available on the
real-gamma,four-center, and four-center-backedchiKS routes described above;neutral-blochfails closed pending representation-invariance evidence.chi-CCM has no analytic gradient by design;
real-gammarelaxes atoms on a fixed cell only; the four-centre gradients are dense small-cluster only and are not wired to the runner, sooptimizefails closed there.four-centerwrites no population sidecar yet: its population is a crystal population over folded blocks and needs a registration in the shared output planner, which is requested and pending. An explicitwrite_population_file=Trueis refused with that reason rather than producing a molecular proxy.Every variant is 3-D only; double hybrids are reachable on no variant from the runner.
See also¶
chi-CCM user guide and the Gamma-CCM reference: backends, qualification, route keywords.
AICCM route support matrix: which route supports which method.
Periodic methods and periodic JK routes: the other Coulomb routes and the parity policy.
chi-CCM decisions log: D56, D74, D89, D90, D124.
The explicit classic chi route also provides a shared-orbital ROHF reference
and Knowles RMP2 including singles. Select scf_reference="rohf" and
correlation="mp2" with the ROHF/RMP2 controls.
Scientific acceptance is pending and ROHF-CC remains unsupported.
Classic chi HF and admitted canonical correlation also provide
source-preserving .vqr restart. The four explicit paths
are chi_reference_checkpoint, chi_reference_from,
chi_correlation_checkpoint and chi_correlation_resume;
chi_checkpoint_interval controls complete iteration/work-unit publication.
Accepted-reference reconstruction is distinct from a convergence-required
guess, and neither storage integrity nor successful continuation establishes
scientific acceptance.