Unrestricted Hartree-Fock (UHF) Equations

For open-shell systems, UHF uses separate spatial orbitals for alpha () and beta () electrons. This breaks spin symmetry but allows different spatial distributions for each spin.

Pople-Nesbet Equations

The UHF Fock equations are:

where , are the alpha and beta Fock matrices, , are the molecular orbital coefficient matrices, is the overlap matrix, and , are the orbital energy vectors.

Fock Matrix Construction

The Fock matrices are:

Components

TermExpressionNotes
Core Hamiltonian Same for both spins; kinetic + nuclear attraction
Coulomb From total density
Exchange alpha From alpha density only
Exchange beta From beta density only

The key difference from RHF:

  • RHF: (factor 2 from spin summation)
  • UHF: uses total density (no factor 2); exchange uses respective spin density

Density Matrices

The alpha and beta density matrices are:

where and are the number of alpha and beta electrons (occupied orbitals).

Electronic Energy

The total electronic energy is the sum of alpha and beta contributions:

Expanding:

The total energy includes nuclear repulsion:

SCF Iteration Procedure

  1. Initial guess: Build initial , from core Hamiltonian or Hückel/SAD
  2. Build Fock matrices: ,
  3. Solve eigenproblems: Diagonalize and similarly for
  4. Form new densities: , from occupied orbitals
  5. Check convergence: RMS density change
  6. Mix/damp/DIIS: Apply acceleration if enabled
  7. Repeat until convergence

Convergence Criteria

OpenQuantum uses the combined RMS density change:

Default threshold: .

Acceleration Methods

MethodDescription
DIISPulay's Direct Inversion in Iterative Subspace (default, starts at iteration 2)
Level shiftingAdds shift to virtual orbital energies to prevent oscillations
Density damping
Fermi broadeningFractional occupation near Fermi level for difficult convergence
QC-SCFQuadratic convergence (Newton-Raphson) with spin-parametric code

Implementation in OpenQuantum

Fock Build (crates/scf/src/fock.rs::build_uhf_fock_matrices)

#![allow(unused)]
fn main() {
pub fn build_uhf_fock_matrices(
    h_core: &DMatrix<f64>,
    density_alpha: &DMatrix<f64>,
    density_beta: &DMatrix<f64>,
    eri: &(impl IntegralProvider + Sync),
) -> (DMatrix<f64>, DMatrix<f64>) {
    // Total density P^T = P^α + P^β
    let total_density = density_alpha + density_beta;

    // Coulomb matrix from total density (same for both spins)
    let j = build_coulomb_matrix(&total_density, eri);

    // Exchange matrices (different for each spin)
    let k_alpha = build_exchange_matrix(density_alpha, eri);
    let k_beta  = build_exchange_matrix(density_beta, eri);

    // F^α = H + J - K^α
    let fock_alpha = h_core + &j - &k_alpha;

    // F^β = H + J - K^β
    let fock_beta = h_core + &j - &k_beta;

    (fock_alpha, fock_beta)
}
}

SCF Driver (crates/scf/src/uhf.rs::uhf_scf)

The main loop handles:

  • Separate alpha/beta diagonalization with generalized_eigensolve
  • DIIS with combined error vectors
  • Level shifting on both Fock matrices
  • Spin contamination calculation via compute_s_squared
  • Convergence checking on combined RMS density change

Initial Guess

OpenQuantum supports three initial guesses for UHF:

  1. Core Hamiltonian (default): Diagonalize in orthogonal basis; same MOs for both spins, different occupations
  2. Extended Hückel: Approximate MO coefficients from atomic orbital parameters
  3. SAD (Superposition of Atomic Densities): Build initial density from atomic fragments

Comparison with RHF

AspectRHFUHF
OrbitalsSingle set (doubly occupied)Separate and sets
ExchangeOne matrixTwo: ,
Coulomb (spin sum) from
Spin symmetryPure Contaminated
CostLower~2× RHF (two Fock builds, two diagonalizations)
Use caseClosed-shellOpen-shell, bond breaking, radicals

ROHF Connection

Restricted open-shell HF (ROHF) uses a single set of orbitals for both spins but with different occupation numbers. The Fock matrix is a linear combination:

ROHF maintains spin purity () but often gives higher energies than UHF for open-shell systems.

Further Reading

  • Pople & Nesbet, "Self-consistent orbitals for radicals" (1954)
  • Szabo & Ostlund, Modern Quantum Chemistry, Ch. 3
  • Helgaker, Jørgensen & Olsen, Molecular Electronic-Structure Theory, Ch. 10