How Does a Stability Analysis Work?¶
An SCF calculation stops as soon as the energy is stationary with respect to mixing occupied and virtual orbitals — the Hartree–Fock (or Kohn–Sham) analogue of Brillouin's theorem. That condition, however, only guarantees a stationary point in orbital-rotation space. It does not guarantee that the point is a minimum.
A converged determinant can fall into one of several categories:
- Genuinely stable — a true local minimum; no lower-energy rearrangement of the orbitals exists.
- RHF→RHF unstable — a lower-energy solution exists within the same spin-restricted, real-orbital space, often caused by an artificial symmetry constraint.
- RHF→UHF unstable — a lower-energy spin-unrestricted solution exists; common for biradicaloid systems, stretched bonds, and some transition-metal complexes.
- Complex unstable — a lower-energy solution exists only when complex-valued orbital coefficients are allowed; rare, and mostly relevant to certain symmetric or periodic systems.
The Orbital Hessian¶
To tell these cases apart, Gaussian examines the second derivative of the energy with respect to orbital-rotation parameters — the electronic (orbital) Hessian, commonly called the stability matrix. This object is built from exactly the same two blocks, A and B, that appear in RPA/TDHF and CIS excited-state theory, which is why stability analysis and excited-state calculations share so much underlying machinery.
- If the relevant combination of
AandBis positive definite, the tested channel is stable. - If it has a negative eigenvalue, that eigenvector points directly toward a lower-energy determinant.
Why Iterative Diagonalization?¶
The full stability matrix has a dimension of (occupied × virtual orbitals), which becomes far too large to diagonalize directly for any realistic molecule. Gaussian instead uses a Davidson-type iterative solver (visible in the log as the CISAX routine): a small trial subspace is built, its projected matrix is diagonalized, and new trial vectors are added from the residuals until only the lowest few eigenvalues — the ones that matter for stability — have converged.
Converged SCF Wavefunction
│
▼
Form Trial Orbital-Rotation Vectors
│
▼
Davidson Iterations:
build reduced matrix → diagonalize →
check residuals → expand subspace
│
▼
Lowest Eigenvalues Converged
│
▼
Classify by Spin (⟨S²⟩) and Symmetry
│
▼
All Eigenvalues ≥ 0 ?
│ │
Yes No
│ │
Stable Unstable
│ │
Done Rotate orbitals along
softest eigenvector,
restart SCF, repeat
What "Stable=Opt" Adds¶
Used alone, the stable keyword defaults to Stable=Opt. If any instability is found, Gaussian does not just report it — it automatically displaces the orbitals along the softest (most negative) eigenvector, forms a new SCF guess from the rotated orbitals, and reconverges. This whole cycle repeats until a genuinely stable wavefunction is found or an internal iteration limit is reached, so that the wavefunction handed off to any subsequent calculation is trustworthy.