Calculate FCI / CASCI Reference Energies

Note

This is a how-to guide on computing classical reference energies with Configuration Interaction (FCI / CASCI). These are useful baselines for comparing to FAST-VQE, BEAST-VQE, and related algorithms.

Goal

Run an FCI (full space) or CASCI (complete active space) 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).

Prerequisites

Steps

  1. 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 a GroundStateProblemCalculator.

    import qrunch as qc
    
    ci_calculator = (
        qc.calculator_creator()
        .configuration_interaction()
        .standard()     # FCI (full space) or CASCI (if problem has an active space)
        .create()
    )
    
  2. Run the CI calculation

    result = ci_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).

  • .paired() Paired CI (electron-pair model). This is the classical reference for BEAST-VQE.

  • .orbital_optimized_paired() 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()
    .orbital_optimized_paired()     # OO-pFCI
    .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.

Verify the Result

  • Use these numbers to benchmark your VQE runs (FAST-VQE, BEAST-VQE, OO-BEAST-VQE, …).

See Also