vibeqc.PeriodicKRHFGDFResult

class vibeqc.PeriodicKRHFGDFResult(energy, e_electronic, e_nuclear, n_iter, converged, mo_energies, mo_coeffs, fock, overlap, hcore, density, kpoints_cart, kpoint_weights, scf_trace=<factory>, functional=None, e_xc=0.0, e_coulomb=0.0, e_hf_exchange=0.0, e_dft_plus_u=0.0, fock_mixing=0.0, level_shift=0.0, level_shift_warmup_cycles=0, smearing_temperature=0.0, fermi_level=0.0, entropy=0.0, free_energy=0.0, occupations=<factory>, aux_basis_name='', linear_dependence=None, n_aux=0, gdf_cderi_pairs=0, xc_lattice_cutoff_bohr=0.0, backend='native-multi-k-gdf', exchange_q0=None, rsgdf_tail_ke_cutoff=None, rsgdf_ke_cutoff=200.0, gradient=None, density_lattice_mesh=None, density_lattice_reserved_peak_bytes=0, density_lattice=None, restart_basis=None, restart_lattice=None, guess_selection=None, restart_kpoints=None, restart_weights=None, fit_cache=None)[source]

Bases: object

Result of run_krhf_periodic_gdf().

All per-k arrays are length-nkpts Python lists holding complex Hermitian (or real, for Γ-only) matrices in AO basis.

Converged COSX results additionally retain iterated_fock, iterated_mo_coeffs and iterated_mo_energies. energy_operator identifies the iterated energy/density surface; returned_operator identifies the post-convergence one-center-corrected Fock/orbitals.

Parameters:
__init__(energy, e_electronic, e_nuclear, n_iter, converged, mo_energies, mo_coeffs, fock, overlap, hcore, density, kpoints_cart, kpoint_weights, scf_trace=<factory>, functional=None, e_xc=0.0, e_coulomb=0.0, e_hf_exchange=0.0, e_dft_plus_u=0.0, fock_mixing=0.0, level_shift=0.0, level_shift_warmup_cycles=0, smearing_temperature=0.0, fermi_level=0.0, entropy=0.0, free_energy=0.0, occupations=<factory>, aux_basis_name='', linear_dependence=None, n_aux=0, gdf_cderi_pairs=0, xc_lattice_cutoff_bohr=0.0, backend='native-multi-k-gdf', exchange_q0=None, rsgdf_tail_ke_cutoff=None, rsgdf_ke_cutoff=200.0, gradient=None, density_lattice_mesh=None, density_lattice_reserved_peak_bytes=0, density_lattice=None, restart_basis=None, restart_lattice=None, guess_selection=None, restart_kpoints=None, restart_weights=None, fit_cache=None)
Parameters:
Return type:

None

Methods

__init__(energy, e_electronic, e_nuclear, ...)

Attributes

aux_basis_name

backend

density_lattice

density_lattice_mesh

density_lattice_reserved_peak_bytes

e_coulomb

e_dft_plus_u

e_hf_exchange

e_xc

energy_per_cell_ha

entropy

exchange_q0

The exchange q=0 convention this result ran (BvK-ewald when the BvK-supercell Madelung shift was applied to K); None when the route declares none, and the runner's manifest then falls back to the requested exchange_exxdiv label.

fermi_level

fit_cache

RSGDFFitCache when the driver ran with retain_fit_cache=True and took the classic RSGDF multi-k path; None otherwise (the reason is in the progress log).

fock_mixing

free_energy

functional

gdf_cderi_pairs

