Analytic nuclear forces for the Γ-CCM (aiccm2026dev-a) – Methods¶
Owned by the Γ-CCM analytic-forces line (paper #3). Companion to
aiccm2026dev_a_theory.md (the -a method paper) and
aiccm_a_position.md (the re-derivation/adjudication memo).
The implementation spec this Methods section is the rigorous backing for is
../aiccm2026dev_a_analytic_gradient.md;
the finite-difference gate is ccm_numerical_gradient
(properties.py).
Discipline (as the position memo): derive every link and prove it; every equation below becomes an inline comment at the implementation site (CLAUDE.md §8); the finite-difference gate is the arbiter of correctness, to ~1e-6 Ha/bohr on the H₂ chain.
This document derives the analytic nuclear gradient dE_CCM/dR of the Γ-CCM
Hartree-Fock energy from first principles. The energy being differentiated is the
closed-shell RHF-CCM energy per reference cell; the derivation gives the
variational Hellmann-Feynman/Pulay split, proves that the WSSC fold commutes with
the nuclear derivative, states the cyclic image-sum, derives the adjoint (Lᵀ)
contraction that turns each folded-integral derivative into a molecular gradient
call on the padded cluster, gives the nuclear-repulsion gradient in closed form,
and proves the translational sum rule. RHF is treated in full; UHF, KS, and
post-HF are the outlook (§1.7).
The numbering of the subsections mirrors §1 of
handovers/HANDOVER_AICCM_GRADIENT.md.
0. Setup, notation, and the three index sets¶
0.1 The Γ-CCM energy¶
The Γ-CCM construction (Peintinger & Bredow 2014) places the crystal on a
finite Born-von-Kármán torus – the reference supercell of size
nrep = (N₁,N₂,N₃) – and defines its finite Hamiltonian by
Wigner-Seitz-supercell (WSSC) integral weighting. A real-supercell
evaluation, where used, is a representation of this already specified weighted
Hamiltonian; it does not identify Γ-CCM with the separate finite-character
χ-CCM construction. Every molecular HF/KS/post-HF kernel then applies unchanged
to the WSSC-weighted (“effective”) integrals.
The closed-shell RHF-CCM energy per reference cell is
E_CCM = Σ_μν P_μν h^CCM_μν
+ ½ Σ_μνλσ P_μν P_λσ [ (μν|λσ)^CCM − ½ (μλ|νσ)^CCM ]
+ V_nn^CCM , (0.1)
equivalently E_CCM = ½ Σ_μν P_μν (h^CCM_μν + F^CCM_μν) + V_nn^CCM with
F^CCM = h^CCM + J^CCM[P] − ½ K^CCM[P]. Here:
P_μν = 2 Σ_i^occ C_μi C_νiis the converged closed-shell density on the home (reference-cell,nbf-dimensional) AO basis;h^CCM = T^CCM + V^CCM, the WSSC-folded core Hamiltonian;(μν|λσ)^CCMis the WSSC-folded four-center electron-repulsion tensor (Mulliken/chemist order), the symmetric bridge ofccm_eri_symmetricformethod="aiccm2026dev-a";V_nn^CCMis the WSSC-weighted nuclear repulsion per reference cell.
It is convenient to write the two-electron energy with the closed-shell HF AO 2-particle density (2-RDM)
Γ_μνλσ = P_μν P_λσ − ½ P_μλ P_νσ , E_2e = ½ Σ_μνλσ Γ_μνλσ (μν|λσ)^CCM . (0.2)
(One checks the exchange relabelling ν↔λ reproduces −¼ Σ P_μν P_λσ (μλ|νσ)^CCM.)
Γ is exactly the arbitrary AO 2-RDM that
two_electron_gradient_casscf(basis, mol, gamma_ao_flat)
(gradient.cpp:1473, bound at
bindings.cpp:2840) contracts against
∂(μν|λσ)/∂R (Helgaker Eq. 12.5.7); this is what makes the 2-e term a Python-only
call (§2).
0.2 The WSSC fold L¶
Every effective matrix is a linear, geometry-locally-constant fold L of a
padded-cluster molecular integral. The padded cluster (PaddedCluster,
padded.py) is the reference
supercell plus its cluster-lattice image cells g, built as one ordinary molecule
on which standard molecular integrals are evaluated; the CCM matrix over the
reference cell is assembled by selecting home↔image sub-blocks and applying the WSSC
weights w^g_{AB} = cell_weight_matrices()[g][A,B]. Concretely:
S^CCM = L₂(S_pad),T^CCM = L₂(T_pad)–_fold_two_center(padded.py:217);V^CCM = L_V(V_pad)–ccm_nuclear(padded.py:247), per-nucleus-image weighted;(μν|λσ)^CCM = L₄(eri_pad)–ccm_eri_symmetric(padded.py:361);V_nn^CCM–ccm_nuclear_repulsion(padded.py:437).
All folds draw the same weights from CCMSystem.cell_weight_matrices()
(system.py:397).
0.3 Three index sets – the crux of every scatter¶
The derivation lives on three distinct atom-index sets; conflating them is the one way to get the adjoint wrong, so we fix the notation once.
symbol |
set |
size |
code |
|---|---|---|---|
|
unit-cell atom |
|
|
|
supercell atom (the “real” cluster atoms |
|
|
|
padded-cluster atom: supercell atom |
|
|
The supercell is built for i: for j: for k: for β, so a supercell atom factorises
as A = ((i·N₂+j)·N₃+k)·n_basis_atoms + β; the inverse map β = atom_beta[A],
(i,j,k) = atom_cell[A] is CCMSystem._decompose_atoms
(system.py:282).
Resolved open detail – the WSSC weights are SUPERCELL-indexed.
cell_weight_matrices()[g] is an (n_atoms, n_atoms) matrix W[g][A,B] indexed by
supercell atoms (system.py:465: Wg = Tg[beta[:,None], beta[None,:], pidx]
with beta of length n_atoms and pidx of shape (n_atoms, n_atoms)); the
docstring states the same, and _fold_two_center consumes it as
w_atom[ao[:,None], ao[None,:]] with ao = ccm.ao_atom mapping each AO to its
supercell atom. Every adjoint scatter below is therefore indexed by A, never
by β. The fold-back to the gradient output happens only at the end, by summing
the per-supercell-atom (or per-pad-atom) gradient over the supercell copies of each
unit-cell atom (§1.3).
The gate ccm_numerical_gradient (properties.py:585)
displaces a unit-cell atom β (_displaced_unit_system shifts
unit_system.unit_cell[β], then rebuilds the whole CCMSystem, so all
n_cells supercell copies and all their padded images move together), and returns
(n_basis_atoms, 3). The analytic gradient must match that shape and that
displacement semantics.
1. The theory (paper §Methods)¶
1.1 Variational gradient and the Hellmann-Feynman/Pulay split¶
Let R_β be a Cartesian coordinate of unit-cell atom β. The MOs C(R) solve the
CCM-RHF equations subject to orthonormality in the folded overlap,
Cᵀ S^CCM(R) C = 1. Introduce the constrained Lagrangian
𝓛(C, ε; R) = E_CCM(C; R) − Σ_ij ε_ij ( Σ_μν C_μi S^CCM_μν(R) C_νj − δ_ij ). (1.1a)
At the SCF solution the orbital-variation stationarity ∂𝓛/∂C = 0 holds and the
multipliers are the canonical orbital energies, ε_ij = ε_i δ_ij. Because 𝓛 = E
on the constraint manifold, the total energy derivative along the solution path
C(R) equals the partial (explicit, integral-only) derivative of 𝓛:
dE_CCM/dR_β = ∂𝓛/∂R_β |_{C,ε fixed}
= ∂E_CCM/∂R_β |_C − Σ_ij ε_ij Σ_μν C_μi (∂S^CCM_μν/∂R_β) C_νj . (1.1b)
The orbital-response terms Σ_μi (∂E/∂C_μi)(dC_μi/dR) cancel against the
constraint-response exactly at a stationary point – this is the standard Hellmann-
Feynman argument (Pulay 1969; Helgaker, Jørgensen & Olsen, Molecular
Electronic-Structure Theory, Ch. 10 & Eq. 12.5.7), unchanged here because the only
modification is that the metric is the folded overlap S^CCM. Writing the
explicit derivative out and collecting,
dE_CCM/dR_β = Σ_μν P_μν ∂h^CCM_μν/∂R_β
+ ½ Σ_μνλσ P_μν P_λσ ∂[(μν|λσ)^CCM − ½(μλ|νσ)^CCM]/∂R_β
− Σ_μν W_μν ∂S^CCM_μν/∂R_β
+ ∂V_nn^CCM/∂R_β , (1.1)
with the energy-weighted density (Pulay/force-relaxation matrix)
W_μν = Σ_i n_i ε_i C_μi C_νi (n_i = 2, closed shell) = (C·diag(n ε)·Cᵀ)_μν . (1.1c)
The four terms of (1.1) are the nuclear-attraction/kinetic Hellmann-Feynman term,
the two-electron Hellmann-Feynman term (written compactly as ½ Σ Γ ∂(μν|λσ)^CCM
with Γ from (0.2)), the Pulay overlap (basis-relaxation) term, and the
nuclear-repulsion term. Equation (1.1) is formally identical to the molecular RHF
gradient; the entire CCM content sits inside the folded integrals M^CCM and their
derivatives, treated next.
Remark (stationarity sensitivity). The cancellation of the orbital-response terms
in (1.1b) holds only at a stationary point – ∂E_CCM/∂κ_{ai} = F^CCM_{ai} = 0 for
every occupied-virtual rotation. A loosely converged SCF leaves a residual F_{ai},
which leaks into the analytic gradient at first order through the Pulay term,
even though the energy itself is only second-order sensitive to it. The analytic
force therefore demands a tightly converged SCF (here the DIIS commutator
F^CCM D S^CCM − S^CCM D F^CCM driven well below 10⁻⁶), whereas a finite-
difference force is insensitive to the same non-stationarity. This asymmetry is a
property of variational analytic gradients in general (Helgaker-Jørgensen-Olsen,
Ch. 10), restated here because it is the one practical prerequisite for the formula
to reproduce the finite-difference reference.
1.2 The fold commutes with the nuclear derivative¶
Each fold L (for M ∈ {S,T,V,(··|··)}) is a fixed linear map: a sum over cells
g of WSSC weights w^g_{AB} times a selection of padded sub-blocks
(cell_to_cols[g]), optionally bra↔ket-symmetrised. Both the weights and the
selection maps are constants under the nuclear derivative (Lemma 1.2.1), so
∂M^CCM/∂R_β = L( ∂M_pad/∂R_β ) for M ∈ {S, T, V, (··|··)} . (1.2)
Lemma 1.2.1 (WSSC weights are locally position-independent). The weight
w^g_{AB} is determined entirely by which minimum-image Wigner-Seitz cell of the
cluster lattice the class displacement d = (r_{βA} − r_{βB}) + Δcell·a falls into
(minimum_image, system.py:436).
This is a piecewise-constant function of the atomic positions: it is locally
constant on the open interior of every WS cell and changes only across the
measure-zero WS-boundary set (where minimum_image splits the weight equally among
tied cells within weight_tol_bohr). Hence ∂w^g_{AB}/∂R = 0 for any geometry not
on a boundary tie, and (1.2) holds there.
Caveat (boundary ties). At a boundary tie the cluster energy E_CCM(R) has a
kink: the analytic gradient (1.1)-(1.2) is one element of the subgradient, and a
central finite difference straddling the tie would disagree by O(1) in the
tie-crossing component. The gate must therefore be run at a generic geometry
(e.g. an H₂ chain at a non-commensurate bond length); there the weight is smooth
and analytic == FD to ~1e-6. This is the only place where the analytic and
finite-difference gradients are allowed to differ, and it is physical, not a bug.
(The handover §0 statement “the WSC weights depend only on the lattice” is the
interior-of-cell version of this lemma; Lemma 1.2.1 is the precise form.)
1.3 The cyclic image derivative (the image-sum)¶
Unit-cell atom β is realised in the padded cluster as the entire set of
padded atoms
pad(β) = { (A, g) : atom_beta[A] = β, g ∈ cells } , (1.3a)
i.e. all n_cells supercell copies of β (atom_beta[A]=β) and all their
image cells g. The cyclic (Born-von-Kármán) constraint – the defining content of
the gate’s _displaced_unit_system + full CCMSystem rebuild – moves every member
of pad(β) rigidly together. Therefore
∂/∂R_β = Σ_{A : atom_beta[A]=β} Σ_{g} ∂/∂R_{(A,g)} . (1.3)
Operationally: compute the ordinary per-pad-atom molecular gradient
grad_pad[p] = ∂(·)/∂R_{pad_atom_of[p]} on the padded cluster, then image-sum
grad_cell[β] = Σ_{p : atom_beta[ pad_atom_of[p].A ] = β} grad_pad[p] . (1.3b)
This two-stage fold-back (over padded cells g and over supercell copies A) is
the translational fold-back that ccm_numerical_gradient performs implicitly by
displacing the unit-cell atom and propagating to every image.
1.4 The adjoint contraction Lᵀ (turns each fold into a molecular gradient call)¶
Combining (1.1), (1.2) and linearity, each energy-gradient term has the form
Σ_μν C^CCM_μν ∂M^CCM_μν/∂R_β for some symmetric contraction coefficient
C^CCM ∈ {P, W} (or the 2-RDM Γ^CCM for the four-center). Using
M^CCM = L(M_pad) and the adjoint Lᵀ of the linear fold,
Σ C^CCM · ∂M^CCM/∂R_β = Σ C^CCM · L(∂M_pad/∂R_β) = Σ Lᵀ(C^CCM) · ∂M_pad/∂R_β . (1.4)
So we scatter the CCM contraction coefficient onto the padded layout with the
same WSSC weights (Lᵀ), then hand the scattered density to the ordinary
molecular gradient routine on the padded cluster, and finally image-sum (1.3b).
This is the device that makes the whole gradient a sequence of existing molecular
gradient calls – no new C++. The adjoints, term by term:
(L₂ᵀ) two-center (P → P_pad, W → W_pad). The fold (_fold_two_center) is
M^CCM_μν = ½ ( out_μν + out_νμ ), out_μν = Σ_g w^g_{a(μ)a(ν)} M_pad[μ, ν@g] , (1.4a)
with a(μ)=ao_atom[μ] (supercell atom of AO μ), ν@g = cell_to_cols[g][ν], home
rows μ ∈ {0..nbf−1}. For symmetric C^CCM and symmetric M_pad, the energy term
collapses (the ½(out+outᵀ) and the μ↔ν symmetry of C^CCM cancel the ½):
Σ_μν C^CCM_μν M^CCM_μν = Σ_g Σ_μν C^CCM_μν w^g_{a(μ)a(ν)} M_pad[μ, ν@g]
= Σ_{p,q} X_pad[p,q] M_pad[p,q] , (1.4b)
X_pad[μ, ν@g] += w^g_{a(μ)a(ν)} C^CCM_μν (scatter; home rows μ),
and since only the symmetric part of X_pad survives contraction with the
symmetric ∂M_pad/∂R, the padded density fed to the molecular routine is
P_pad = ½ ( X_pad + X_padᵀ ) . (1.4c)
L₂ᵀ is then: P_pad = L₂ᵀ(P) for the 1-e Hellmann-Feynman term and
W_pad = L₂ᵀ(W) for the overlap Pulay term; drive
one_electron_gradient_contribution(basis_pad, mol_pad, P_pad) (kinetic part) and
overlap_gradient_contribution(basis_pad, mol_pad, W_pad) and image-sum.
(L_Vᵀ) nuclear attraction – the subtlest. ccm_nuclear
(padded.py:247) weights each
nucleus image c = (C₀, g_c) by ω_{A,c} = w^{g_c}_{A,C₀} and folds the bra/ket
pair independently:
V^CCM_μν = ½( out + outᵀ ),
out_μν = Σ_c Σ_{g_ν} w^{g_ν}_{a(μ)a(ν)} · ½(ω_{a(μ),c}+ω_{a(ν),c}) · I^c_pad[μ, ν@g_ν] , (1.4d)
I^c_pad[p,q] = ⟨ p | −Z_{C₀}/|r−R_c| | q ⟩ (signed/attractive, padded basis).
The gradient of Σ P V^CCM has two physically distinct pieces:
Basis-center (bra/ket) derivatives of
I^c_pad: fold exactly likeL₂ᵀ, but with the combined weightw^{g_ν}·½(ω_{a(μ)}+ω_{a(ν)})and the operator evaluated for nucleus imagec. The derivative lands on the unit-cell atoms owningμandν.Hellmann-Feynman nucleus-position derivative
∫ φ_μ ∂(−Z_{C₀}/|r−R_c|)/∂R_{C₀} φ_ν, weighted by the same combined weight, summed onto the unit-cell atom that owns nucleus imagec(i.e.atom_beta[C₀]).
The natural primitive is
compute_external_charge_density_gradient(basis, mol, D, charges, positions)
(bindings.cpp:2868), whose result carries
atom_grad (the bra+ket basis-center derivatives, piece 1) and point_grad (the
per-point-charge / nucleus-position derivatives, piece 2) separately – exactly
the two pieces above. Per nucleus image c, build the combined-weighted density
D^c_pad = L₂ᵀ-style scatter of P with weight
w^{g_ν}·½(ω_{a(μ),c}+ω_{a(ν),c}), run the external-charge gradient with the single
charge Z_{C₀} at R_c, route atom_grad to the AO-owner unit-cell atoms and
point_grad[c] → grad_cell[atom_beta[C₀]], then sum over c. (Equivalently, mirror
ccm_nuclear’s per-c compute_nuclear construction and differentiate.)
(L₄ᵀ) four-center (Γ^CCM → Γ_pad). ccm_eri_symmetric
(padded.py:361) builds
(μν|λσ)^CCM = ½( eff + effᵀ_braket ),
eff[μν,λσ] = Σ_{g_c,g_e} w^0_{a(μ)a(ν)} · bridge_{μνλσ}^{g_c g_e} · w^{g_e−g_c}_{a(λ)a(σ)}
· eri_pad[μ, ν@0, λ@g_c, σ@g_e] , (1.4e)
bridge = ¼( w^{g_c}_{a(μ)a(λ)} + w^{g_c}_{a(ν)a(λ)} + w^{g_e}_{a(μ)a(σ)} + w^{g_e}_{a(ν)a(σ)} ),
effᵀ_braket = eff.transpose(λσ ↔ μν) .
By the same adjoint identity, the contraction Σ Γ^CCM (μν|λσ)^CCM equals
Σ Γ_pad · eri_pad with the scatter
Γ̄ = ½( Γ^CCM + Γ^CCM.transpose(2,3,0,1) ) (adjoint of the closing braket transpose),
Γ_pad[μ, ν@0, λ@g_c, σ@g_e] += w^0_{a(μ)a(ν)} · bridge_{μνλσ}^{g_c g_e}
· w^{g_e−g_c}_{a(λ)a(σ)} · Γ̄_μνλσ . (1.4f)
Flatten Γ_pad row-major (((μ·nb_pad+ν)·nb_pad+λ)·nb_pad+σ) and feed
two_electron_gradient_casscf(basis_pad, mol_pad, Γ_pad_flat); image-sum. The
dense n_pad_ao⁴ tensor confines this to small / 1-D / 2-D clusters (the
_check_padded_eri_size guard), the same regime as the energy build.
1.5 The nuclear-repulsion gradient (build-order step 1)¶
V_nn^CCM (padded.py:437) is the
WSSC-weighted lattice sum over supercell atom pairs and cells, with the on-site
(A=B, g=0) term removed:
V_nn^CCM = ½ Σ_g Σ_{A,B}' w^g_{AB} Z_A Z_B / |d_{ABg}| , d_{ABg} = r_A − (r_B + R_g) , (1.5a)
R_g = g·A_cluster, the prime excluding (A=B, g=0), and the ½ removing the
ordered double-count. Differentiating (1.5a) directly (weights constant, Lemma
1.2.1), the per-supercell-atom gradient is
∂V_nn^CCM/∂r_A = − Σ_g Σ_{B}' w^g_{AB} Z_A Z_B d_{ABg} / |d_{ABg}|³ , (1.5b)
(the A-as-bra and A-as-ket contributions are equal under g↔−g, A↔B, cancelling
the ½), and the gradient output for unit-cell atom β is the supercell image-sum
(1.3b restricted to the supercell, since V_nn involves no padded cells beyond the
R_g offsets):
∂V_nn^CCM/∂R_β = Σ_{A : atom_beta[A]=β} ∂V_nn^CCM/∂r_A . (1.5c)
This is isolated and the simplest term to gate against a finite difference of
ccm_nuclear_repulsion; it is build-order step 1. In code we differentiate the
exact pair list the energy uses (every (g,A,B) term with w^g_{AB}≠0,
(A,g)≠(B,0)), accumulating ±w Z_A Z_B d/|d|³ onto the two endpoints, so the
analytic and finite-difference values agree by construction (away from boundary
ties).
1.6 The translational sum rule¶
Theorem 1.6.1. Σ_β ∂E_CCM/∂R_β = 0 (vector), for every Cartesian component.
Proof. E_CCM depends on the atomic positions only through differences: the
molecular integrals over the padded cluster depend on AO-center separations; the
nuclear repulsion (1.5a) depends on d_{ABg} = r_A − r_B − R_g; and the WSSC
weights depend on the class displacements (r_{βA}−r_{βB}) + Δcell·a (and, being
piecewise-constant, are exactly invariant under a rigid shift – the displacement is
unchanged). A rigid translation of the whole crystal by an arbitrary constant t
moves every unit-cell atom by t (R_β → R_β + t for all β) and leaves all of
these differences – hence E_CCM – invariant. Therefore
0 = d E_CCM(R + t·1) / dt |_{t=0} = Σ_β (∂E_CCM/∂R_β) · 1 = Σ_β ∂E_CCM/∂R_β . (1.6)
∎ Because the WSSC weights are exactly (not just locally) invariant under rigid
translation, the sum rule holds even at boundary ties – unlike the per-atom
gradient (Lemma 1.2.1). It is both a paper result and the implementation’s built-in
check: ccm_numerical_gradient notes the per-cell forces sum to ≈ 0, and the
analytic gradient must satisfy Σ_β grad_cell[β] = 0 to working precision.
1.7 Scope of the equations¶
Closed-shell RHF – fully derived above; the implementation target.
UHF – implemented and validated (
run_ccm_uhf_gradient). Equation (1.1) holds with the total densityP = P^α + P^βin the 1-e term, the total energy-weighted densityW = W^α + W^β(eachW^σ = Σ_i ε^σ_i C^σ_i C^σ_iᵀ, occupation 1 per spin orbital) in the Pulay term, and the spin-resolved AO 2-RDMΓ_μνλσ = P_μν P_λσ − P^α_μλ P^α_νσ − P^β_μλ P^β_νσ (1.7)
(total-density Coulomb, same-spin exchange; reduces to (0.2) when
P^α=P^β=P/2) in the four-center term. The foldsL, the adjointsLᵀ, and the image-sum are spin-independent, so the same term cores serve both references. Validated to machine precision against the molecular UHF analytic gradient (LiH⁺/STO-3G6.9e-11, HeH/6-31G2.7e-9) and to the FD floor with O(h²) Richardson on the open-shell HeH chain. Edge case: a fully-occupied spin manifold (n_occ_σ = nbf) makesP^σ = S⁻¹and the DIIS commutator vanish identically for that spin, so the SCF check is blind to it andε^σ(henceW^σ) may be under-converged – a minimal-basis SCF pathology (HeH/STO-3G), not a gradient defect; the genericn_occ_σ < nbfcase is exact.KS-CCM (RKS) – implemented and validated (
run_ccm_rks_gradient). One structural fact decides the whole derivation: in the KS-CCM FockF = h^CCM + J^CCM + V_xc[ρ] (− α K^CCM)(dft.py) only the Coulomb / exact exchange (the four-center) carries the WSSC fold; the exchange-correlation term is the ordinary molecular semi-local functional of the cluster density on a standard molecular Becke grid over the supercell – it does NOT fold. HencedE_KS/dR = Σ P ∂h^CCM/∂R (reuse: kinetic L₂ᵀ + V_ne L_Vᵀ) + ½ Σ Γ_KS ∂(μν|λσ)^CCM/∂R (reuse: L₄ᵀ, Γ_KS = P⊗P − (α/2) P⊗P_swap) − Σ W ∂S^CCM/∂R (reuse: overlap Pulay L₂ᵀ) + ∂E_xc/∂R |_supercell (molecular XC-Pulay, no fold) + ∂V_nn^CCM/∂R , (1.7b)with
αthe HF-exchange fraction (α=0pure ⇒ Coulomb-onlyΓ_KS=P⊗P;α=1recovers RHF). The first three terms andV_nnreuse the HF cores verbatim; the XC term is the molecular XC-Pulay evaluated on the supercell (n_atoms) density/grid – the same supercell + Becke grid the KS-CCM energy uses – folded back by the supercell image-sum (fold_supercell_gradient_to_cell; no padded images, since the XC lives on the supercell, not the padded cluster). A small bindingxc_pulay_gradient_rks(bindings.cpp) surfaces the molecular XC-Pulay kernel (gradient.cpp:805/896) – the one piece the HF gradient did not need. Validated to machine precision against the molecularcompute_gradient_rksin the isolated limit for PBE (2.2e-16), PBE0 (1.4e-16), and B3LYP (5.6e-17); periodic FD on the H₂ chain agrees at the grid-fixed floor (~4e-7, the Becke weight-derivative term both the analytic and the molecular DFT gradient neglect – tighten the grid to close it). UKS is implemented too (run_ccm_uks_gradient): the same decomposition with totalP=P^α+P^β, totalW=W^α+W^β, the open-shell 2-RDMΓ=P⊗P − α(P^α⊗P^α + P^β⊗P^β), and the_uksXC-Pulay binding (xc_pulay_gradient_uks) on the supercell spin densities – the HF cores are already spin-general. Machine precision vs the molecularcompute_gradient_uksin the isolated limit (PBE/PBE0/B3LYP); periodic FD at the grid-fixed floor on a gapped (dilute) open-shell chain. Two DFT-specific caveats, both inherited from vibe-qc’s molecular DFT gradient, not defects: (i) the DFT force satisfies the translational sum rule only to the grid-fixed floor (~1e-6) – the neglected Becke weight derivative is precisely the term that would make it exact – soΣ_β grad = 0holds to that tolerance for KS/UKS (machine-exact for HF); (ii) a metallic (dense) open-shell chain is spin-unstable under a GGA, so a finite-difference check there is ill-posed (the displaced SCFs jump spin-broken branches) while the analytic force stays well-defined – validate periodic UKS on a gapped cell.MP2 + UMP2 + CCSD – implemented and validated (
run_ccm_mp2_gradient/run_ccm_ump2_gradient/run_ccm_ccsd_gradient): the relaxed-density gradients, derived in §1.8 (MP2/UMP2) and §1.9 (CCSD) below. The structural statement is the same as for HF/KS: replaceP, W, Γby the method’s relaxed one- and two-particle densities (built from the CCM amplitudes, the Λ multipliers, and the CCM-CPHF/Z-vector orbital response), folded and scattered through the identical adjointsL₂ᵀ,L_Vᵀ,L₄ᵀ. Open-shell CCSD (UCCSD) and the(T)correction to the forces remain outlook; cf. the CASSCF general-Γimplementation precedent (_casscf.py).
The dense-n_pad⁴ regime confines the analytic four-center to small / 1-D / 2-D
clusters; genuine 3-D analytic forces need a scalable weighted ERI-gradient C++
kernel (a build_jk_ccm_weighted sibling) – a later milestone, not part of this
Methods section.
1.8 The MP2 relaxed-density gradient (post-HF forces)¶
The CCM-MP2 correlation energy (mp2.py)
is the ordinary closed-shell RMP2 expression evaluated on the canonical CCM-RHF
orbitals and the WSSC-folded four-center:
E₂ = Σ_ijab t̃_ijab g_iajb , g_iajb = (ia|jb)^CCM (chemist order),
t_ijab = g_iajb / D_ijab , D_ijab = ε_i + ε_j − ε_a − ε_b ,
t̃_ijab = 2 t_ijab − t_ijba , (1.8a)
i,j,k occupied, a,b,c virtual, p,q,r,s general CCM MOs. Every ingredient of
(1.8a) is a folded quantity (g from L₄, ε/C from the folded Roothaan-Hall
problem), so by §1.2 the AO-derivative pieces of dE₂/dR fold through the same
adjoints as HF; the new work is the response of C and ε, handled by the
standard MP2 Lagrangian (Pople-Krishnan-Schlegel-Binkley 1979; Handy-Schaefer 1984;
Helgaker-Jørgensen-Olsen Ch. 12), assembled here with every matrix CCM-folded.
(1.8.1) Amplitude stationarity (no amplitude response). E₂ is the stationary
value of the (generalized) Hylleraas functional
J[t] = 2 Σ t̃_ijab g_iajb + Σ t̃_ijab (Q t)_ijab ,
(Q t)_ijab = Σ_c [ F_ac t_ijcb + F_bc t_ijac ] − Σ_k [ F_ik t_kjab + F_jk t_ikab ] , (1.8b)
with F the MO Fock matrix: δJ/δt = 0 ⇔ Q t̃ = −g̃ ⇔ t = g/D in the canonical
basis (F = diag(ε)), and J[t*] = E₂. Stationarity in t removes any dt/dR
term from the gradient; only the explicit integral derivatives and the orbital
response survive. Because (1.8b) is written with full Fock blocks F_oo, F_vv
(not the diagonal ε), the functional – hence the derivation – is invariant under
rotations within the occupied and within the virtual spaces, which is what licenses
evaluating all final expressions in the canonical basis with the symmetric
orthonormality gauge for the oo/vv response blocks.
(1.8.2) Orbital response and the Z-vector. Parametrize dC/dR = C U with
U + Uᵀ = −S̃, S̃_pq ≡ (Cᵀ (∂S^CCM/∂R) C)_pq (orthonormality), and let
superscript [R] denote AO-derivative-at-fixed-C MO transforms (e.g.
F^[R] = Cᵀ(∂h^CCM/∂R + ∂G^CCM[P]/∂R|_P)C). Differentiating (1.8a) and collecting
the U-independent, occupied-rotation, virtual-rotation, and ε-response pieces
gives the intermediates (all g blocks folded):
d_ij = −2 Σ_kab t̃_ikab t_jkab , d_ab = +2 Σ_ijc t̃_ijac t_ijbc ,
X_pi = Σ_jab t̃_ijab g_pajb , Y_pa = Σ_ijb t̃_ijab g_ipjb , (1.8c)
(d is the unrelaxed MP2 correction density; one checks ∂E₂/∂ε_p = d_pp).
The occupied-virtual rotations U_ai cannot be eliminated by the orthonormality
alone; their coefficient defines the MP2 orbital-rotation gradient (the Lagrangian
right-hand side)
L_ai = 4 X_ai − 4 Y_ia + 4 (Cᵀ G^CCM[C d C ᵀ] C)_ai , (1.8d)
with G^CCM[·] = J^CCM − ½K^CCM the folded Fock response and d = d_oo ⊕ d_vv.
Instead of solving the coupled-perturbed equations once per nuclear coordinate,
one Z-vector solve (Handy-Schaefer 1984) handles all of them:
M z = L , M_{ai,bj} = (ε_a − ε_i) δ_ab δ_ij + A_{ai,bj} ,
A_{ai,bj} = 4(ai|bj)^CCM − (ab|ij)^CCM − (aj|ib)^CCM , (1.8e)
– the CCM-CPHF equation: the same electronic Hessian A as molecular CPHF,
built from the folded four-center; M is symmetric, and for the dense validation
regime it is solved directly.
(1.8.3) Assembled relaxed densities. Substituting z back and moving every
S̃-proportional term into the Pulay slot yields the gradient in exactly the
HF form (1.1), with three density replacements. The relaxed one-particle
correction (MO basis, symmetric)
P^Δ = C [ d_oo −½z ᵀ ]
[ −½z d_vv ] C ᵀ , P_tot = P_SCF + P^Δ ; (1.8f)
the two-particle density Γ_tot = Γ_HF + Γ_sep + Γ_ns with the separable
(Fock-response) and non-separable (amplitude) parts
Γ_sep,μνλσ = 2 P^Δ_μν P_λσ − P^Δ_μλ P_νσ ,
Γ_ns,μνλσ = 4 Σ_ijab t̃_ijab C_μi C_νa C_λj C_σb ; (1.8g)
and the energy-weighted density W_tot = W_HF + W^Δ with (MO blocks,
symmetric; G̃ ≡ Cᵀ G^CCM[P^Δ] C with the full P^Δ of (1.8f))
W^Δ_ij = X_ij + X_ji + ½ d_ij (ε_i + ε_j) + 2 G̃_ij ,
W^Δ_ab = Y_ab + Y_ba + ½ d_ab (ε_a + ε_b) ,
W^Δ_ia = W^Δ_ai = 2 Y_ia − ½ z_ai ε_i . (1.8h)
The total CCM-MP2 gradient is then the HF contraction pipeline verbatim –
(1.8f)-(1.8h) fed to the same L₂ᵀ/L_Vᵀ/L₄ᵀ adjoint cores of §1.4 plus the
V_nn term of §1.5:
dE_MP2/dR_β = Σ P_tot ∂h^CCM/∂R_β + ½ Σ Γ_tot ∂(μν|λσ)^CCM/∂R_β
− Σ W_tot ∂S^CCM/∂R_β + ∂V_nn^CCM/∂R_β . (1.8i)
This is the paper’s structural claim for post-HF forces: the WSSC fold commutes
with the entire relaxed-density machinery – amplitudes, CPHF/Z-vector, and
density assembly are the molecular equations on folded integrals, and the final
AO contractions reuse the HF adjoints unchanged. The translational sum rule
(Theorem 1.6.1) applies verbatim (its proof used only translation invariance of
E_CCM, which holds for E₂ too).
Validation (all numbers from real runs, H₂ chain STO-3G unless noted).
Response identity (isolates
d,z, and the Z-vector solve from the geometric machinery): for a random symmetric one-electron perturbationh^CCM → h^CCM + λV, the analyticTr[P_tot V]matches the finite-differencedE_MP2/dλto2.8e-11at(2,1,1)(the relaxation correction itself is7.7e-6– captured to 5 significant digits past it).Geometric gate at
(3,1,1):run_ccm_mp2_gradientvs the FD MP2 gradient (ccm_numerical_gradientwith a tight-SCF MP2 runner) shows textbook O(h²) truncation –4.3e-6 → 1.1e-6 → 2.7e-7forh = 2e-3, 1e-3, 5e-4– i.e. the analytic value is exact and the residual is pure FD truncation.Isolated molecular limit,
(1,1,1)80-bohr box: matches a finite difference of vibe-qc’s molecularrun_rhf + run_mp2total energy (an independent implementation – C++ MP2 on canonical AO ERIs, no CCM code shared) to3.6e-9ath = 1e-4, the FD floor.Sum rule:
Σ_β dE_MP2/dR_β = 0to6.7e-16.
Caveat – near-degenerate SCF branch pairs break the FD reference, not the
analytic force. At (2,1,1) the H₂-chain CCM-RHF ground state is
translation-symmetry-broken (‖T P Tᵀ − P‖ ≈ 6e-3 for the one-cell translation
T), and the two symmetry-partner solutions are split by only ~8e-12 Ha
(the folded integrals’ known residual cyclic-invariance imperfection lifts the
exact degeneracy). Displaced-geometry SCFs then land on either branch
unpredictably; E_HF is branch-insensitive (~1e-11) but E₂ differs by
~8e-6 between branches, so the FD MP2 gradient at (2,1,1) is erratic while
the FD HF gradient is clean. The analytic gradient is well-defined on the branch
the reference SCF converged to. Same class as the UKS spin-branch FD caveat of
§1.7: gate FD comparisons on a system with a unique SCF solution (the (3,1,1)
chain here).
(1.8.4) Open-shell UMP2. The unrestricted gradient follows the same template
with spin-resolved blocks (occupation 1 per spin orbital throughout; σ ∈ {α,β},
σ̄ the opposite spin). Amplitudes per the UMP2-CCM energy
(ump2.py):
t^σσ_ijab = ḡ^σσ_iajb / D^σσ , ḡ^σσ_iajb = (ia|jb)^σσ − (ib|ja)^σσ ,
t^αβ_ijab = g^αβ_iajb / D^αβ (i,a ∈ α; j,b ∈ β),
E₂ = ¼ Σ t^αα ḡ^αα + ¼ Σ t^ββ ḡ^ββ + Σ t^αβ g^αβ . (1.8j)
The intermediates absorb the spin factors (same-spin coefficient 1, cross-spin 2):
d^σ_oo = −½ t^σσ t^σσ − t^σσ̄ t^σσ̄ , d^σ_vv mirror (+) ,
X^σ_pi = Σ t^σσ ḡ^σσ_pajb + 2 Σ t^σσ̄ g^σσ̄_pajb , Y^σ_pa likewise on (ip|jb),
L^σ_ai = X^σ_ai − Y^σ_ia + 2 (C^σᵀ G^σ[D^α_ur, D^β_ur] C^σ)_ai , (1.8k)
with the spin-resolved Fock response G^σ[X^α,X^β] = J[X^α+X^β] − K[X^σ]. The
Z-vector is the spin-coupled CCM-CPHF solve on the stacked ov space,
M [z^α; z^β] = [L^α; L^β] ,
M^σσ_{ai,bj} = (ε^σ_a−ε^σ_i)δδ + 2(ai|bj)^σσ − (ab|ij)^σσ − (aj|ib)^σσ ,
M^σσ̄_{ai,bj} = 2 (ai|bj)^σσ̄ , (1.8l)
and the assembled densities mirror (1.8f)–(1.8h) per spin: P^Δσ with ov block
−½z^σ; W^Δσ_oo = ¼(X^σ+X^σᵀ) + ½d^σ_oo(ε+ε) + (C^σᵀ G^σ[P^Δα,P^Δβ] C^σ)_oo,
W^Δσ_vv = ¼(Y^σ+Y^σᵀ) + ½d^σ_vv(ε+ε), W^Δσ_ov = ½Y^σ_ia − ½z^σ_ai ε^σ_i;
Γ_ns = 2t^αα⊗(C^α)⁴ + 2t^ββ⊗(C^β)⁴ + 4t^αβ⊗(C^α)²(C^β)²;
Γ_sep = 2P^Δ_tot⊗P_tot − 2P^Δα⊗P^α − 2P^Δβ⊗P^β (exchange slot). The final
contraction is (1.8i) with the UHF Γ_HF of (1.7) and W = W^α+W^β+W^Δα+W^Δβ.
Every block’s closed-shell reduction reproduces the RMP2 set exactly
(t^αβ = t, t^σσ = t − t_swap, X^σ = 2X_cs, z^σ = ½z_cs, …), which is also
pinned numerically below.
Validation (UMP2). (1) Closed-shell reduction: the UMP2 pipeline on the
closed-shell H₂ chain (3,1,1) equals the RMP2 gradient to 6.2e-15 (machine ε;
every spin factor pinned). (2) Response identity on the open-shell HeH chain
(3,1,1) (doublet, 9 e⁻): 1.7e-10. (3) Geometric gate (HeH (3,1,1)):
O(h²): 4.9e-6 → 1.2e-6 → 3.1e-7 for h = 2e-3, 1e-3, 5e-4. (4) Isolated
limit (HeH/6-31G, 80-bohr box): matches the FD of vibe-qc’s molecular
run_uhf + run_ump2 to 1.1e-9 at h = 1e-4 (the FD floor). (5) Sum rule:
1.6e-14.
Open-shell UMP2 is implemented and validated. CCSD relaxed-density forces are next (§1.9).
1.9 The CCSD relaxed-density gradient (post-HF forces)¶
CCSD closes the post-HF forces line. The energy
(ccsd.py) is a spin-orbital CCSD
(Stanton-Gauss-Watts-Bartlett 1991) evaluated on the canonical CCM-RHF orbitals
and the WSSC-folded four-center; every MO integral is a folded quantity, so by
§1.2 the fold commutes with the entire relaxed-density machinery (Λ, the relaxed
1-/2-particle densities, and the CCM-CPHF orbital response). The gradient is again
the HF contraction pipeline (1.1) verbatim, with the CCSD relaxed densities:
dE_CCSD/dR = Σ (P_SCF+P^Δ) ∂h^CCM/∂R + ½ Σ (Γ_HF+Γ_sep+Γ_ns) ∂(μν|λσ)^CCM/∂R
− Σ (W_HF+W^Δ) ∂S^CCM/∂R + ∂V_nn^CCM/∂R . (1.9a)
(1.9.1) The CCSD Lagrangian and its densities. With the converged amplitudes
T = {t₁,t₂} and the de-excitation multipliers Λ = {λ₁,λ₂} (Handy-Schaefer
1984), the CCSD gradient is the relaxed-density gradient of Scheiner, Scuseria,
Lee, Rice & Schaefer, J. Chem. Phys. 87, 5361 (1987) and Gauss & Cremer,
Chem. Phys. Lett. 138, 131 (1987). Every ingredient of (1.9a) is a partial
derivative of the CCSD correlation Lagrangian
L(T,Λ; f, W) = E_corr(T; f, W) + ⟨Λ, Ω(T; f, W)⟩ , (1.9b)
(Ω the projected T-amplitude residual, f/W the folded 1-/2-electron MO
integrals), taken at the stationary point (∂L/∂T = ∂L/∂Λ = 0):
the response 1-PDM
γ = ∂L/∂f(blocksd_oo, d_vv, d_ov = λ₁, d_vo);the non-separable 2-PDM (cumulant)
Γ_ns = ∂L/∂W;the generalized Fock
GF = ∂L/∂U(orbital variationC → C(1+U)with the reference Fock rebuilt fromh_core, so theG[P_ref]reference-density response under the rotation is included).
(1.9.2) The Z-vector (CCM-CPHF). The orbital-rotation gradient is the
antisymmetric ov block of the generalized Fock, X_ai = GF_ai − GF_ia, and the
orbital relaxation solves the same CCM-CPHF equation as MP2/HF (Eq. 1.8e):
M z = X, M_{ai,bj} = (ε_a−ε_i)δδ + 4(ai|bj)^CCM − (ab|ij)^CCM − (aj|ib)^CCM.
(The X_GF computed from a rigid Fock transform misses the reference response;
rebuilding f from h_core supplies it, equivalently the CCSD analog of MP2’s
+4G^CCM[γ] term, verified numerically to 1.1e-9.) The relaxed 1-PDM is then
P^Δ = C[γ + (−½z in ov/vo)]Cᵀ, P_tot = P_SCF + P^Δ.
(1.9.3) Assembled 2-PDM and energy-weighted density. As for MP2, the total
2-PDM splits Γ_tot = Γ_HF + Γ_sep + Γ_ns with Γ_sep = 2P^Δ⊗P − P^Δ⊗P_swap
(separable coupling of P^Δ with the reference) and Γ_ns the CCSD cumulant.
The energy-weighted (Pulay) density is W_tot = W_HF + W^Δ with
W^Δ = ¼ C(GF + GFᵀ)Cᵀ , (1.9c)
which is −dE_corr/dS^CCM via the metric re-orthonormalization U^S = −½ Cᵀ(∂S)C
(the generalized Fock already carries the orbital-relaxation weighting, so no
separate z·ε block appears, unlike MP2’s explicit W^Δ_ov).
(1.9.4) Implementation: the robust complex-step route. The CCSD energy is a
dense spin-orbital n_so⁶ path (small / 1-D / 2-D clusters only); the gradient
matches that regime and takes the most provably correct route to the relaxed
densities. Because L (1.9b) is a polynomial in the integrals, the complex-step
derivative Im L(x + iε)/ε is exact to machine precision (Squire & Trapp,
SIAM Rev. 40, 110 (1998)), so γ = ∂L/∂f, Γ_ns = ∂L/∂W, and
GF = ∂L/∂U are obtained without any hand-derived CC density algebra, and Λ
from the exact complex-step transpose-Jacobian of Ω (no hand-coded Λ equation).
The final AO contractions reuse the identical L₂ᵀ/L_Vᵀ/L₄ᵀ cores and the same
CCM-CPHF A. This is O(n_so²)/O(n_so⁴) Lagrangian evaluations, affordable for
the validation clusters and philosophically consistent with the dense CCSD energy;
an iterative Λ solver with closed-form densities is the scalable-kernel follow-on.
Validation (H₂ chain STO-3G, CCSD without (T)). (1) Relaxed-1-PDM response
identity (h^CCM → h^CCM + λV, re-solving reference + CCSD): Tr[P_tot V] vs FD
dE_CCSD/dλ to 1.9e-9; this isolates γ + the Z-vector orbital relaxation.
(2) 2-PDM response ∂E_corr/∂W: Σ Γ_ns V₄ to 4.3e-12 (frozen-orbital).
(3) W response ∂E/∂S: −Tr[W_tot V_S] to 9.2e-9. (4) Geometric gate
(3,1,1): run_ccm_ccsd_gradient vs FD, textbook O(h²): 4.4e-6 → 1.1e-6 → 3.4e-7 for h = 2e-3, 1e-3, 5e-4. (5) Isolated (1,1,1) limit: matches the
FD of vibe-qc’s molecular run_ccsd (C++ spin-adapted CCSD, no shared code) to
3.6e-9 at h = 1e-4. (6) Sum rule: 2.4e-15. The same (2,1,1)
branch-pair FD caveat as MP2 (§1.8) applies; gate on (3,1,1).
Open-shell (UCCSD) and the (T) correction to the forces follow the same
relaxed-density template; they remain follow-on work.
2. Implementation map¶
Target: python/vibeqc/periodic/ccm/gradient_analytic.py,
run_ccm_rhf_gradient / run_ccm_uhf_gradient / run_ccm_rks_gradient /
run_ccm_uks_gradient / run_ccm_mp2_gradient / run_ccm_ump2_gradient /
run_ccm_ccsd_gradient
(ccm, *, method="aiccm2026dev-a", ...) -> (n_basis_atoms, 3), exported from
vibeqc.periodic.ccm. The four term cores (kinetic, nuclear attraction, overlap
Pulay, two-electron) take explicit P/W/Γ arrays, so the RHF/UHF/KS/MP2/CCSD
drivers differ only in how they build those (§1.7, §1.8, §1.9). Build order (each step finite-difference-checkable
against ccm_numerical_gradient; the gradient is all-or-nothing, so each term is
gated in isolation before the total):
∂V_nn^CCM/∂R(§1.5) – direct pair-list differentiation; gate vs FD ofccm_nuclear_repulsion.1-e
Σ P ∂h^CCM/∂R(§1.4L₂ᵀforT;L_VᵀforVincl. the HF-nucleus term).Overlap Pulay
−Σ W ∂S^CCM/∂R(§1.4L₂ᵀ).2-e
Σ Γ ∂(μν|λσ)^CCM/∂R(§1.4L₄ᵀ+two_electron_gradient_casscf).Total vs
ccm_numerical_gradienton the H₂ chain(2,1,1)/(4,1,1)STO-3G to ~1e-6 Ha/bohr; per-cell forces sum ≈ 0 (Theorem 1.6.1).
Molecular primitives (no new C++): nuclear_repulsion_gradient,
one_electron_gradient_contribution, overlap_gradient_contribution,
two_electron_gradient_casscf, compute_external_charge_density_gradient
(bindings.cpp 2753-2870), all driven on the
padded Molecule+BasisSet with the adjoint-scattered P_pad, W_pad,
Γ_pad, then image-summed via pad_atom_of + atom_beta (§1.3).
Two implementation subtleties worth recording, both load-bearing for exactness:
Kinetic isolation.
T^CCMandV^CCMcarry different folds, so they cannot be driven by the combinedT+Vone-electron primitive together.∂Tis obtained fromone_electron_gradient_contribution(..., effective_charges=0), which zeroes theV_nederivative kernel and leaves the pure kinetic gradient.8-fold symmetrization of
Γ_pad.two_electron_gradient_casscfsums over unique shell quartets ×degeneracy and assumes the supplied AO 2-RDM carries the full 8-fold ERI permutation symmetry. TheL₄ᵀscatter placesΓ̄into distinct padded slots, breakingμ↔ν/λ↔σsymmetry on the padded layout; since∂eri_pad/∂Ris itself 8-fold symmetric,Σ Γ_pad ∂eri = Σ sym₈(Γ_pad) ∂eri, soΓ_padis 8-fold symmetrized (then scaled by ½) before the call.
Validation (RHF, implemented)¶
python/vibeqc/periodic/ccm/gradient_analytic.py ·
tests/test_ccm_gradient_analytic.py. Three independent checks on STO-3G:
Per-term, isolated. Each of the five terms (
V_nn,T,V_ne, overlap Pulay, two-electron) matches a finite difference of its own fixed-density contraction to≈ 1e-9Ha/bohr on the H₂ chain(2,1,1)-(4,1,1).Total vs the full-energy FD gate.
run_ccm_rhf_gradientmatchesccm_numerical_gradientwith textbook O(h²) convergence – the residual halves by 4× per halving ofh(4.25e-6 → 1.06e-6 → 2.66e-7 → 6.65e-8 → 1.06e-8forh = 2e-3 … 1e-4on(3,1,1)), i.e. the analytic value is exact and the gap is pure finite-difference truncation. (Requires the tight SCF of the remark above.)Isolated molecular limit (analytic vs analytic). In a
(1,1,1)80-bohr box the Γ-CCM analytic gradient reproduces vibe-qc’s molecular analytic RHF gradient (compute_gradient) to machine precision (5.6e-16) – no finite difference involved. The Γ-CCM force reduces exactly to the molecular force in the molecular limit.
MP2 validation (response identity, geometric O(h²) gate, independent molecular
cross-check, sum rule, and the (2,1,1) branch-pair FD caveat): §1.8.
References¶
T. Helgaker, P. Jørgensen, J. Olsen, Molecular Electronic-Structure Theory (Wiley, 2000) – analytic gradient theory, Ch. 10 and Eq. 12.5.7 (the general AO 2-RDM ERI-gradient contraction).
P. Pulay, “Ab initio calculation of force constants and equilibrium geometries in polyatomic molecules. I.”, Mol. Phys. 17, 197 (1969) – the Hellmann-Feynman/Pulay split and the energy-weighted density.
J. A. Pople, R. Krishnan, H. B. Schlegel, J. S. Binkley, “Derivative studies in Hartree-Fock and Møller-Plesset theories”, Int. J. Quantum Chem. Symp. 13, 225 (1979) – the MP2 gradient (§1.8).
N. C. Handy, H. F. Schaefer III, “On the evaluation of analytic energy derivatives for correlated wave functions”, J. Chem. Phys. 81, 5031 (1984), doi:10.1063/1.447489 – the Z-vector elimination of the orbital response (§1.8, Eq. 1.8e; §1.9).
A. C. Scheiner, G. E. Scuseria, J. E. Rice, T. J. Lee, H. F. Schaefer III, “Analytic evaluation of energy gradients for the single and double excitation coupled cluster (CCSD) wave function”, J. Chem. Phys. 87, 5361 (1987) – the CCSD relaxed-density gradient (§1.9).
J. Gauss, D. Cremer, “Analytical evaluation of energy gradients in quadratic configuration interaction theory”, Chem. Phys. Lett. 138, 131 (1987) – the CC/QCI relaxed-density gradient (§1.9).
J. F. Stanton, J. Gauss, J. D. Watts, R. J. Bartlett, “A direct product decomposition approach for symmetry exploitation in many-body methods. I. Energy calculations”, J. Chem. Phys. 94, 4334 (1991) – the spin-orbital CCSD amplitude equations (§1.9, the folded CCSD kernel).
W. Squire, G. Trapp, “Using complex variables to estimate derivatives of real functions”, SIAM Rev. 40, 110 (1998) – the exact complex-step differentiation used for the CCSD relaxed densities (§1.9.4).
M. F. Peintinger, T. Bredow, “The Cyclic Cluster Model at Hartree-Fock Level”, J. Comput. Chem. 35, 839 (2014), doi:10.1002/jcc.23550 – the CCM/WSSC weighting (eqs 5-6, 12-13, 18).