Calculate Classical Reference Energies (CI, CC)
Note
This is a how-to guide on computing classical reference energies with configuration interaction (FCI / CASCI) and coupled cluster (CCSD / CCSD(T)) methods. These are useful baselines for comparing to FAST-VQE, BEAST-VQE, and related algorithms.
Goal
Run an FCI (full space), CASCI (complete active space), TrimCI (Trimmed configuration interaction), CCSD, or CCSD(T) calculation on a prepared ground-state problem and obtain the reference ground-state energy.
Why This Matters
FCI is the non-relativistic exact solution (for a given one-electron basis) within the Born–Oppenheimer approximation. It serves as target reference for FAST-VQE when the full orbital space is tractable.
With an active space, the same method is termed CASCI and is the natural classical reference to compare against VQE runs in that active space.
Paired CI variants provide classical references for BEAST families (bosonic/paired-electron models).
CCSD and CCSD(T) are widely used size-consistent methods that scale more favourably than FCI and provide high-accuracy reference energies for larger systems.
Prerequisites
A ground-state problem (see Construct a Ground State Energy Problem)
Steps
Quick start: Build a standard CI calculator (FCI/CASCI)
The
calculator_creator()is a fluent builder (see Understanding and Using Kvantify Qrunch’s Fluent Builder Pattern) that configures and returns aGroundStateProblemCalculator.import qrunch as qc ci_calculator = ( qc.calculator_creator() .configuration_interaction() .standard() # FCI (full space) or CASCI (if problem has an active space) .create() )
Quick start: Build a coupled cluster calculator (CCSD or CCSD(T))
import qrunch as qc ccsd_calculator = ( qc.calculator_creator() .coupled_cluster() # Narrow to coupled cluster methods .ccsd() # Narrow to CCSD or .ccsd_t() for CCSD(T) .create() )
Quick start: Build a Møller Plesset perturbation theory to second order
import qrunch as qc mp2_calculator = ( qc.calculator_creator() .moller_plesset_2() # Narrow to MP2 .create() )
Run the calculation
result = calculator.calculate(ground_state_problem)
The result is a
GroundStateProblemCalculatorResult, containing (among others):Electronic energy of the active electrons
Electronic energy of all electrons
Total molecular energy
Available CI Variants
Pick one variant after .configuration_interaction():
.standard()Standard FCI/CASCI. This is the classical reference for FAST-VQE (full space → FCI; active space → CASCI).
.trim()TrimCI. This is an iterative selected-CI algorithm that builds a compact variational determinant subspace by alternating between Hamiltonian-guided expansion and coefficient-based trimming.
.paired_trim()Paired TrimCI. This is a TrimCI variant where only paired alpha/beta excitations are used during expansion. This restricts the CI space to determinants reachable via simultaneous identical excitations in both spin channels.
.paired_electron_approximation()Paired CI (electron-pair model). This is the classical reference for BEAST-VQE.
.paired_with_orbital_optimization()Orbital-optimized paired CI. This is the classical reference for OO-BEAST-VQE.
The orbital-optimized variants have additional options:
import qrunch as qc
ci_calculator = (
qc.calculator_creator()
.configuration_interaction()
.paired_with_orbital_optimization()
.with_options(options=qc.options.OrbitalOptimizerOptions(...))
.with_basin_hopping_options(options=qc.options.BasinHoppingOptions(...))
.create()
)
See OrbitalOptimizerOptions for details on the available options.
See BasinHoppingOptions for details on the available options.
Available Coupled Cluster Variants
Pick one variant after .coupled_cluster():
.ccsd()CCSD — coupled cluster with singles and doubles. A size-consistent method that captures dynamic correlation and scales as \(\mathcal{O}(N^6)\).
.ccsd_t()CCSD(T) — CCSD augmented with a perturbative triples correction. Often called the “gold standard” of quantum chemistry for single-reference systems scales as \(\mathcal{O}(N^7)\).
Both methods operate within the orbital space defined by the ground_state_problem
(i.e., an active-space restriction is respected, with the inactive energy included automatically).
Verify the Result
Use these numbers to benchmark your VQE runs (FAST-VQE, BEAST-VQE, OO-BEAST-VQE, …).