Number of (k_i, k_j) fit tensors in the density fit the SCF contracted, counted on the cache the driver built rather than re-derived from its routing: n_k for a Coulomb-only fit, up to n_k**2 with fitted exchange, 1 for the single Γ fit of the Γ delegates, and 0 when no fit was built (no closed-shell k-mesh route since #415 removed its EWALD_3D J/K branch).

gradient

guess_selection

level_shift

level_shift_warmup_cycles

linear_dependence

n_aux

restart_basis

restart_kpoints

restart_lattice

restart_weights

rsgdf_ke_cutoff

The BASE rsgdf reciprocal mesh (Ha) actually used, so a consumer's *_executed field can be a real read rather than a copy of its own request (GitLab IID 307; see studies/aiccm-2026/run_case_cmp.py).

rsgdf_tail_ke_cutoff

RSGDF high-|G| tail cutoff (Ha) actually APPLIED, or None for base-mesh-only (GitLab IID 307).

smearing_temperature

xc_lattice_cutoff_bohr

Lattice cutoff (bohr) of the XC density image domain this KS run evaluated, grown past lattice_opts.cutoff_bohr to a converged bound under the default rcut_strategy (#465); 0 for HF and the chi XC path.

energy

e_electronic

e_nuclear

n_iter

converged

mo_energies

mo_coeffs

fock

overlap

hcore

density

kpoints_cart

kpoint_weights

scf_trace

occupations

energy: float
e_electronic: float
e_nuclear: float
n_iter: int
converged: bool
mo_energies: List[ndarray]
mo_coeffs: List[ndarray]
fock: List[ndarray]
overlap: List[ndarray]
hcore: List[ndarray]
density: List[ndarray]
kpoints_cart: ndarray
kpoint_weights: ndarray
scf_trace: List[vibeqc._vibeqc_core.SCFIteration]
functional: str | None = None
e_xc: float = 0.0
e_coulomb: float = 0.0
e_hf_exchange: float = 0.0
e_dft_plus_u: float = 0.0
fock_mixing: float = 0.0
level_shift: float = 0.0
level_shift_warmup_cycles: int = 0
smearing_temperature: float = 0.0
fermi_level: float = 0.0
entropy: float = 0.0
free_energy: float = 0.0
occupations: List[ndarray]
aux_basis_name: str = ''
linear_dependence: PeriodicLinearDependenceSummary | None = None
n_aux: int = 0
gdf_cderi_pairs: int = 0

Number of (k_i, k_j) fit tensors in the density fit the SCF contracted, counted on the cache the driver built rather than re-derived from its routing: n_k for a Coulomb-only fit, up to n_k**2 with fitted exchange, 1 for the single Γ fit of the Γ delegates, and 0 when no fit was built (no closed-shell k-mesh route since #415 removed its EWALD_3D J/K branch). A consumer that needs to know whether a fit was built, or how large it was, reads this field instead of copying the promotion rules (the CCM neutral-Bloch control’s copy went stale).

xc_lattice_cutoff_bohr: float = 0.0

Lattice cutoff (bohr) of the XC density image domain this KS run evaluated, grown past lattice_opts.cutoff_bohr to a converged bound under the default rcut_strategy (#465); 0 for HF and the chi XC path.

backend: str = 'native-multi-k-gdf'
exchange_q0: str | None = None

The exchange q=0 convention this result ran (BvK-ewald when the BvK-supercell Madelung shift was applied to K); None when the route declares none, and the runner’s manifest then falls back to the requested exchange_exxdiv label.

rsgdf_tail_ke_cutoff: float | None = None

RSGDF high-|G| tail cutoff (Ha) actually APPLIED, or None for base-mesh-only (GitLab IID 307). The Γ fast path auto-sizes one on the tight-core class and reports it here; the multi-k loop does not consume a tail at all (IID 146), so this stays None there even when rsgdf_tail_ke_cutoff was requested – a requested but unapplied tail must not read back as applied.

rsgdf_ke_cutoff: float = 200.0

The BASE rsgdf reciprocal mesh (Ha) actually used, so a consumer’s *_executed field can be a real read rather than a copy of its own request (GitLab IID 307; see studies/aiccm-2026/run_case_cmp.py).

gradient: ndarray | None = None
density_lattice_mesh: Tuple[int, int, int] | None = None
density_lattice_reserved_peak_bytes: int = 0
density_lattice: vibeqc._vibeqc_core.LatticeMatrixSet | None = None
property energy_per_cell_ha: float
restart_basis: object = None
restart_lattice: object = None
guess_selection: object = None
restart_kpoints: object = None
restart_weights: object = None
fit_cache: object = None

RSGDFFitCache when the driver ran with retain_fit_cache=True and took the classic RSGDF multi-k path; None otherwise (the reason is in the progress log).