vibeqc.compute_gradient_periodic_rks_gamma¶
- vibeqc.compute_gradient_periodic_rks_gamma(system, basis, result, *, lattice_opts=None, grid_options=None, dft_plus_u=None)[source]¶
Analytic Γ-only periodic RKS atomic gradient (closed-shell DFT).
- Parameters:
system (PeriodicSystem) – Periodic system and AO basis.
basis (BasisSet) – Periodic system and AO basis.
result (PeriodicKSResult) – Converged
PeriodicKSResultfromvibeqc.run_rks_periodic()(must haveconverged=True).lattice_opts (Optional[LatticeSumOptions]) –
LatticeSumOptionsfor the lattice-sum cutoffs. Must match the values used during the SCF for the gradient to equal the energy gradient.grid_options (Optional[GridOptions]) –
GridOptionscontrolling the DFT quadrature grid. Must match the SCF grid for the XC Pulay term to be consistent with the SCF energy.dft_plus_u (Optional[Sequence['HubbardSite']])
- Returns:
(n_atoms, 3)gradient in Ha/bohr.- Return type:
np.ndarray
Notes
Assembly.
The Hartree-Fock-ish part (nuclear-rep + 1-e Pulay + overlap- Lagrangian + 2-e J/K Pulay) is computed via
compute_gradient_periodic_rhf_gamma()with the Hartree- fraction set by the functional (a_HF = 0 for pure DFT; a_HF != 0 for hybrids). The convergedV_xcis threaded in so the overlap-Lagrangian uses the gauge-free variational KS Fock eigenvalues (see that function’s Gauge-free overlap-Lagrangian note). Hybrid true-periodic DIRECT_TRUNCATED gradients fail closed in the shared RHF helper; the molecular limit is exact.The XC Pulay term uses the lattice-summed periodic primitive
xc_lattice_gradient_contribution()(libxc on the periodic Becke grid + analytic d_c chi), exact for LDA / GGA / hybrid. Combined with (1) the molecular-limit RKS gradient matches the molecular analytic gradient to ~1e-9 (LDA / PBE) and ~1e-14 (B3LYP / PBE0).