vibeqc.compute_gradient_periodic_rks_gamma

vibeqc.compute_gradient_periodic_rks_gamma(system, basis, result, *, lattice_opts=None, grid_options=None)[source]

Analytic Γ-only periodic RKS atomic gradient (closed-shell DFT).

Parameters:
  • system (vibeqc._vibeqc_core.PeriodicSystem) – Periodic system and AO basis.

  • basis (vibeqc._vibeqc_core.BasisSet) – Periodic system and AO basis.

  • result (vibeqc._vibeqc_core.PeriodicKSResult) – Converged PeriodicKSResult from vibeqc.run_rks_periodic() (must have converged=True).

  • lattice_opts (vibeqc._vibeqc_core.LatticeSumOptions | None) – LatticeSumOptions for the lattice-sum cutoffs. Must match the values used during the SCF for the gradient to equal the energy gradient.

  • grid_options (vibeqc._vibeqc_core.GridOptions | None) – GridOptions controlling the DFT quadrature grid. Must match the SCF grid for the XC Pulay term to be consistent with the SCF energy.

Returns:

(n_atoms, 3) gradient in Ha/bohr.

Return type:

np.ndarray

Notes

Implementation cuts (G1b-1, this commit).

  1. The Hartree-Fock-ish part (nuclear-rep + 1-e Pulay + overlap- Lagrangian + 2-e J Pulay) is computed via compute_gradient_periodic_rhf_gamma() with the Hartree- fraction set by the functional (α_HF = 0 for pure DFT; α_HF ≠ 0 for hybrids — and hybrids inherit the G1a-2 K bug).

  2. The XC Pulay term falls back to the molecular XC Pulay evaluated on the Γ-folded total density. Exact in the molecular limit; approximate for tight-packed bulk where image-cell AO overlap is significant. G1b-2 will replace this with a lattice-summed periodic XC Pulay.