OpenQuantum

OpenQuantum

Rust

OpenQuantum is an ab initio molecular orbital (MO) calculation program written in Rust. It performs Hartree–Fock, Kohn–Sham DFT, and post–Hartree–Fock calculations within the Linear Combination of Atomic Orbitals (LCAO) framework. Supports RHF, UHF, ROHF, and RKS/UKS for closed- and open-shell molecules; MP2 and CCSD(T) correlation energies; density functional theory with GGA, meta-GGA, hybrid, and range-separated hybrid functionals; implicit solvation (PCM-family, ddCOSMO/ddPCM, SMD) with analytical gradients and Hessians; geometry optimization (BFGS, Berny RFO, primitive/DLC/TRIC internal coordinates) with analytic gradients; IRC and NEB pathways; harmonic frequency analysis with analytical Hessians and thermochemistry; and effective core potentials (ECPs).

Note: The project is under active development and not yet ready for production use.

Feature Highlights

CategoryFeatures
Molecular InputXYZ Cartesian geometry in Angstrom or Bohr units
Basis SetsSTO-3G, 3-21G, 6-31G, 6-31G*, 6-31G**, 6-31+G*, 6-311G, cc-pVDZ, cc-pVTZ, cc-pVQZ, def2-SVP, def2-TZVP, def2-TZVPP, def2-QZVP, LANL2DZ, and 520+ more built directly into the binary — spanning Pople, Dunning cc-pVXZ, Karlsruhe def2, ANO, Jensen PCseg, relativistic (DKH/ZORA/x2c), universal (UGBS/HGBS), SARC, Sapporo, ECP libraries, and specialized sets — with support for external JSON, GBS, and Orca BAS formats
One-Electron IntegralsOverlap (S), kinetic energy (T), and nuclear attraction (V) via Obara–Saika recurrences
Two-Electron IntegralsMcMurchie–Davidson algorithm with 8-fold permutational symmetry; SP analytical fast paths for S/P shells (up to 10× speedup); Rys quadrature for D/F+ shells; direct SCF mode for large systems with symmetry-accelerated cache lookup; engine selection via the INT section (Eri auto/md/sp/rys) — applies uniformly to in-core ERI build, direct SCF, analytical gradients/Hessians, and semi-analytical (FD) Hessians
SCF MethodsRHF, UHF, and ROHF with DIIS, level shifting, damping, Fermi broadening, multiple initial guesses (core Hamiltonian, Hückel, SAD), and Quadratic Convergence SCF (QC-SCF) with Newton–Raphson orbital optimization
Post-HFMP2 and CCSD(T) correlation energies
Analytical GradientsRHF and UHF analytic nuclear gradients with symmetry-accelerated ERI derivatives (skips symmetry-equivalent shell quartets); used by BFGS optimizer
Analytical HessiansFully analytical RHF and UHF Hessians including CPHF response, occupied-occupied reorthonormalization, and analytic d²ERI integrals with symmetry acceleration (skips symmetry-equivalent quartets); semi-analytical (FD) path also propagates the selected ERI engine to all displaced SCF evaluations
Geometry OptimizationBFGS optimizer with analytic nuclear gradients; Berny RFO algorithm with trust-radius step control via the OPT section (Algorithm berny); backend-specific controls (dihedral, superweakdih, energynoise) can be invoked by setting Algorithm rberny (or RBerny in the task: line); Primitive, DLC, and TRIC internal-coordinate back-ends with topology-inferred primitive sets (bonds, angles, dihedrals, out-of-plane, linear-angle supplementary) and IC back-transform; IRC path; NEB pathway optimization with Henkelman energy-weighted tangent and climbing-image CI-NEB; Transition-state search with P-RFO step, Bofill Hessian update, initial TS Hessian initialization, periodic eigenvalue correction, and TS-specific trust radius (0.01 Å); saddle-point-aware IC optimizer with TS-BFGS Hessian update, P-RFO or Minimum Mode Following (MMF) step, sigma-based trust-radius schedule, and Davidson partial eigensolver (Algorithm sella or the Sella task token); GDIIS/GEDIIS geometry-space DIIS extrapolation in IC optimizers (Diis true); Bofill Hessian update for transition-state optimization (Update bofill)
Frequency AnalysisHarmonic vibrational frequencies via semi-analytical (finite-difference of gradients) or fully analytical Hessian; IR intensities, thermochemistry
ThermochemistryZero-point energy, thermal corrections (U, H, G), entropy (translational + rotational + vibrational) via RRHO model with symmetry number
ECP SupportEffective core potentials (LANL2DZ, Stuttgart, etc.)
DFT MethodsRestricted (RKS) and unrestricted (UKS) Kohn–Sham DFT across four rungs of Jacob's ladder — GGA (BP86, PBE), meta-GGA (TPSS, M06-L), hybrid GGA (B3LYP, PBE0), hybrid meta-GGA (M06-2X), and range-separated hybrid (ωB97X-D); Becke-style atom-centered quadrature with Mura–Knowles radial and Lebedev–Laikov angular grids (six built-in preset levels: Coarse through SuperFine); empirical dispersion corrections (D2, D3 zero-damping, D4 charge-scaled)
XC IntegrationShell-pair screening (product bound < 10⁻¹⁶ threshold); forward-mode autodiff functional derivatives (7-variable dual numbers) for exact analytic vρ, vσ, vτ; kinetic-energy density support for meta-GGAs; Stratmann–Scuseria compact cell function (f(μ), 3003/2048 normalization,
DFT SCF CouplingRange-separated hybrids with short/long-range exchange splitting via error function; solvent-coupled SCF (RKS/UKS with reaction field); full re-use of SCF infrastructure (DIIS, damping, level shifting, checkpointing)
Implicit SolvationSeven electrostatic models across three engine families — PCM-family (C-PCM, COSMO, IEF-PCM, SS(V)PE) with SWIG/ISWIG cavity discretization; domain-decomposition (ddCOSMO, ddPCM) with spherical-harmonic expansion; SMD with IEF-PCM electrostatics and CDS non-electrostatic term; 179-solvent SMD parameter database
Solvent Analytical GradientsFull analytic PCM gradient (three contributions: grad_nuc, grad_solver, grad_qv) via adjoint-Lagrangian formulation for C-PCM/COSMO/IEF-PCM/SS(V)PE; ddCOSMO/ddPCM analytic gradient with regularized l=0 block
Solvent Analytical HessiansFull analytic PCM Hessian (hess_nuc + hess_solver + hess_qv) including CPHF solvent response (AXPCM kernel) for C-PCM/COSMO/IEF-PCM/SS(V)PE; finite-difference fallback for ddCOSMO/ddPCM
SymmetryPoint group detection, character tables, irrep assignment; symmetry acceleration for all ERI-heavy computations — energy (in-core + direct SCF), analytical gradient, and analytical Hessian (matching GRAD2E SymShl — skips symmetry-equivalent shell quartets before expensive integral evaluation)
CPHF SolverCoupled-perturbed Hartree–Fock equations for response properties; RHF and coupled 2×2 UHF spins
AnalysisMulliken population analysis, orbital energies, spin contamination ⟨S²⟩, dipole moments, EFG
CheckpointingSave and restart SCF from binary checkpoint files; checkpoint and other temporary files are written to a configurable scratch directory (see Environment Variables)

Quick Navigation

Citation

If you use OpenQuantum in your research, please cite this preprint:

Pham, Le Nhan. OpenQuantum: A High-Performance Rust Implementation for Ab Initio Molecular Orbital Calculations. 2026.

Installation

Building from Source

Source code is not open yet. You can download binary files from https://github.com/lenhanpham/OpenQuantum-binary

# Clone the repository
git clone https://github.com/lenhanpham/OpenQuantum
cd OpenQuantum

# Build in release mode
cargo build --release

# Run all tests
cargo test

Note: The workspace contains multiple crates. The binary is named oquantum. When running the program, use -p oquantum to specify the package:

cargo run --release -p oquantum -- <input_file>

Requirements

  • Rust 1.70+ (stable toolchain)
  • Cargo (comes with Rust)
  • Git (for cloning the repository)

Platform Support

OpenQuantum builds and runs on:

  • Linux (x86_64, aarch64)
  • macOS (Intel, Apple Silicon)
  • Windows (x86_64)

Verifying the Installation

After building, test with a minimal input:

cat > test.inp << 'EOF'
task: RHF STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  H  0.0  0.0  0.0
  H  0.0  0.0  1.4
END
EOF

cargo run --release -p oquantum -- test.inp

You should see an RHF energy calculation output for H₂ with STO-3G basis.

Quick Start

OpenQuantum is a command-line program driven by plain text input files. The section-based format is the only supported format:

  • Section-based: a task: header followed by MOLECULE, GEOMETRY, SCF, INT, DFT, SOLVATION, OPT, FREQ, MP2, CC, BASIS, SYMMETRY blocks terminated by END.
cargo run --release -p oquantum -- water_rhf.inp

Note: The binary is named oquantum. The -p oquantum is required because the workspace contains multiple crates.

Minimal RHF Energy on Water

task: RHF STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

Save this as water_rhf.inp and run:

cargo run --release -p oquantum -- water_rhf.inp

Anatomy of an Input File

Every input file consists of:

  1. task: line — Required. Sets the run type, method, and basis set.
    task: RHF STO-3G
    
  2. MOLECULE section — Optional. Charge, multiplicity, coordinate units.
  3. GEOMETRY section — Required. Atom list with coordinates.
  4. Optional sectionsBASIS, SCF, INT, DFT, SOLVATION, OPT, FREQ, MP2, CC, SYMMETRY — only include when you need non-default settings.

Section names are case-insensitive. Each section ends with END (or end) on its own line. Lines inside a section are key value pairs (whitespace-separated, comment lines start with # or !, blank lines are ignored).

Next Steps

Environment Variables

VariableDescription
OPENQUANTUM_SCRATCHDirectory for temporary files. Defaults to the OS temporary directory (/tmp on Linux/macOS, %TEMP% on Windows) when not set.
OPENQUANTUM_BASIS_PATHOverride the search path for external basis-set files (GBS, BAS, or JSON format).

Basis Search Path

When resolving an external or custom basis set (not built into the binary), OpenQuantum searches directories in this order:

  1. Directory from the OPENQUANTUM_BASIS_PATH environment variable
  2. basis/ subdirectory next to the running executable
  3. basis/ subdirectory in the current working directory
  4. Source-tree fallback: crates/basis/src/data/ (development only)

Files are named <basis_name_lowercase>.<ext> with the following extensions:

ExtensionFormat
.gbsGaussian GBS format
.basOrca export format (orca_exportbasis)
.jsonJSON basis format

HPC Example

# SLURM job script
#SBATCH --job-name=oquantum
#SBATCH --ntasks=1

export OPENQUANTUM_SCRATCH=/scratch/$USER/$SLURM_JOB_ID
mkdir -p $OPENQUANTUM_SCRATCH

oquantum myjob.inp

The scratch directory is always printed at the start of each run:

  Scratch directory: /scratch/user/12345345

Debug Environment Variables

VariableDescription
OPENQ_DIIS_TRACESet to 1 to print concise DIIS attempt/accept/fallback trace lines for debugging DIIS behavior
OPENQ_BFGS_TRACESet to 1 to print BFGS line-search accept/reject/reset behavior

The Hartree–Fock Method

The Hartree–Fock (HF) method is a mean-field approximation to the many-electron Schrödinger equation. Each electron moves in an average field created by all other electrons, leading to a set of one-electron equations.

This chapter provides the theoretical foundation for the HF implementation in OpenQuantum, including the electronic Hamiltonian, the Roothaan–Hall equations, the Fock matrix construction, and total energy evaluation.

Overview of Chapters

UHF and ROHF

For open-shell systems, see Unrestricted & Restricted Open-Shell HF which covers separate α/β orbitals, spin contamination, and the ROHF formalism.

Key Equations

The central equations are summarized here for quick reference.

Electronic Hamiltonian (atomic units)

where:

  • is the one-electron operator (kinetic + nuclear attraction)
  • is the electron–electron repulsion

Roothaan–Hall Equations

In the LCAO approximation, molecular orbitals are expanded in atomic orbitals:

This leads to the matrix equations:

where:

  • is the Fock matrix
  • is the MO coefficient matrix
  • is the overlap matrix
  • is the diagonal matrix of orbital energies

Fock Matrix Elements

where:

  • is the core Hamiltonian (kinetic + nuclear attraction)
  • is the two-electron contribution

The density matrix is:

Total Energy

where is the nuclear repulsion energy.

The Electronic Hamiltonian

The electronic Hamiltonian in atomic units is:

where:

  • is the one-electron operator (kinetic + nuclear attraction)
  • is the electron–electron repulsion

In the Born–Oppenheimer approximation, the nuclei are fixed and the electronic Hamiltonian acts only on electronic coordinates. The nuclear repulsion energy is a constant for a given geometry and is added to the electronic energy at the end.

Atomic Units

OpenQuantum uses atomic units throughout (Hartree for energy, Bohr for distance, electron mass for mass, ). Conversion factors:

QuantityAtomic UnitSI Equivalent
Energy1 Hartree4.3597447222071×10⁻¹⁸ J (27.211386245988 eV)
Distance1 Bohr5.29177210903×10⁻¹¹ m (0.529177210903 Å)

One-Electron Operator

The one-electron operator consists of kinetic energy and nuclear attraction:

In the LCAO basis, the matrix elements are:

where are kinetic energy integrals and are nuclear attraction integrals, both computed via the Obara–Saika recurrence relations.

The Roothaan–Hall Equations

In the LCAO (Linear Combination of Atomic Orbitals) approximation, molecular orbitals are expanded in terms of atomic orbitals:

This leads to the Roothaan–Hall matrix equations:

where:

  • is the Fock matrix
  • is the MO coefficient matrix
  • is the overlap matrix
  • is the diagonal matrix of orbital energies

Derivation

The HF energy for a single determinant is:

Minimizing with respect to orbital rotations subject to orthonormality constraints leads to the eigenvalue problem above.

Solution Procedure

The Roothaan–Hall equations are solved iteratively (SCF procedure):

  1. Initial guess for (core Hamiltonian, Hückel, SAD, or read from checkpoint)
  2. Build density matrix:
  3. Build Fock matrix using current density
  4. Solve for new
  5. Check convergence (density change, energy change, gradient norm)
  6. Repeat from step 2 if not converged

Symmetric Orthogonalization

To solve the generalized eigenvalue problem, we transform to an orthonormal basis:

Then is diagonalized:

And the MO coefficients in the original basis are .

Symmetry Adaptation

When point-group symmetry is enabled, the basis functions are symmetry-adapted, block-diagonalizing both and by irreducible representation. Each block is diagonalized separately, producing canonical-like orbital energies within each irrep. This is essential for post-HF calculations (MP2, CCSD(T)) which require symmetry-labeled orbitals.

The Fock Matrix

The Fock matrix elements are:

where:

  • is the core Hamiltonian (kinetic + nuclear attraction)
  • is the two-electron contribution

The density matrix is:

Core Hamiltonian

The core Hamiltonian matrix elements are computed directly from one-electron integrals:

These integrals are evaluated using the Obara–Saika recurrence relations and are independent of the electron density.

Two-Electron Contribution

The two-electron part of the Fock matrix is built from the density matrix and electron repulsion integrals (ERIs):

The ERIs are computed using:

  • McMurchie–Davidson algorithm (default, universal for all angular momenta)
  • SP fast paths for S/P shells (up to 10× speedup)
  • Rys quadrature for D/F+ shells
  • Direct SCF mode for large systems (recomputes ERIs each iteration)

ERIs have 8-fold permutational symmetry:

Only unique ERIs are stored, and symmetry is exploited in all ERI-heavy computations (energy, gradients, Hessians).

Symmetry Acceleration

When point-group symmetry is enabled, only symmetry-unique shell quartets are computed. The detected point group is used to skip symmetry-equivalent ERI shell quartets during energy, gradient, and Hessian computations, and to assign irreducible representation labels (A₁, B₁, B₂, …) to molecular orbitals.

Total Energy

The total HF energy is:

where:

  • is the density matrix
  • is the core Hamiltonian matrix
  • is the Fock matrix
  • is the nuclear repulsion energy

Derivation

Starting from the expectation value of the Hamiltonian for a single Slater determinant:

Substituting the LCAO expansion and density matrix definition yields the trace formula above.

Energy Components

The total energy is partitioned into:

ComponentFormulaDescription
ElectronicSum of one- and two-electron contributions
NuclearClassical repulsion between nuclei

The nuclear repulsion energy is a simple pairwise sum:

where are atomic numbers and are inter-nuclear distances.

Energy Convergence

The SCF procedure monitors:

CriterionDefault ThresholdDescription
10⁻⁸ HartreeEnergy change between iterations
10⁻⁸Density matrix RMS change
10⁻⁸Gradient (commutator) max norm

These can be tightened with the Conver keyword in the SCF section (Conver 10 for 10⁻¹⁰, etc.).

Unrestricted & Restricted Open-Shell HF

For open-shell systems, OpenQuantum supports both Unrestricted Hartree–Fock (UHF) and Restricted Open-Shell Hartree–Fock (ROHF).

UHF Equations

UHF uses separate spatial orbitals for α and β electrons:

where:

  • is the Coulomb matrix from total density
  • and are exchange matrices from respective spin densities

The density matrices are:

The Fock matrices are coupled through the common Coulomb matrix .

UHF Energy

Spin Contamination

The S² expectation value measures spin contamination:

Ideal value: where

OpenQuantum reports in the output for every UHF calculation. Significant deviation from the ideal value indicates spin contamination (the determinant is not a pure spin eigenfunction).

ROHF

Restricted Open-Shell HF uses a single set of doubly-occupied orbitals plus singly-occupied orbitals. The Fock matrix is constructed to maintain orbital degeneracy within the open shell. ROHF avoids spin contamination but has a more complex Fock matrix construction.

At convergence, the occupied–occupied and virtual–virtual blocks of the Fock matrix are diagonalized separately (QCPsuC), producing canonical-like orbital energies required for subsequent post-HF calculations (MP2, CCSD(T)).

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

Spin Contamination in UHF

In unrestricted Hartree-Fock (UHF), the single determinant wavefunction is not an eigenfunction of the operator. This leads to spin contamination — the wavefunction mixes in higher-spin states.

The Expectation Value

For a UHF determinant with alpha and beta electrons, the expectation value of the total spin operator is:

where:

  • is the expected spin quantum number
  • and are the occupied alpha and beta molecular orbitals
  • The overlap integral is

Ideal vs. Actual Values

SystemMultiplicityIdeal
Doublet (1 unpaired e⁻)2½0.75
Triplet (2 unpaired e⁻)312.00
Quartet (3 unpaired e⁻)43/23.75

The actual from a UHF calculation equals the ideal value only when the alpha and beta occupied orbitals are perfectly orthogonal ( for all ). Any non-zero overlap between occupied alpha and beta orbitals increases above the ideal value.

Quantifying Spin Contamination

The degree of spin contamination is measured by the difference:

  • : Pure spin state, minimal contamination
  • : Moderate contamination, usually acceptable
  • : Significant contamination; results may be unreliable

In OpenQuantum, a warning is printed when :

Spin Information:
  N(alpha): 5
  N(beta):  4
  <S²>:     0.850000 (ideal: 0.750000)
  WARNING: Significant spin contamination detected (0.1000)

Physical Interpretation

Spin contamination arises because the UHF determinant allows alpha and beta electrons to occupy different spatial orbitals. This flexibility lowers the energy but mixes in higher-spin configurations:

  • For a doublet (), the contaminated wavefunction contains quartet () and higher-spin character
  • For a triplet (), it contains quintet () character
  • The energy lowering is artificial — it comes from spin-symmetry breaking, not physical correlation

Consequences

  1. Energies: UHF energies are variationally lower than RHF, but part of this lowering is due to spin contamination rather than physical correlation
  2. Properties: Properties like dipole moments and gradients may be affected
  3. Post-HF methods: MP2 and CCSD(T) built on a contaminated UHF reference inherit spin contamination
  4. Geometry optimization: Contaminated forces can lead to incorrect geometries

Mitigation Strategies

StrategyDescription
ROHFRestricted open-shell HF — forces alpha/beta orbitals to be identical in the open shell; spin-pure but often higher energy
Spin projectionApproximate projection of (e.g., Yamaguchi formula)
Spin-flip methodsUse spin-flip TDDFT or spin-flip CC to target spin-pure states
Use RHF for closed-shellAvoid UHF entirely when not needed

Implementation in OpenQuantum

The computation is in crates/scf/src/fock.rs::compute_s_squared():

#![allow(unused)]
fn main() {
pub fn compute_s_squared(
    coefficients_alpha: &DMatrix<f64>,
    coefficients_beta: &DMatrix<f64>,
    overlap: &DMatrix<f64>,
    n_alpha: usize,
    n_beta: usize,
) -> (f64, f64) {
    // Ideal S²: S(S+1) where S = (N_α - N_β)/2
    let s = (n_alpha as f64 - n_beta as f64) / 2.0;
    let s_squared_ideal = s * (s + 1.0);

    // Overlap of occupied orbitals: S_αβ = C_occ^α^T · S · C_occ^β
    let c_alpha_occ = coefficients_alpha.columns(0, n_alpha);
    let c_beta_occ = coefficients_beta.columns(0, n_beta);
    let s_alpha_beta = c_alpha_occ.transpose() * overlap * c_beta_occ;

    // Sum of squared overlaps
    let overlap_sum: f64 = s_alpha_beta.iter().map(|x| x * x).sum();

    // ⟨S²⟩ = S_ideal + N_β - Σ|S_αβ|²
    let s_squared = s_squared_ideal + n_beta as f64 - overlap_sum;

    (s_squared, s_squared_ideal)
}
}

The result is returned in UhfResult and formatted in format_uhf_energy_output() with a warning for significant contamination.

Further Reading

  • Szabo & Ostlund, Modern Quantum Chemistry, Ch. 3 (UHF theory)
  • Krylov, "Spin-flip methods in quantum chemistry" (2006)
  • Yamaguchi et al., "Spin-projected UHF energies" (1986)

Gaussian Basis Functions

OpenQuantum uses Cartesian Gaussian-type orbitals (GTOs):

where:

  • is the normalization constant
  • is the angular momentum
  • is the Gaussian exponent

Contracted Gaussians

Contracted Gaussians are linear combinations of primitives:

The contraction coefficients and exponents are read from basis set definition files (.obs format, compatible with EMSL BSE).

Normalization

Primitives are normalized so that:

The normalization constant for a Cartesian GTO is:

Pure Spherical Harmonics

By default, OpenQuantum transforms Cartesian basis functions to pure spherical harmonics (5d, 7f, etc.). This reduces the number of basis functions for higher angular momentum:

ShellCartesianPureReduction
d651
f1073
g1596

Use 5d/7f (default) for pure harmonics, 6d/10f for Cartesian.

Embedded Basis Sets

OpenQuantum ships with over 100 basis sets via embedded .obs files:

FamilyExamplesCoverage
PopleSTO-3G, 3-21G, 6-31G, 6-31G*, 6-31G**, 6-31+G*, 6-311GH–Xe
Dunningcc-pVDZ, cc-pVTZ, cc-pVQZ, aug-cc-pVDZ, aug-cc-pVTZH–Kr
Ahlrichsdef2-SVP, def2-TZVP, def2-TZVPP, def2-QZVPH–Rn
OtherD95, ANO-SEG, UGBS, CBSB7varies

See Basis Sets Reference for the complete list and usage.

Integral Evaluation

OpenQuantum computes all required molecular integrals using modern recurrence relations and efficient algorithms.

Overview of Chapters

One-Electron Integrals

One-electron integrals are evaluated using the Obara–Saika recurrence relations which provide an efficient and numerically stable way to compute integrals for arbitrary angular momentum.

IntegralFormulaMethod
OverlapObara–Saika
KineticObara–Saika
Nuclear AttractionObara–Saika

Two-Electron Integrals

Electron repulsion integrals (ERIs):

ERIs have 8-fold permutational symmetry. OpenQuantum provides multiple algorithms:

AlgorithmBest ForKey Feature
McMurchie–DavidsonAll systems (default)Universal, correct for all angular momenta
SP Fast PathsOrganic molecules (H,C,N,O,F)10× ERI speedup for S/P shells only
Rys QuadratureTransition metals, D/F+ basis setsRys-first path with MD fallback

The selected ERI engine applies to all ERI computation paths: in-core integral build, direct SCF, analytical nuclear gradients, fully analytical Hessians, and semi-analytical (finite-difference of gradients) Hessians.

See Two-Electron Integrals for detailed algorithm descriptions.

One-Electron Integrals

OpenQuantum evaluates one-electron integrals using the Obara–Saika recurrence relations, which provide an efficient and numerically stable way to compute integrals for arbitrary angular momentum.

Overlap Integrals

The overlap matrix is used throughout the calculation for orthogonalization, density matrix formation, and energy evaluation.

Kinetic Energy Integrals

The kinetic energy operator in atomic units is . These integrals contribute to the core Hamiltonian .

Nuclear Attraction Integrals

The nuclear attraction potential is a sum over all nuclei with charge at position . These integrals are computed efficiently using the Obara–Saika scheme with Rys quadrature for the operator.

Obara–Saika Recurrence

The Obara–Saika method generates higher angular momentum integrals from lower ones using recurrence relations. For a Gaussian product , the recurrence steps up angular momentum in each Cartesian direction:

where is the vector from the Gaussian center to nucleus , and is the Gaussian exponent.

This recurrence is numerically stable and avoids the catastrophic cancellation issues of earlier methods.

Two-Electron Integrals

Electron repulsion integrals (ERIs) are the computational bottleneck of Hartree–Fock and post-Hartree–Fock calculations:

Permutational Symmetry

ERIs have 8-fold permutational symmetry:

Only unique ERIs are stored and computed. This reduces storage and computation by a factor of 8.

ERI Engine Selection

OpenQuantum provides multiple ERI algorithms, selectable via the INT section:

INT
  Eri  auto  # auto, md, sp, rys
END
EngineKeyBest ForNotes
McMurchie–DavidsonmdAll systems (default)Universal, correct for all angular momenta
SP Fast Pathssp / spfastOrganic (H,C,N,O,F)10× speedup for S/P shells
Rys Quadraturerys / rysquadratureTransition metals, D/F+Rys-first with MD fallback
AutoautoGeneral useFast SP + Rys routing, MD fallback

The selected engine applies to all ERI computation paths:

  • In-core integral build
  • Direct SCF
  • Analytical nuclear gradients
  • Fully analytical Hessians
  • Semi-analytical (FD) Hessians

McMurchie–Davidson Algorithm

The MD algorithm uses Hermite Gaussian intermediates and is universal for all angular momenta. It builds ERIs by:

  1. Computing Hermite integrals over Gaussian primitives
  2. Contracting to shell-pair level
  3. Applying permutational symmetry

Complexity scales as for maximum angular momentum .

SP Fast Paths

For S and P shells (angular momentum ), analytical formulas give exact ERIs with far fewer operations. These are ~10× faster than MD for organic molecules. For higher angular momentum shells, MD is used as fallback.

Rys Quadrature

Rys quadrature is a numerical integration method that becomes competitive for D/F+ shells. OpenQuantum implements the Phenix-style Rys algorithm with precomputed roots and weights. MD is used as fallback when the Rys path is unavailable.

Schwarz Screening

For direct SCF and large systems, ERIs are pre-screened using the Cauchy–Schwarz inequality:

Only ERIs above the threshold Acc2E (default 10⁻¹²) are computed. This dramatically reduces the number of ERIs for large systems.

Analytic Nuclear Gradients

The RHF analytic gradient is:

where is the energy-weighted density matrix.

The UHF gradient has separate α and β components for the density and energy-weighted density matrices.

Gradient Components

TermDescription
One-electron — Core Hamiltonian derivative
Two-electron — ERI derivative
Overlap — Orbital response
Nuclear — Classical nuclear repulsion derivative

Symmetry Acceleration

Analytic gradients use symmetry-accelerated ERI derivatives (skips symmetry-equivalent shell quartets). The detected point group is used to skip symmetry-equivalent ERI shell quartets during gradient computations, matching the GRAD2E SymShl approach.

This provides near-proportional speed-ups based on symmetry order (e.g., 2× for C₂, 4× for D₂ₕ) for quadratically-scaling steps.

Implementation

Gradient integrals are evaluated using the Obara–Saika recurrence for derivatives. The derivative of a Gaussian integral with respect to nuclear position is computed by differentiating the recurrence relations.

The gradient is used by:

  • BFGS optimizer (Cartesian)
  • Berny optimizer (internal coordinates)
  • IRC path following
  • NEB pathway optimization
  • Geometry-space DIIS (GDIIS/GEDIIS)

Implicit Solvent Models

Implicit solvation treats the solvent as a structureless polarizable continuum rather than individual molecules. The solute occupies a cavity inside the dielectric, and the reaction field of the polarized solvent feeds back into the solute's Hamiltonian.

OpenQuantum supports seven electrostatic models across two discretization families.

Theoretical Framework

The total free energy in an implicit solvent is

G = E_gas + ΔG_solv

where ΔG_solv is the solvation free energy, split into electrostatic (ΔG_es) and non-electrostatic (ΔG_non‑es) contributions. The electrostatic part comes from polarizing the dielectric continuum; the non-electrostatic part covers cavitation, dispersion, and solvent-structure effects (CDS).

Apparent Surface Charge (ASC) Formalism

All PCM-family models represent the reaction field through apparent surface charges q on the cavity boundary. The charges solve a linear system

K·q = R·v

where v is the electrostatic potential (nuclear + electronic) evaluated at each cavity point, and matrices K and R define the electrostatic model. The reaction-field energy is

E_RF = ½ qᵀ · v

and the Fock matrix contribution is the AO potential of the Gaussian-smeared surface charges.

Cavity Surface: SWIG and ISWIG

Two smooth-surface discretizations are available:

  • SWIG (Switching/Gaussian): Uses a polynomial switching function to smoothly attenuate surface elements that lie inside neighbouring atoms' spheres. The Gaussian charge exponent ξ controls the spatial extent of each surface element.

  • ISWIG (Improved SWIG): Uses an error-function-based switching (erf) that provides smoother behaviour at the cost of slightly more computation.

Both methods produce a set of tesserae (surface points) per atom, each carrying a Gaussian charge density (η/π)^(3/2) exp(-η|r − C|²) with η = ξ².

Electrostatic Models

C-PCM (Conductor-like PCM)

The simplest ASC model. Assumes the solvent is a perfect conductor (ε → ∞), then scales back to finite ε:

K = S,    R = −f·I,    f = (ε − 1) / ε

S is the Coulomb interaction matrix between Gaussian surface charges. Suitable for high-dielectric solvents (water, DMSO).

COSMO (Conductor-like Screening Model)

Similar to C-PCM but uses a different scaling factor:

f = (ε − 1) / (ε + ½)

Often more accurate for low-dielectric solvents.

IEF-PCM (Integral Equation Formalism PCM)

The full dielectric model including the normal-derivative matrix D:

K = S − f/(2π)·D·A·S,    R = −f·[I − 1/(2π)·D·A]

where A is the diagonal area matrix. IEF-PCM is the most general ASC model and reduces to C-PCM or COSMO in the appropriate limits.

SS(V)PE (Surface and Simulation of Volume Polarization for Electrostatics)

A symmetrized variant of IEF-PCM:

K = S − f/(4π)·(D·A·S + S·A·Dᵀ),    R = −f·[I − 1/(2π)·D·A]

SS(V)PE is the model of choice for general quantum-chemical applications with implicit solvation; it matches the exact solution for spherical cavities.

ddCOSMO / ddPCM (Domain Decomposition)

Domain-decomposition variants expand the reaction potential in real spherical harmonics on atomic van der Waals spheres rather than on a discretized cavity surface. The L coupling matrix replaces S/D, and the system size scales as natm × (lmax+1)²:

L·X = φ,    E_RF = ½·f_ε·ψ·X
  • ddCOSMO: Conductor-like (COSMO) variant.
  • ddPCM: Full dielectric variant using the A matrix.

Both are well-suited for large systems because the number of degrees of freedom depends only on the number of atoms and the spherical-harmonic order (lmax = 6 by default).

SMD (Solvation Model based on Density)

SMD layers a non-electrostatic CDS term on IEF-PCM electrostatics:

ΔG_solv = ΔG_es(IEF-PCM) + ΔG_cds

The CDS term uses atomic surface tensions parametrized for 96 solvents plus water. SMD requires a named solvent (not just a dielectric constant).

Analytical Gradients and Hessians

All four PCM-family models (C-PCM, COSMO, IEF-PCM, SS(V)PE) provide:

  • Gradient: Three contributions — nuclear–cavity (grad_nuc), cavity response (grad_solver), and electron–cavity integral derivative (grad_qv). The total solvent gradient is added to the gas-phase gradient.

  • Hessian: Three contributions — nuclear–cavity curvature (hess_nuc), cavity-response curvature (hess_solver), and electron–cavity integral curvature (hess_qv). The total solvent Hessian is added to the gas-phase Hessian.

    The analytical Hessian with solvent is available for C-PCM, COSMO, IEF-PCM, and SS(V)PE via freq=(analytical). The Hessian uses the solvated density from rhf_scf_with_reaction_field or uhf_scf_with_reaction_field and includes the CPHF solvent response (AXPCM kernel).

  • ddCOSMO/ddPCM gradient: The analytical gradient uses the adjoint- Lagrangian formulation (ζ = L⁻¹·ψ). The l=0,m=0 block of the L matrix uses the exact Coulomb formula −1/|R_ia−R_ka| instead of the singular quadrature, making the gradient physically meaningful.

DFT-solvent coupling

Kohn–Sham DFT with implicit solvation adds the XC potential and the PCM reaction-field potential to the same effective Fock matrix. The SCF coupling is handled by dedicated entry points in the scf crate:

  • rks_scf_with_reaction_field — Restricted Kohn–Sham with any PCM-family, ddCOSMO/ddPCM, or SMD solvent.
  • uks_scf_with_reaction_field — Unrestricted Kohn–Sham with solvent.

At each SCF iteration the Fock matrix is

where is the XC potential from grid quadrature and is the reaction-field potential from the solvent surface charges. The exact-exchange coefficient is zero for pure functionals and non-zero for hybrids and range-separated hybrids.

The total free energy in a solvent DFT calculation is

with for PCM models and the SMD CDS correction.

Geometry optimization and frequency analysis in solvent

Optimizations in solvent recompute the cavity at each geometry step because the cavity surface is a function of the nuclear positions. The analytical gradient carries the full PCM contribution (grad_nuc + grad_solver + grad_qv) alongside the DFT gradient.

Harmonic frequencies with solvent use the solvated electronic density and include the PCM curvature contributions. The analytical Hessian is available for RHF/UHF/RKS/UKS with C-PCM, COSMO, IEF-PCM, and SS(V)PE. For ddCOSMO/ddPCM, finite-difference Hessians (freq=(numerical)) are the fallback.

Supported task combinations

CalculationHFDFT (RKS/UKS)SolventAnalytical GradientAnalytical Hessian
Single point
Optimization✓ (gas + solv)
Frequency✓ (PCM-family)
Post-HF (MP2/CC)✓ *
  • Post-HF in solvent uses the frozen solvent approximation (Frozen true in the SOLVATION section) by default.

Geometry Optimization Algorithms

OpenQuantum provides a comprehensive suite of geometry optimization algorithms for minima and transition-state searches.

Overview of Chapters

Optimizer Selection

The optimizer is selected via the OPT section:

OPT
  Algorithm  bfgs | berny | rberny | sella | geometric
  Coord      cartesian | primitive | dlc | hdlc | tric | tric-p
  ...
END
AlgorithmDescriptionUse Case
bfgsCartesian BFGSSimple minima, small systems
bernyBerny RFO (internal coordinates)Standard minima, robust
rbernyRust Berny backendHigh performance, native IC
sellaSaddle-point-aware IC optimizerTS searches, difficult surfaces
geometricGeomeTRIC TRIC quasi-Newton (RS-P-RFO for TS)Floppy systems, multi-fragment, TS searches

Coordinate Models

ModelKeyDescription
CartesiancartesianDirect 3N optimization, no IC back-transform
Primitive ICprimitiveFull redundant primitive set (bonds, angles, dihedrals, OOP, linear)
DLCdlcNon-redundant delocalized basis from SVD of B-matrix
HDLChdlcHybrid DLC with Cartesian components
TRICtricDLC + rigid-body translational/rotational modes removed
TRIC-ptric-pTRIC with projected Cartesian components

Activate with TransitionState true or the TS task token. Two TS step engines are available, depending on the optimizer backend:

  • P-RFO (Berny / Sella) partitions the Hessian into a TS mode (maximize) and minimization modes.
  • RS-P-RFO (GeomeTRIC) is the restricted-step partitioned RFO variant; it applies a positive metric scaling and a damped Hebden iteration to keep the step inside the trust radius. See GeomeTRIC Optimizer for details.

GEDIIS Acceleration

Geometry-space DIIS (GDIIS/GEDIIS) extrapolates from previous geometry/gradient points. Enable with Diis true in the OPT section. Most effective for difficult optimizations near flat PES regions.

Orbital Warm-Start

Between optimization cycles the molecular geometry changes only slightly, so the converged orbitals from one cycle are an excellent initial guess for the SCF at the next. By default the optimizer carries the previous cycle's density matrix forward and uses it as the SCF guess, which typically reduces the SCF iteration count markedly after the first cycle. The first cycle has no prior orbitals and uses the configured SCF guess (core Hamiltonian by default).

This warm-start applies to RHF, UHF, and ROHF and to every optimizer backend and run mode (minimization, TS, IRC, NEB). Disable it with MOGuess false in the OPT section to force a fresh guess at every geometry.

Convergence Criteria

5-criterion Gaussian-style check:

  • Energy change ΔE
  • Gradient RMS
  • Gradient max
  • Displacement RMS
  • Displacement max

Presets: Gauss default, Gauss loose, Gauss tight, or customize with Tighten N (tightens all by 10⁻ᴺ).

Primitive Internal Coordinates (IC)

When Coord primitive, Coord dlc, or Coord tric is requested, geometry steps are taken in internal-coordinate (IC) space using:

1. Topology Detection

  • Covalent-radius bond detection (38 elements, Alvarez 2008 radii)
  • Bond graph traversal for angles, dihedrals, out-of-plane bending (sp² centers), and supplementary linear-angle components for near-linear triplets

2. Wilson B-Matrix

Analytic Cartesian derivatives for all primitive types:

  • Bonds, angles: standard Wilson formulae
  • Dihedrals / out-of-plane: analytic 4-atom gradient (cross-product formula)
  • Linear-angle: stateless perpendicular-axis construction + finite-difference gradient

The B-matrix relates Cartesian displacements to IC displacements:

3. Lindh Model Hessian

Initial diagonal estimate in IC space:

  • Bonds: per Lindh
  • Angles / linear-angle:
  • Dihedrals / out-of-plane:

4. IC Back-Transform

Iterative Newton method loop) with periodic-angle wrapping; returns (new_xyz, bork) convergence flag.

5. Hessian Update

MSP (mixed-mode) update blending BFGS and Murtagh–Sargent with parameter ; falls back to pure BFGS.

6. Step Engine

Trust-radius method (TRM) with level-shifted Newton step; Brent bisection to satisfy .

7. Convergence

5-criterion Gaussian-style check:

  • Energy change ΔE
  • Gradient RMS/max
  • Displacement RMS/max

Thresholds from ConvergenceCriteria (gaussian_default, gaussian_loose, gaussian_tight).

8. Trust-Radius Update

ρ-based acceptance ratio; shrink on , grow on .

Delocalized & TRIC Coordinates

Delocalized Internal Coordinates (DLC)

DLC forms a non-redundant basis from the redundant primitive ICs:

  1. SVD rank detection on the primitive B-matrix builds a non-redundant delocalized basis
  2. Projection and back-transform operate in the reduced space

The DLC basis matrix (rank × m) is obtained via SVD of the B-matrix:

Gradients and Hessians are transformed:

The primitive Hessian is retained in full redundant IC space and updated via MSP as usual, providing stable curvature propagation across steps.

Translation-Rotation Internal Coordinates (TRIC)

TRIC adds rigid-body translational and rotational modes via weighted internal coordinates:

  1. Modified Gram-Schmidt removes translational/rotational modes before and after DLC projection
  2. Rigid-body components suppressed to machine precision

TRIC is required for:

  • Rigid true option
  • RemoveTr true option (also works with DLC/HDLC)

Native TRIC Coordinate System

The GeomeTRIC optimizer backend builds an explicit translation-rotation internal-coordinate system rather than removing TR modes from a DLC basis. For each disconnected fragment it appends six rigid-body coordinates in the order :

  • Translation coordinates are the fragment centroid components.
  • Rotation coordinates are an exponential-map representation of the optimal rotation relative to the geometry captured when the system is built. The exponential map avoids gimbal-lock singularities, and its analytic derivatives supply the rotational rows of the Wilson -matrix.

Dihedral and rotation coordinates are periodic: internal-coordinate differences for these wrap into during gradient projection and the internal-to-Cartesian back-transform. See the GeomeTRIC Optimizer chapter for the full step engine, initial-Hessian strategy, and trust-radius control.

HDLC (Hybrid Delocalized)

HDLC adds Cartesian components to the DLC basis, providing a complete spanning set while retaining the benefits of delocalization for the internal degrees of freedom.

Usage

OPT
  Coord  dlc      # or tric, hdlc, tric-p
  ...
END

TRIC is recommended for systems with floppy modes or when exact translational/ rotational separation is needed.

GeomeTRIC Optimizer

The GeomeTRIC backend is a quasi-Newton geometry optimizer that works natively in translation-rotation internal coordinates (TRIC). It targets both energy minima and first-order saddle points, drives an adaptive trust-radius loop, and back-transforms each internal-coordinate step to Cartesian space iteratively.

Select it from the OPT section:

OPT
  Algorithm  geometric      # aliases: geomet, tric
  Coord      tric | tric-p  # tric-p uses primitives only
  ...
END

Coordinate System

The optimizer builds a [TricSystem] from molecular topology:

  1. Topology primitives — bonds, angles, dihedrals, and out-of-plane terms inferred from the connectivity graph. A linear/chain fallback is used when the topology yields no primitives.
  2. Per-fragment external coordinates — for the tric model, each disconnected fragment contributes six rigid-body coordinates ordered as :
    • Translation is the fragment centroid.
    • Rotation is encoded as an exponential map relative to the geometry captured when the system was built.

The tric-p model uses topology primitives only (no rigid-body coordinates), matching the Primitive coordinate kind.

Rotation Coordinates

Rotational internal coordinates use a quaternion/exponential-map algebra:

  • The optimal rotation quaternion between the current fragment geometry and its reference is obtained from the eigenvector of a correlation matrix.
  • The quaternion is mapped to a three-component exponential map that is free of gimbal singularities over the working range.
  • Analytic derivatives of the exponential map with respect to Cartesian coordinates supply the rotational rows of the Wilson -matrix.

B-Matrix and Gradient Projection

The Wilson -matrix collects for every internal coordinate. Primitive rows come from the topology set; the centroid translation rows are constant (), and the rotation rows come from the analytic exponential-map derivatives.

Cartesian gradients are projected into internals through the Wilson -matrix:

with formed as an SVD pseudo-inverse to handle the redundancy of the internal set.

Initial Hessian

initial_ic_hessian seeds the internal-coordinate Hessian:

  • From a Cartesian Hessian (recommended for TS): transformed into internals via . For minimization it is forced positive-definite; for TS the single negative eigenvalue (the reaction coordinate) is preserved.
  • Model guess (fallback): the Lindh diagonal for primitives plus weak positive curvature ( a.u.) on each translation/rotation coordinate. This fallback also covers degenerate B-matrices from near-linear fragments.

Step Engine

Each cycle proposes a step with the trust-radius engine:

  • Minimization uses the trust-radius Newton-Raphson (TRM) step with BFGS Hessian updates by default.
  • Transition states use restricted-step partitioned RFO (RS-P-RFO), which maximizes along the lowest Hessian eigenmode (transition vector) and minimizes along the rest, with Bofill Hessian updates by default.

The trust_step driver scales the proposed step to the current trust radius via a damped Hebden iteration. The iteration is bounded (oscillation detection plus a hard MAX_ITER cap) and returns the best step found. The RS-P-RFO metric uses a strictly positive scaling parameter; non-finite or non-positive values are clamped to a small positive floor so the symmetric eigensolver always converges.

Internal-to-Cartesian Back-Transform

ic_to_cartesian recovers Cartesian coordinates that reproduce a target internal displacement through the iteration

with periodic-aware residuals (dihedral and rotation coordinates wrap into ), per-atom step capping, and adaptive damping. A bork flag is raised when the residual stays large, which the optimizer treats as a rejected step.

Trust-Radius Control

The step quality factor drives an adaptive trust radius:

  • at the trust boundary → grow trust (up to TMax).
  • → shrink trust (down to the floor).
  • Bad steps are rejected and retried with a halved trust radius; once the floor is reached the step is accepted to keep making progress.

Minimization rejects energy-raising steps against a confident prediction; TS searches legitimately raise the energy along the reaction coordinate and only reject pathological quality factors or failed back-transforms.

Convergence

Uses the same 5-criterion Gaussian-style test as the other backends (energy change, gradient RMS/max, displacement RMS/max). See Geometry Optimization Algorithms for the shared convergence presets.

IRC — Intrinsic Reaction Coordinate

The Gonzalez–Schlegel (1990) algorithm for mass-weighted IRC following:

Algorithm

  1. Mass-weight the input Hessian:

  2. Diagonalize to find the mode of largest imaginary frequency

  3. Displace along that mode (forward and reverse) to get two starting points

  4. For each direction: predictor (mass-weighted steepest descent) + corrector (constrained optimization orthogonal to the path tangent)

    • The corrector uses a proper Gonzalez–Schlegel corrector sub-loop (up to 10 iterations per IRC step)
    • The gradient is projected orthogonal to the radial (path tangent) direction in mass-weighted coordinates
    • A constrained steepest-descent step is taken on the hypersphere
    • Iterates until the perpendicular gradient norm is below
  5. Convergence by max-gradient norm; output is a list of IrcPoint (arc, geometry, energy)

Bidirectional IRC

The IRC true directive triggers bidirectional IRC from the provided geometry. Restrict to one direction with IRCDir +1 (forward) or IRCDir -1 (reverse).

Requirements

  • Starting geometry should be a pre-converged transition state (imaginary frequency expected)
  • The initial Hessian must have at least one negative eigenvalue for the reaction mode

Usage

task: RHF STO-3G

GEOMETRY
  ...
END

OPT
  IRC     true
  IRCDir  +1
END

The output includes per-step energies, geometries, and a formatted path summary.

Transition-State Search (Berny Optimizer)

The Berny optimizer supports transition-state (TS) searches via the TS task token or by setting TransitionState true in the OPT section. The implementation uses Partitioned Rational Function Optimization (P-RFO) to locate first-order saddle points.

See also: the GeomeTRIC Optimizer provides an alternative restricted-step partitioned RFO (RS-P-RFO) TS engine in translation-rotation internal coordinates. Select it with Algorithm geometric plus TransitionState true.

Theory

A transition state is a first-order saddle point on the potential energy surface (PES) — a stationary point with exactly one negative eigenvalue of the Hessian matrix. The negative eigenvalue corresponds to the reaction coordinate (the direction connecting reactant and product).

The P-RFO method partitions the Hessian eigenvectors into two subspaces:

  • TS mode (mode 1, lowest eigenvalue): maximize energy along this direction
  • Minimisation modes (all other modes): minimize energy along these directions

The step is computed as:

where the coefficients are:

The RFO roots are:

Implementation Details

The TS search in the Berny optimizer includes:

  1. Initial TS Hessian (init_ts_hessian):

    • When no analytical Hessian is provided, the Lindh model Hessian is used
    • The softest IC mode (lowest eigenvalue) is set to −0.2 a.u.
    • This ensures P-RFO has a well-defined ascent direction from the first step
  2. P-RFO Step (prfo_step in step_engine.rs):

    • Eigendecomposes the Hessian:
    • Sorts eigenvalues/eigenvectors by ascending eigenvalue
    • Projects gradient onto eigenvectors:
    • Computes RFO roots for TS mode (upper) and minimisation modes (lower)
    • Forms step in eigenbasis, transforms back to IC space
    • Scales to trust radius if step is too large
  3. Hessian Eigenvalue Check (ensure_correct_negative_eigenvalues):

    • Runs every 3 cycles during TS optimization
    • Checks that the Hessian has exactly 1 negative eigenvalue
    • If too few: flips smallest positive eigenvalues to −0.2 a.u.
    • If too many: flips least-negative eigenvalues to +0.2 a.u.
  4. Bofill Hessian Update (update_hessian_bofill):

    • Blends PSB (Powell-Symmetric-Broyden) and MS (Murtagh-Sargent) updates
    • Weight:
    • When : pure PSB (preserves curvature info)
    • When : pure MS (rank-1 correction)
    • Automatically adapts based on local surface curvature
  5. TS-Specific Trust Radius:

    • Initial trust: 0.01 Å (vs 0.3 Å for minima)
    • Maximum trust: 0.03 Å (vs 0.3 Å for minima)
    • Conservative values prevent large steps near saddle points
  6. TS-Specific DIIS Weighting:

    • Reaction coordinate gradient component scaled by factor 2.0
    • Minimum subspace size: 3 points (vs 2 for minima)
    • Cosine threshold: 0.5 (vs 0.0 for minima)
  7. TS-Specific Output:

    • Prints Hessian negative eigenvalue count at each cycle
    • Header shows "Transition-State Optimization (Berny IC-space, P-RFO)"

TS Search Algorithm Flow

berny_optimize_ic_with_controls()
│
├─ Set TS-specific trust defaults (0.01, 0.03)
│
├─ Initialize Hessian
│   ├─ If cart_hessian provided: use it
│   └─ Else: guess_hessian_lindh()
│       └─ If transition_state: init_ts_hessian(h, 1, -0.2)
│
└─ Main loop
   │
   ├─ Compute IC gradient
   │
   ├─ TS diagnostics (print negative eigenvalue count)
   │
   ├─ Select step method
   │   ├─ If transition_state: prfo_step()
   │   └─ Else: trm_step() or gediis()
   │
   ├─ IC → Cartesian back-transform
   │
   ├─ Evaluate energy and gradient
   │
   ├─ Convergence check
   │
   ├─ Trust-radius update
   │
   ├─ Hessian update
   │   ├─ If transition_state: update_hessian_bofill()
   │   └─ Else: update_hessian_msp()
   │
   ├─ Periodic eigenvalue check (every 3 cycles)
   │   └─ ensure_correct_negative_eigenvalues(h, 1, 0.2)
   │
   └─ Accept step

Verification

A genuine TS shows exactly one imaginary frequency (printed as a negative value):

Frequencies (cm⁻¹):  -1247.3   1652.1   3825.4

Verify with a subsequent FREQ job on the converged TS geometry.

Quasi-Newton Hessian Update Methods

Four update formulas are available via HessianUpdateMethod, selected with the Update keyword in the OPT section:

OPT
  Update  bfgs | psb | ms | bofill | sr1 | dfp | bfgs_powell | ts-bfgs
END

MSP (Mixed Symmetric Powell — default for minimisations)

Adaptively blends BFGS and Murtagh–Sargent updates via a mixing parameter where :

BFGS (Broyden–Fletcher–Goldfarb–Shanno)

The classic rank-2 update:

Preserves positive-definiteness when ; unsuitable for TS searches.

TS-BFGS (Transition-State BFGS — default for saddle-point searches)

Standard BFGS drives the Hessian positive-definite, which destroys the negative curvature direction needed for TS optimization. TS-BFGS replaces the curvature metric with (using the absolute-value Hessian , obtained by diagonalizing and flipping negative eigenvalues to their absolute values) so that the negative eigenvalue directions are maintained across steps.

The rank-2 single-step formula:

where is the IC-space displacement and is the gradient change.

Properties:

  • The quasi-Newton secant condition is approximately satisfied
  • Negative eigenvalues are preserved, not destroyed
  • Reduces exactly to standard BFGS when is positive-definite

SR1 (Symmetric Rank-1)

SR1 can build indefinite Hessian approximations naturally (no positive-definite constraint). Can be unstable if is small, so a skip condition is applied.

DFP (Davidon–Fletcher–Powell)

DFP is the inverse-Hessian analogue of BFGS. It preserves positive-definiteness but can be slow to converge on ill-conditioned surfaces.

Bofill (Bofill Weighted Update — default for TS searches)

The Bofill update blends the Powell-Symmetric-Broyden (PSB) and Murtagh-Sargent (MS) updates with a weight that measures how well the secant condition is satisfied:

Properties:

  • When : pure PSB (good for TS, preserves curvature information)
  • When : pure MS (good for minima, rank-1 correction)
  • Automatically adapts between PSB and MS based on the local surface curvature

PSB (Powell-Symmetric-Broyden)

PSB is a symmetric rank-2 update that does not preserve positive-definiteness. It is used as part of the Bofill update and is suitable for TS searches where the Hessian must remain indefinite.

MS (Murtagh-Sargent)

MS is a rank-1 update that can produce indefinite Hessians naturally. It is used as part of the Bofill update and is the simplest update that allows negative eigenvalues.

BFGS/Powell Mixed

if is_ts:
    H_new = Bofill(H,s,y)    # φ·PSB + (1-φ)·MS
else:
    H_new = BFGS(H,s,y)      # Standard BFGS

This method automatically selects BFGS for minima and Bofill for TS searches, providing a seamless transition between the two regimes.

Summary

MethodFormulaPreserves PDTS-SuitableDefault For
MSPNoYesMinima
BFGSYesNo
TS-BFGSUses in metricNoYesTS (Sella)
SR1NoYes
DFPYesNo
BofillNoYesTS (Berny)
PSBNoYes
MSNoYes
BFGS/PowellBFGS or Bofill based on modeAutoAuto

NEB — Nudged Elastic Band

Henkelman–Jónsson (2000) NEB with climbing-image (CI-NEB):

Algorithm

  1. Linear interpolation of images between start and end endpoints

  2. Energy-weighted tangent selection: uphill images use max-energy neighbor, downhill use min-energy neighbor; blended at energy crossings

  3. Spring force along tangent:

  4. CI-NEB activates after iterations: highest-energy image climbs by inverting the gradient component along the tangent

  5. Gradient-descent relaxation of the full image band; convergence by max force across all moveable images

  6. Output includes per-image energies, geometries, and a formatted path summary

Usage

task: RHF STO-3G

GEOMETRY
  # Start geometry
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000

  # End geometry
  O   0.000000   0.000000   0.100000
  H   0.750000   0.100000  -0.450000
  H  -0.750000  -0.100000  -0.450000
END

OPT
  NEB     true
  Images  8
END

The start and end geometries are provided as consecutive blocks in the GEOMETRY section separated by a blank line. Images N controls the number of interpolating images (default 8).

Davidson Partial Eigensolver

A Rayleigh–Ritz iterative procedure for finding the k lowest eigenvalues and eigenvectors of a large matrix without forming or storing it explicitly. Only matrix-vector products are required (supplied as a closure or via finite-difference gradient evaluations).

Algorithm

  1. Initialise subspace with unit vectors (or a user-supplied guess)
  2. Build projected matrix (size , grows each step)
  3. Diagonalise Ritz values and Ritz vectors
  4. Check residuals for all :
    • Converged when for all
  5. Expand: Orthogonalise the worst residual against via Modified Gram-Schmidt (MGS); append the new column to and
  6. Restart when : retain the best Ritz vectors

Modified Gram-Schmidt Orthogonalisation

Uses a sequential projection:

Returns None when the projected norm falls below tol (linear dependence).

Usage in OpenQuantum

The Davidson solver is used internally by refine_ts_hessian_via_davidson to determine an initial TS-mode direction from finite-difference Hessian-vector products, before the TS-BFGS update takes over.

It is also used by the Sella optimizer for adaptive eigenvalue correction.

Minimum Mode Following (MMF) Step

An alternative to P-RFO for saddle-point and TS searches that uses in the denominator instead of RFO roots. This makes the step well-conditioned even when the Hessian eigenvalues have not yet converged to the correct sign pattern during the early steps of a TS search.

Formula

Given the eigendecomposition (eigenvalues sorted ascending), the MMF step is:

The Lagrange multiplier is determined by bisection to satisfy . When the unconstrained step already satisfies the trust radius, is used directly.

Comparison with P-RFO

PropertyP-RFOMMF
DenominatorRFO eigenvalues
Well-defined when H all-positive?No (RFO root may fail)Yes
Formal convergence propertyQuasi-Newton RFOTrust-radius Newton
Recommended forWell-converged TS saddleEarly TS steps, indefinite H

Usage

Enable with Step mmf in the OPT section:

OPT
  TransitionState true
  Step     mmf
  ...
END

When the Hessian eigenvalue signs are not yet correct (e.g., very early steps on a flat surface), step=mmf is more robust than P-RFO because MMF uses in the denominator.

Sella-Style Optimizer

The Sella optimizer (Algorithm sella or Sella task token) provides a quasi-Newton geometry optimization backend with explicit Cartesian and internal-coordinate execution paths, combining:

  1. TS-BFGS Hessian update (maintains order negative eigenvalues)

  2. P-RFO or MMF step computation

  3. Sigma-based trust-radius schedule: multiplicative update driven by the model-quality ratio :

    ConditionAction
    (grow)
    (shrink)
    otherwiseunchanged
  4. Adaptive Hessian eigenvalue correction: every nsteps_per_diag steps, the Hessian eigenspectrum is inspected and corrected if the number of negative eigenvalues deviates from order:

    • Too few negative eigenvalues → flip the smallest positive ones to −0.2 a.u.
    • Too many negative eigenvalues → flip the least-negative ones to +0.2 a.u.
  5. Initial TS Hessian: TS startup uses Davidson partial eigensolver refinement when available; if refinement is unavailable, fallback initialization sets the order softest modes to −0.2 a.u. so that P-RFO/MMF has a well-defined ascent direction from the first step.

  6. Coordinate-space support:

    • Coord cartesian: native Cartesian Sella engine path
    • Coord primitive: native internal-coordinate Sella path
    • Coord dlc / Coord tric: reduced-space internal step path

Default Parameters

ParameterTS (order=1)Minimum (order=0)
Step methodP-RFOP-RFO
Hessian updateTS-BFGSMSP
delta00.100.30
sigma_inc1.151.15
sigma_dec0.650.90
rho_inc1.0351.035
rho_dec5.0100.0
trust_max1.01.0
nsteps_per_diag3

Relationship to Existing Optimizers

Section formOptimizer path
Coord primitiveBerny IC optimizer (MSP+TRM)
TransitionState true, Coord primitiveBerny IC optimizer + P-RFO (no TS-BFGS)
task: SELLA … (or Algorithm sella)Sella IC optimizer (TS-BFGS/MSP + P-RFO, σ-trust)
task: TS SELLA … (or Algorithm sella, TransitionState true)Sella TS optimizer (recommended for TS searches)
Algorithm sella, TransitionState true, Coord dlcSella TS search in DLC space

Usage

Sella minimum optimisation:

task: SELLA RHF STO-3G

GEOMETRY
  ...
END

Sella TS search with MMF step (more robust on flat surfaces):

task: TS SELLA RHF STO-3G

GEOMETRY
  ...
END

OPT
  Step     mmf
  Coord    dlc
  SellaOrder 2
  MaxCycle 100
END

Analytic Nuclear Hessians

The fully analytical RHF Hessian includes five contributions:

Contributions

TermFormulaDescription
One-electron curvature: second derivatives of
contracted with Overlap curvature
ERI curvature: second derivatives of two-electron integrals computed analytically via shell_quartet_eri_hessian (not finite-difference)
CPHF response: is the orbital response from iterative CPHF solution
Occupied-occupied reorthonormalization: includes both and contributions to

UHF Hessian

For UHF, the Hessian uses a coupled 2×2 CPHF system (, , , spin blocks) with separate and densities.

Semi-Analytical Path

The semi-analytical (finite-difference of gradients) path propagates the selected ERI engine to all displaced SCF evaluations. This ensures consistency between the analytical and numerical Hessian paths.

Symmetry Acceleration

Analytical Hessians skip symmetry-equivalent shell quartets before expensive integral evaluation, matching GRAD2E SymShl. This provides significant speedup for symmetric molecules.

Usage

FREQ
  Hessian  analytical  # or semi
  ...
END

The analytical Hessian is the default for RHF/UHF single-point frequency calculations.

DIIS Convergence Acceleration

Direct Inversion in the Iterative Subspace (DIIS) accelerates SCF convergence by extrapolating the Fock matrix:

where coefficients minimize the error vector norm subject to .

Error Vector

The error vector is the commutator:

At convergence, , so the commutator is zero.

DIIS Matrix Construction

Build the overlap matrix of error vectors:

Constrained Optimization

Find coefficients that minimize the error norm subject to :

This is solved via the Lagrangian system:

SCF Keywords

Control DIIS in the SCF section:

SCF
  Diis     6      # subspace size (default 6)
  NoDiis   false  # disable DIIS
  ...
END

GDIIS/GEDIIS — Geometry-Space DIIS for Optimization

OpenQuantum implements GDIIS (Gradient DIIS) and GEDIIS (Geometry-Dependent DIIS) for accelerating geometry optimization convergence. These methods extrapolate from previous geometry/gradient points to find a better step, analogous to how SCF-DIIS extrapolates from previous Fock matrices.

Comparison with SCF-DIIS

PropertySCF-DIISGDIIS/GEDIIS
SpaceFock matricesGeometry coordinates
Error vector commutatorNegative gradient
WeightingError-normEnergy-weighted (GEDIIS)
Subspace size6–102–6
ConvergenceQuadraticSuperlinear

How GDIIS Works

Setup: At each optimization cycle, store the current geometry , gradient , and energy in a subspace of size (default ).

Error vectors: The negative gradient serves as the error vector:

At a minimum, the gradient should be zero, so the gradient measures how far we are from the solution.

DIIS matrix construction: Build the overlap matrix of error vectors:

Constrained optimization: Find coefficients that minimize the error norm subject to :

Extrapolated step: The DIIS-extrapolated geometry is:

How GEDIIS Works

GEDIIS extends GDIIS by weighting the DIIS matrix by energy differences, preferring steps that lower the energy. Three matrix types are tried in order:

1. RFO-DIIS (most robust)

Uses the quadratic step overlap as the DIIS matrix:

where is the RFO step from point . This requires computing the RFO step at each stored point, but produces the most reliable extrapolation.

2. EnDIS (Energy-DIIS)

Uses energy-difference weighting:

This matrix is positive-definite when all steps lower the energy, ensuring a well-defined extrapolation.

3. GDIIS (fallback)

Standard gradient-overlap matrix as described above.

Algorithm Flow

For each optimization cycle n:
  1. Evaluate energy E_n and gradient g_n at current geometry q_n
  2. Store (q_n, g_n, E_n) in DIIS subspace
  3. If subspace size >= min_subspace (default 2):
     a. Try RFO-DIIS: build A_ij = s_i · s_j, solve for c_i
     b. If RFO-DIIS fails, try EnDIS
     c. If EnDIS fails, fall back to GDIIS
  4. Validate coefficients:
     - Largest |c_i| must exceed threshold (default 0.1)
     - Sum of negative coefficients must not exceed -1.0
  5. Compute extrapolated geometry: q_DIIS = Σ_i c_i q_i
  6. Use q_DIIS as the next geometry (or blend with TRM step)

Step Quality Checks

Cosine check: The angle between the extrapolated gradient and the last error vector should be small (cosine close to 1.0):

If , the DIIS step is rejected and TRM is used instead.

Step ratio check: The ratio should be reasonable. Extreme values indicate the extrapolation is unreliable.

Transition-State (TS) Mode

For TS optimization (TransitionState true), GEDIIS applies special weighting:

  • The reaction coordinate gradient component is scaled by ts_reaction_coord_weight
  • Minimum subspace size is 4 (vs 2 for minima)
  • The extrapolation prefers steps that maintain the correct curvature direction

Usage

Enable with Diis true in the OPT section:

OPT
  Diis     true
  DiisSize 4
  ...
END

Most effective for:

  • Difficult optimizations near flat regions of the PES
  • Multi-step convergences where the optimizer oscillates between geometries
  • Large molecules where each SCF evaluation is expensive

GEDIIS typically reduces the number of optimization cycles by 20–40% compared to standard TRM for well-behaved systems.

Thermochemistry

Harmonic frequency analysis computes:

Zero-Point Energy

Thermal Corrections (at temperature )

ComponentModel
VibrationalRRHO for all real modes ()
RotationalClassical rigid rotor with symmetry number
TranslationalSackur–Tetrode equation

Entropy

Gibbs Free Energy

Symmetry Number

The symmetry number is automatically determined from the detected point group:

Point Group
1
12
24
1
2

Frequency Scaling

Use the Scale keyword in the FREQ section to apply a scaling factor to frequencies for ZPE and thermal corrections (e.g., Scale 0.9854 for B3LYP/6-31G*).

Usage

FREQ
  Hessian     analytical
  Temperature 298.15
  Pressure    1.0
  Scale       1.0
  SymmetryNumber 1  # auto-detected if not specified
  ...
END

Linear Molecule Detection

Linear molecule detection is automatic. The Molecule struct provides:

  • atomic_mass — atomic masses
  • total_mass — total molecular mass
  • center_of_mass — center of mass
  • inertia_tensor — moment of inertia tensor
  • is_linear — linear molecule detection

Rotational entropy uses the rigid rotor formula with principal moments from Molecule::inertia_tensor().

Density Functional Theory (DFT)

OpenQuantum solves the Kohn–Sham equations on an atom-centered numerical grid. The Kohn–Sham Fock operator replaces the wavefunction-theory exchange operator with a density-dependent exchange–correlation (XC) potential, and the total electronic energy is

where is the non-interacting kinetic energy, the classical Coulomb energy, the electron–nuclear attraction, the nuclear repulsion, and the exchange–correlation contribution evaluated by numerical quadrature.

Functional rungs

OpenQuantum supports four rungs of Jacob's ladder. The semilocal kernels read the spin densities , gradient invariants , and (for meta-GGAs) kinetic-energy densities at every quadrature point.

RungFunctionalTagExact exchangeDispersion
GGABP86bp860
GGAPBEpbe, pbepbe0
meta-GGATPSStpss0
meta-GGAM06-Lm06l0
hybrid GGAB3LYPb3lyp0.20
hybrid GGAPBE0pbe0, pbe1pbe0.25
hybrid meta-GGAM06-2Xm062x0.54
range-separated hybridωB97X-Dwb97xd, w97xd0 (SR), 1.0 (LR), ω = 0.2D2

The exact-exchange fraction is wired through the SCF Fock builder. Range-separated exchange splits the Coulomb operator with the error function and contracts short- and long-range fractions independently against the same density.

M06-family correlation

M06-L and M06-2X correlation use the Voorhis–Scuseria (VS98) reduced-gradient working factor combined with a polynomial baseline:

with reduced gradients , , , self-interaction screen , and PW92 spin-resolved correlation . The polynomial baseline keeps the working factor positive at high reduced gradient, so M06 correlation integrates physically without any pointwise guard.

The working function is

The polynomial baseline has the form with (same-spin) and (opposite-spin).

Atom-centered grid

The molecular grid is a Becke-style sum of atom-local quadratures, each a direct product of a Mura–Knowles radial scheme and a Lebedev angular grid.

  • Radial. Mura–Knowles maps the unit interval to via , with for the alkali/hydrogen column and elsewhere.
  • Angular. Genuine Lebedev–Laikov grids of degree 3, 5, 7, 11, 17, 23, and 29 (point counts 6, 14, 26, 50, 110, 194, 302). The dispatcher routes any requested order to the largest exact Lebedev set that does not exceed the request; orders above 302 fall back to a Fibonacci-sphere distribution. Each Lebedev order is gated by an explicit spherical-moment exactness test.
  • Pruning. Below the SuperFine level, near-nucleus and tail radial shells drop to lower angular orders, with denser tails kept for heavy atoms.
  • Partition. A compact Stratmann–Scuseria-style cell function , built from a sixth-degree polynomial scaled by with a normalization, replaces Becke's iterated step. The cell weight is identically zero outside and goes smoothly to zero at the partition tail, which removes spurious tail points without further screening.

The integration loop screens AO shells whose product bound falls below and accumulates the XC potential matrix only over active AO pairs whose pointwise product (or gradient bound) exceeds .

Empirical dispersion

Dispersion-bearing functionals add an empirical pair correction to the total energy. OpenQuantum exposes three models with the same element coverage (Z = 1–54, including transition metals).

  • D2. with a Fermi-type damping function. Used by ωB97X-D.
  • D3 zero-damping. Adds an estimated term and uses the standard zero-damping factor for both and contributions.
  • D4 charge-/coordination-scaled. Estimates per-atom partial charges from Pauling electronegativities, scales pair coefficients by local coordination numbers, and applies a rational damping form to and terms.

The model is selected via the functional metadata tag (D2, D3, D4) or called explicitly through the dispersion API.

Restricted, unrestricted, and open-shell DFT

Closed-shell systems use a restricted Kohn–Sham (RKS) Fock build that contracts the spin-summed XC potential , , and against the AO basis. Open-shell systems use an unrestricted Kohn–Sham (UKS) Fock build with spin-resolved XC matrices for α and β. Both share the same grid construction and screening pipeline.

Solvent-coupled DFT

Kohn–Sham calculations with implicit solvation combine the XC potential and the reaction-field contribution in the same effective Fock matrix. OpenQuantum provides dedicated SCF entry points:

  • rks_scf_with_reaction_field — RKS with PCM/ddCOSMO/SMD solvent.
  • uks_scf_with_reaction_field — UKS with PCM/ddCOSMO/SMD solvent.

At each SCF iteration the XC potential matrix (from grid quadrature) and the reaction-field contribution (from the cavity surface charges) are added to the core Hamiltonian alongside the Coulomb and exchange terms. The solvent-coupled SCF supports all functional rungs including range-separated hybrids.

Analytical gradients and Hessians with DFT

The analytic nuclear gradient for Kohn–Sham DFT includes the XC contribution from grid differentiation alongside the HF-like terms (nuclear, Coulomb, exchange). When solvent is active, the analytical gradient additionally includes the PCM contributions (grad_nuc + grad_solver + grad_qv).

The analytical Hessian for DFT extends the CPHF formalism to include XC response terms from grid differentiation. The XC contribution to the Hessian contains both the first-order XC potential response (through the CPHF equations) and the second-order XC kernel evaluated on the grid. With solvent, the full PCM Hessian (hess_nuc + hess_solver + hess_qv) is added, including the CPHF solvent response (AXPCM kernel).

Input File Format

OpenQuantum input files use a section-based format: a task: header followed by SECTION … END blocks for each computational block.

General Structure

task: <run-type> <method> <basis>

MOLECULE
  Charge        <int>             # default 0
  Multiplicity  <int>             # default 1
  Units         Angstrom | Bohr   # default Angstrom
END

GEOMETRY
  <ELEMENT>  <x>  <y>  <z>     # one line per atom (Angstrom or Bohr)
  ...
END

BASIS
  Library <name>     # overrides task basis
  Ecp  <name>        # optional ECP library
END

SCF
  Algorithm  rhf | uhf | rohf
  Guess      core | huckel | sad | read
  MaxCycle   <int>
  Conver     <int>            # 10^(-N) tolerance
  Diis       <int>            # subspace size
  Shift      <float>          # static level shift, Hartree
  Damp       <float>          # density damping factor
  Fermi      <float>          # Fermi broadening
  Direct     true | false
  Save       true | false
  Restart    true | false
  Tight      true | false
  QC         true | false
  XQC | YQC | SD | SSD
  MaxRot     <int>
  MaxNr      <int>
  FullLinear true | false
  OldQC      true | false
END

INT
  Acc2E        <int>          # ERI threshold = 10^(-N), default 12
  UltraFine    true | false
  Eri          auto | md | sp | rys
  NoSymm       true | false
  Grid         Coarse | Fine | UltraFine
  Relativistic dk | zora | none
  FcMod        <int>          # freeze-core shell count (per atom)
  Semiempirical <name>
END

OPT
  Algorithm   bfgs | berny | rberny | sella
  Coord       cartesian | primitive | dlc | hdlc | tric | tric-p
  MaxCycle    <int>
  Trust       <float>         # initial trust radius, Bohr
  TMax        <float>         # max trust radius, Bohr
  NoTrust     true | false    # disable TRM level-shifted Newton
  TransitionState true | false
  IRC         true | false
  IRCDir      +1 | -1
  NEB         true | false
  Images      <int>           # number of NEB images
  SellaOrder  <int>           # 1 = Hessian, 2 = Hessian + gradient
  Step        trm | prfo | mmf
  Update      bfgs | psb | ms | bofill | sr1 | dfp | bfgs_powell | ts-bfgs
  Diis        true | false    # GEDIIS
  DiisSize    <int>
  Symmetry    true | false    # exploit point-group symmetry in IC build
  OptSymmetry true | false    # enforce symmetry along the path
  NoStep      true | false
  Hessian     analytical | semi
  NoCartHessian true | false
  CartHessian <matrix>         # inline Cartesian Hessian (text)
  Rigid       true | false    # require coord=tric
  RemoveTr    true | false    # require coord=dlc/hdlc/tric
  ConMethod   0 | 1
  Connect     true | false
  AddCart     true | false
  ConnectIsolated true | false
  Primitive   true | false    # alias for coord=primitive
  PrimStep    true | false    # step projection in primitive IC
  Gauss       default | loose | tight
  Tighten     <int>           # tighten all criteria by 10^(-N)
  MaxDisplacement <float>
  Constraints <clause-list>
END

FREQ
  Hessian      analytical | semi
  Numerical    true | false
  Step         <float>         # finite-difference step, Bohr
  Temperature  <float>         # Kelvin (default 298.15)
  Pressure     <float>         # atm (default 1.0)
  Scale        <float>         # ZPE / thermal frequency scaling
  SymmetryNumber <int>
  Read         <file>          # read Hessian from file
  Save         true | false    # write Hessian to checkpoint
END

MP2
  Scaling      none | os | ss | osss
  OS           <float>         # same-spin scale factor
  SS           <float>         # opposite-spin scale factor
  DF           true | false    # density-fitting / RI-MP2
  Aux          <name>          # auxiliary basis set
  KeepHalf     true | false
  DiscardVV    true | false
  Skip         <list>          # comma-separated skip tokens
  Acc2E        <int>
  FreezeCore   true | false
END

CC
  Triples      none | st | pt | f   # perturbative triples model
  FreezeCore   true | false
  DropVirt     <float>             # drop virtual orbital cutoff
  Conv         <int>               # 10^(-N) convergence
  MaxIter      <int>
  Diis         true | false
  DiisStart    <int>
  Shift        <float>
  Read         <file>              # read amplitudes from file
  Skip         <list>
  Acc2E        <int>
  Brueckner    true | false
END

SYMMETRY
  Tolerance  <float>         # default 1e-3 Å
  Disable    true | false
END

Rules

  • The task: line sets the run-type token (RHF, UHF, ROHF, OPT, FREQ, MP2, CCSD, CCSD(T), etc.) and a default method/basis pair. A task: line is required.
  • Section names are case-insensitive. Each section ends with END (or end) on its own line.
  • MOLECULE and GEOMETRY are required; all other sections are optional and only need to be present when their non-default keywords are required.
  • Lines inside a section are key value pairs (whitespace-separated, comment lines start with # or !, blank lines are ignored).

Reserved Section Names

SectionPurpose
MOLECULECharge, multiplicity, coordinate units
GEOMETRYAtom list (required)
BASISBasis set and ECP overrides
SCFMethod, guess, DIIS, level shift, QC, save/restart
INTERI threshold, engine, symmetry, grid, relativistic, semiempirical
OPTGeometry optimization, TS, IRC, NEB, coordinate model, constraints
FREQHessian, finite-difference step, thermochemistry
MP2Spin scaling, density fitting, frozen core, MP2 options
CCCCSD/CCSD(T) convergence, frozen core, Brueckner, read/save
SOLVATIONImplicit solvent model, dielectric, cavity settings
SYMMETRYSymmetry tolerance and toggle

Example

task: OPT RHF 6-31G*

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

OPT
  Algorithm  berny
  Coord      tric
  MaxCycle   100
END

Section Reference

The MOLECULE, GEOMETRY, BASIS, SCF, DFT, INT, OPT, FREQ, MP2, CC, SOLVATION, SYMMETRY, and CONTROL sections control every aspect of an OpenQuantum calculation. Each section is a named block terminated by END (case-insensitive).

Lines inside a section are key value pairs (whitespace-separated). Comments start with # or !. Blank lines are ignored. Most keywords accept aliases and alternative spellings.

Use the links below for detailed keyword tables and per-section examples.

MOLECULE Section

The MOLECULE section specifies molecular-level properties.

Keywords

KeywordTypeDefaultDescription
Chargeinteger0Molecular charge
Multiplicityinteger1Spin multiplicity (2S+1)
UnitsAngstrom | BohrAngstromCoordinate units for geometry

Example

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

For charged systems:

MOLECULE
  Charge        -1
  Multiplicity  2
  Units         Bohr
END

Notes

  • The Units setting applies to the GEOMETRY section coordinates.
  • Charge and Multiplicity can also be specified on the task: line or in the GEOMETRY comment line (legacy), but the MOLECULE section is the preferred way.

GEOMETRY Section

The GEOMETRY section contains the atomic coordinates. It is required.

Format

GEOMETRY
  <ELEMENT>  <x>  <y>  <z>
  ...
END
  • One line per atom
  • Element symbol (case-insensitive: H, h, C, c, etc.)
  • Coordinates in Angstrom or Bohr (set by MOLECULE Units or task: line)
  • Whitespace-separated

Example

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

Multiple Geometries

For NEB calculations, provide two geometries separated by a blank line:

GEOMETRY
  # Start geometry
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000

  # End geometry
  O   0.000000   0.000000   0.100000
  H   0.750000   0.100000  -0.450000
  H  -0.750000  -0.100000  -0.450000
END

The Images N keyword in the OPT section controls the number of interpolating images.

Notes

  • The GEOMETRY block must contain at least one atom.
  • Coordinates default to Angstrom unless Units Bohr is specified in MOLECULE.
  • Z-matrix format is not supported in the section-based input; use the legacy route-card format for Z-matrix input.

BASIS Section

The BASIS section overrides the basis set specified on the task: line and attaches ECP libraries.

Keywords

KeywordTypeDescription
LibrarystringBasis set name (e.g., def2-TZVP, cc-pVDZ)
EcpstringECP library name (e.g., lanl2dz)

Example

BASIS
  Library def2-TZVP
  Ecp lanl2dz
END

Notes

  • The Library keyword overrides the basis set from the task: line.
  • The Ecp field is the supported way to attach an ECP library to a calculation.
  • See Basis Sets Reference for the complete list of available basis sets.
  • ECP libraries (LANL2DZ, Stuttgart, etc.) are loaded automatically when Ecp is set.

SCF Section

The SCF section controls the Hartree–Fock self-consistent field procedure.

Keywords

KeywordTypeDefaultDescription
Algorithmrhf | uhf | rohffrom task:SCF method
Guesscore | huckel | sad | readsadInitial MO guess
MaxCycleinteger100Maximum SCF iterations
Converinteger8Convergence threshold = 10⁻ᴺ
Diisinteger6DIIS subspace size
NoDiisbooleanfalseDisable DIIS
Shiftfloat0.0Static level shift (Hartree)
VShiftbooleanfalseDynamic virtual orbital level shift
Dampfloat0.0Density damping factor
NoDampbooleanfalseTurn damping off
Fermifloat0.0Fermi broadening temperature (Hartree)
DirectbooleanfalseDirect SCF (recompute ERIs each iteration)
SavebooleanfalseWrite checkpoint after SCF
RestartbooleanfalseRead initial guess from checkpoint
TightbooleanfalseTighter convergence preset
SDbooleanfalseSteepest Descent SCF
SSDbooleanfalseScaled Steepest Descent SCF
MaxRotinteger512Max QC-SCF macroiterations
MaxNrfloat0.01NR gradient threshold
FullLinearbooleanfalseFull 1D line search in QC-SCF
OldQCbooleanfalseOld polynomial-only QC line search

Examples

Standard RHF:

SCF
  Algorithm  rhf
  MaxCycle   100
  Conver     8
END

Tight convergence with custom DIIS:

SCF
  MaxCycle 200
  Conver   10
  Diis     10
END

Level shift for difficult convergence:

SCF
  Shift    0.5
  MaxCycle 150
END

Direct SCF for large molecules:

SCF
  Direct   true
  MaxCycle 100
END

Checkpointing:

SCF
  Save     true
  MaxCycle 100
END

To restart: set Restart true in a follow-up job.

Notes

  • The Algorithm keyword in SCF is typically redundant with the task: line (e.g., task: RHF STO-3G), but can be used to override it.
  • Guess sad (Superposition of Atomic Densities) is the default and recommended initial guess for most systems.
  • Direct SCF recomputes ERIs each iteration, trading memory for CPU time.
  • QC-SCF is a second-order optimization method that directly minimizes the energy with respect to orbital rotations. Use XQC for DIIS-first with QC fallback.

DFT Section

The DFT section requests a Kohn–Sham DFT calculation and selects the exchange–correlation functional and numerical grid. If no SCF Algorithm is provided, DFT defaults to a restricted reference for singlets and uses the molecule multiplicity to dispatch open-shell calculations.

Keywords

KeywordAliasesTypeDescription
FunctionalXC, Exchange, Correlation, Methodfunctional nameSelects the DFT functional
GridGridType, Grid_Typepreset or RRRAAASelects the atom-centered XC grid

Lines without a key are also accepted, so PBE0 and UltraFine inside the section are equivalent to Functional PBE0 and Grid UltraFine.

Functional names

FunctionalAccepted namesNotes
BP86BP86, B88P86pure GGA
PBEPBE, PBEPBEpure GGA
TPSSTPSSpure meta-GGA
M06-LM06L, M06-Lpure meta-GGA
B3LYPB3LYPhybrid GGA, 20% exact exchange
PBE0PBE0, PBE1PBEhybrid GGA, 25% exact exchange
M06-2XM062X, M06-2Xhybrid meta-GGA, 54% exact exchange
ωB97X-DWB97XD, W97XD, OmegaB97XD, ωB97X-Drange-separated hybrid with D2 dispersion

Function names are case-insensitive; hyphens, underscores, and parentheses are ignored during parsing.

Grid names

GridMeaning
Coarse, CoarseGrid, Pass0GridSmall smoke-test grid
SG1, SG1GridSG1-style route alias; maps through integral grid options
Medium, MediumGridMedium DFT grid
Fine, FineGridFine DFT grid
UltraFine, UltraFineGridLarger production grid
SuperFine, SuperFineGridLargest built-in preset
RRRAAACustom radial/angular count, e.g. 099302 = 99 radial × 302 angular

Custom grid values are six digits: first three digits are radial points, last three are the requested angular order. Requested angular orders up to 302 use genuine Lebedev–Laikov grids where available; requests above 302 use the Fibonacci-sphere fallback.

Examples

PBE0 with UltraFine grid:

title: Water PBE0 DFT

MOLECULE
  Charge 0
  Multiplicity 1
  Units Angstrom
END

task: STO-3G

DFT
  Functional PBE0
  Grid UltraFine
END

SCF
  MaxCycle 100
  Conver 8
END

GEOMETRY
O 0.000000  0.000000  0.117000
H 0.000000  0.755000 -0.471000
H 0.000000 -0.755000 -0.471000
END

M06-L with a custom 99 × 302 grid:

title: H2 M06-L custom grid

task: STO-3G

DFT
  M06-L
  Grid 099302
END

SCF
  MaxCycle 80
  Conver 8
END

GEOMETRY
H 0.000000 0.000000 0.000000
H 0.000000 0.000000 0.740000
END

Notes

  • DFT calculations still use the SCF section for convergence controls such as MaxCycle, Conver, Direct, checkpointing, and damping.
  • Exact exchange in hybrid and range-separated functionals increases cost because exchange matrix builds require electron-repulsion integrals.
  • Meta-GGA functionals (TPSS, M06-L, M06-2X) require kinetic-energy density on the grid and are more sensitive to grid quality than GGAs.

INT Section

The INT section controls integral computation: ERI screening, engine selection, symmetry, and grid settings.

Keywords

KeywordTypeDefaultDescription
Acc2Einteger12ERI screening threshold = 10⁻ᴺ
UltraFinebooleanfalseUse larger integration grid
Eriauto | md | sp | rysautoERI engine selection
NoSymmbooleanfalseDisable point-group symmetry
GridCoarse | Fine | UltraFineFineDFT integration grid (future)
Relativisticdk | zora | nonenoneRelativistic Hamiltonian (future)
FcModinteger0Freeze-core shell count (per atom)
SemiempiricalstringActivate a semiempirical method

ERI Engine Selection

EngineEri valueBest forNotes
McMurchie–DavidsonmdAll systems (default)Universal, correct for all angular momenta
SP Fast Pathssp / spfastOrganic (H,C,N,O,F)10× ERI speedup for S/P shells only
Rys Quadraturerys / rysquadratureTransition metals, D/F+Rys-first with MD fallback
AutoautoGeneral useFast SP + Rys routing, MD fallback

The selected engine applies to all ERI computation paths: in-core integral build, direct SCF, analytical nuclear gradients, fully analytical Hessians, and semi-analytical (FD) Hessians.

Examples

Recommended (auto):

INT
  Eri  auto
END

Force McMurchie–Davidson (baseline):

INT
  Eri  md
END

SP fast paths for organic molecules:

INT
  Eri  sp
END

Rys quadrature for transition metals:

INT
  Eri  rys
END

Disable symmetry:

INT
  NoSymm true
END

Tighter ERI screening:

INT
  Acc2E 14
END

DFT integration grid (future):

INT
  Grid UltraFine
END

Notes

  • Acc2E 12 (10⁻¹²) is the default ERI screening threshold.
  • Symmetry is enabled by default. NoSymm true skips point-group ERI screening and prints all orbital irreps as A (C1 symmetry).
  • The 8-fold permutational symmetry of ERIs is always applied regardless of NoSymm.
  • The Grid keyword controls the DFT numerical integration grid (for future DFT support).

OPT Section

The OPT section controls geometry optimization, transition-state search, IRC, NEB, coordinate models, and constraints.

Keywords

KeywordTypeDefaultDescription
Algorithmbfgs | berny | rberny | sella | geometricbernyOptimizer backend
Coordcartesian | primitive | dlc | hdlc | tric | tric-pcartesianInternal-coordinate model
MaxCycleinteger100Maximum optimization cycles
Trustfloat0.3Initial trust radius (Bohr)
TMaxfloat0.5Maximum trust radius (Bohr)
NoTrustbooleanfalseDisable TRM level-shifted Newton step
TransitionStatebooleanfalseSearch for first-order saddle point
IRCbooleanfalseIntrinsic reaction coordinate follow
IRCDir+1 | -1bothRestrict IRC direction
NEBbooleanfalseNudged elastic band
Imagesinteger8Number of NEB images
SellaOrder1 | 21Sella gradient order (1 = Hessian-only)
Steptrm | prfo | mmftrmStep type (TRM, P-RFO, or MMF)
Updatebfgs | psb | ms | bofill | sr1 | dfp | bfgs_powell | ts-bfgsmsp / ts-bfgsHessian update formula
DiisbooleanfalseEnable GEDIIS
DiisSizeinteger6GEDIIS subspace size
SymmetrybooleantrueExploit point-group symmetry in IC build
MOGuessbooleantrueReuse previous cycle's orbitals as SCF guess (warm start)
OptSymmetrybooleanfalseEnforce symmetry along the optimisation path
NoStepbooleanfalseRun optimizer without taking a step (debug)
Hessiananalytical | semianalyticalHessian source for IC initialisation
NoCartHessianbooleanfalseIgnore any inline Cartesian Hessian
CartHessianmatrixInline Cartesian Hessian matrix
RigidbooleanfalseRigid-body component removal (TRIC only)
RemoveTrbooleanfalseRemove TR modes (DLC/HDLC/TRIC only)
ConMethod0 | 11Delocalised construction method
ConnectbooleanfalseReconnect connectivity graph at every step
AddCartbooleanfalseAdd Cartesian components to IC basis
ConnectIsolatedbooleanfalseConnect isolated fragments
PrimitivebooleanfalseAlias for Coord primitive
PrimStepbooleantrueStep projection in primitive IC space
Gaussdefault | loose | tightdefaultConvergence preset
Tighteninteger0Tighten all criteria by 10⁻ᴺ
MaxDisplacementfloat0.5Max allowed step length
Constraintsclause-listGeometric constraints
Dihedralbooleantrue(RBerny only) Include dihedral angles in the IC set
SuperWeakDihbooleanfalse(RBerny only) Use super-weak dihedral force constants
EnergyNoisefloat2e-8(RBerny only) Energy-noise floor for trust-radius updates

Algorithm & Coordinate Model

AlgorithmDescription
bfgsCartesian BFGS optimizer
bernyBerny RFO with internal coordinates
rbernyRust Berny backend (native IC implementation)
sellaSaddle-point-aware IC optimizer (TS-BFGS)
geometricGeomeTRIC native-TRIC quasi-Newton optimizer (RS-P-RFO for TS); aliases geomet, tric
CoordDescription
cartesianDirect 3N optimisation
primitiveFull redundant primitive IC set
dlcNon-redundant delocalised basis
hdlcHybrid DLC with Cartesian components
tricTRIC (translation/rotation removed)
tric-pTRIC with projected Cartesian components

Hessian Updates

| Update | Description | Note | |----------|-------------| | bfgs | Standard BFGS (minima) | working on | | psb | Powell–Symmetric–Broyden, rank-2 (TS) | working on | | ms | Murtagh–Sargent, rank-1 (TS) | working on | | bofill | φ·PSB + (1-φ)·MS, blends PSB and MS (TS) | working on | | sr1 | Symmetric rank-1 (naturally indefinite) | working on | | dfp | Davidon–Fletcher–Powell (PD) | working on | | bfgs_powell | Auto: BFGS for minima, Bofill for TS | working on | | ts-bfgs | TS-BFGS: BFGS in |H| space (saddle points) | working on |

Default: MSP for minima, TS-BFGS for TS (Sella), Bofill for TS (Berny).

Step Types

StepDescription
trmTrust-region (level-shifted Newton)
prfoPartitioned RFO eigenvector following (TS)
mmfMinimum-mode following (flat surfaces, TS)

RBerny Backend Controls

When the optimizer backend is Algorithm rberny (or the RBerny task token), three additional backend-specific keywords are recognised in the OPT section. These fine-tune how the RBerny engine constructs its internal coordinates and manages the trust-radius update.

Dihedral

Controls whether dihedral (torsion) angles are included in the primitive internal-coordinate set. When set to false, dihedrals are omitted entirely, reducing the total coordinate count and removing torsional coupling from the Lindh Hessian guess.

OPT
  Algorithm  rberny
  Dihedral   false
END

SuperWeakDih

When enabled, dihedral angles that would normally receive a "weak" force constant (≈ 0.1 scaling factor in the Lindh Hessian guess) are instead treated as "superweak" (≈ 0.01 scaling factor). This gives very soft initial force constants for floppy torsional modes, preventing the first few optimisation steps from over‑correcting large‑amplitude dihedral motion.

OPT
  Algorithm     rberny
  SuperWeakDih  true
END

EnergyNoise

Estimated energy precision in Hartree. The trust‑radius update uses a noise floor of 10 × EnergyNoise: when the predicted energy change falls below this threshold the optimizer treats the change as numerically unreliable and adjusts the trust radius conservatively (neither growing nor shrinking it aggressively). Useful on flat potential‑energy surfaces where small energy differences can be dominated by numerical noise.

OPT
  Algorithm    rberny
  EnergyNoise  1e-7
END

FREQ Section

The FREQ section controls harmonic frequency analysis and thermochemistry.

Keywords

KeywordTypeDefaultDescription
Hessiananalytical | semianalyticalHessian source (default: analytical for RHF/UHF)
NumericalbooleanfalseForce finite-difference Hessian
Stepfloat0.01Finite-difference step (Bohr)
Temperaturefloat298.15Temperature for thermochemistry (K)
Pressurefloat1.0Pressure for thermochemistry (atm)
Scalefloat1.0Frequency scaling factor for ZPE / thermal corrections
SymmetryNumberintegerautoRotational symmetry number (auto-detected)
ReadfileRead Hessian from checkpoint file
SavebooleanfalseWrite Hessian to checkpoint after computation

Examples

Standard frequency analysis:

FREQ
  Hessian     analytical
  Temperature 298.15
  Pressure    1.0
END

Force numerical Hessian:

FREQ
  Numerical true
  Step        0.01
END

Read Hessian from checkpoint:

FREQ
  Read  myjob.oqd
END

Custom thermochemistry conditions:

FREQ
  Temperature 350.0
  Pressure    1.0
  Scale       0.9854
END

Custom symmetry number:

FREQ
  SymmetryNumber 2
END

Notes

  • The analytical Hessian is the default for RHF/UHF single-point frequency calculations.
  • Hessian semi forces finite-difference of gradients (slower but can be used for methods without analytical Hessian).
  • The symmetry number is auto-detected from the point group. Override with SymmetryNumber N if needed.
  • Frequency scaling factor applies to ZPE and all thermal corrections.
  • Temperature and pressure affect thermal corrections and entropy.

MP2 Section

The MP2 section controls Møller–Plesset second-order correlation energy calculations.

Keywords

KeywordTypeDefaultDescription
Scalingnone | scs | sosnoneSpin-component scaling
OSfloatscaling defaultOpposite-spin correlation scale factor
SSfloatscaling defaultSame-spin correlation scale factor
DFbooleanfalseDensity-fitting / RI-MP2 request
AuxstringAuxiliary basis set for DF-MP2
KeepHalfbooleantrueKeep half-transformed AO integrals
DiscardVVbooleanfalseDiscard virtual–virtual blocks (DF only)
SkipbooleanfalseSkip MP2 evaluation
FreezeCorefalse | true | auto | integerfalseFrozen-core policy

Spin-Component Scaling

ScalingDescription
noneCanonical MP2 (no scaling)
scsSCS-MP2 defaults: OS = 1.2, SS = 1/3
sosSOS-MP2 defaults: OS = 1.3, SS = 0.0

Use OS and SS to set custom scale factors.

Frozen Core

  • FreezeCore false, Full, or NoFC correlates all occupied orbitals.
  • FreezeCore true or FreezeCore auto freezes a chemically standard core from atomic numbers.
  • FreezeCore N freezes exactly N lowest occupied orbitals.

Examples

Canonical all-electron MP2:

MP2
  Scaling none
  FreezeCore false
END

Spin-scaled MP2 (SCS-MP2):

MP2
  Scaling  scs
  FreezeCore false
END

SOS-MP2:

MP2
  Scaling  sos
END

DF-MP2 request with auxiliary basis:

MP2
  DF   true
  Aux  def2-TZVP-RI
END

Frozen-core MP2:

MP2
  FreezeCore auto
END

Notes

  • MP2 currently computes in-core TwoElectronIntegrals for the AO-to-MO transform, even when direct_scf is enabled for SCF.
  • The driver reports occupied, correlated occupied, virtual, and frozen-core counts.
  • DF and Aux are parsed for future RI-MP2 support; the current production path is canonical in-core MP2.

CC Section

The CC section controls CCSD and CCSD(T) coupled-cluster calculations.

Keywords

KeywordTypeDefaultDescription
Triplesnone | st | pt | fstPerturbative-triples model
FreezeCorebooleanfalseCorrelate only valence electrons
DropVirtfloat0.0Drop virtual orbitals below threshold
Convinteger8Convergence threshold = 10⁻ᴺ
MaxIterinteger50Maximum CC iterations
DiisbooleantrueEnable CC-DIIS
DiisStartinteger2First iteration to use DIIS
Shiftfloat0.0Static level shift for amplitude update
ReadfileRead amplitudes from checkpoint
SkiplistComma-separated skip tokens
Acc2Eintegerfrom INTERI threshold override for CC
BruecknerbooleanfalseBrueckner CC (BCCD/BCCD(T))

Triples Models

TriplesDescription
noneCCSD only (no triples)
stStandard CCSD(T) (non-iterative)
ptCCSD(2)_T (iterative)
fFull CCSDT (iterative, expensive)

CCSD(T) uses Triples st by default.

Examples

CCSD(T) standard:

CC
  Triples   st
  FreezeCore false
END

CCSD only (no triples):

CC
  Triples  none
END

Tighter convergence:

CC
  Conv        8
  MaxIter     80
  Diis        true
  DiisStart   3
  Shift       0.2
  FreezeCore  false
END

Frozen-core CCSD(T):

CC
  Triples     st
  FreezeCore  true
END

Brueckner CCSD(T):

CC
  Triples     st
  Brueckner   true
END

Notes

  • CC always computes in-core TwoElectronIntegrals for the AO→MO transform, even when direct_scf is enabled for SCF.
  • DiisStart controls when DIIS acceleration begins (default: iteration 2).
  • DropVirt discards virtual orbitals with orbital energy above the threshold.
  • Read loads amplitudes from a checkpoint for restart.
  • Brueckner enables BCCD/BCCD(T) (orbital-optimized CC).

SOLVATION Section

Controls implicit solvation. Optional; when absent the calculation runs in vacuo.

Syntax

SOLVATION
  Model           cpcm | cosmo | iefpcm | ssvpe | ddcosmo | ddpcm | smd
  Dielectric      <float>           # static dielectric constant ε
  Solvent         <name>            # named solvent (required for SMD)
  Surface         swig | iswig      # cavity discretization
  Lebedev         <int>             # angular grid points per atom
  VdwScale        <float>           # scaling factor for vdW radii
  ProbeRadius     <float>           # probe radius added to vdW radii (Å)
  MaxCycle        <int>             # solvent response iterations
  Conver          <float>           # solvent response convergence threshold
  Frozen          true | false      # freeze solvent during post-SCF
  Equilibrium     true | false      # equilibrium solvation for TD-DFT
END

Keyword Reference

KeywordValuesDefaultDescription
Modelcpcm, cosmo, iefpcm, ssvpe, ddcosmo, ddpcm, smdcpcmElectrostatic solvent model
Dielectricfloat78.3553 (water)Static dielectric constant
SolventstringNamed solvent for tabulated parameters (required for SMD)
Surfaceswig, iswigswigCavity surface discretization
Lebedevint302Angular Lebedev quadrature points per atom
VdwScalefloat1.2Scaling of van der Waals radii
ProbeRadiusfloat (Å)0.0Probe radius added to vdW radii
MaxCycleint20Maximum solvent response iterations
Converfloat1e-7Solvent response convergence threshold
FrozenboolfalseKeep solvent frozen during post-SCF
EquilibriumboolfalseEquilibrium (not non-equilibrium) solvation

Electrostatic Models

ModelFull NameK MatrixR MatrixECPAnalytical GradientAnalytical Hessian
C-PCMConductor-like PCMS−f·I
COSMOConductor-like ScreeningS−f·I (f=(ε−1)/(ε+½))
IEF-PCMIntegral Equation Formalism PCMS − f/(2π)·D·A·S−f·[I − D·A/(2π)]
SS(V)PESurface & Simulation of Vol. Pol.symm. D·A·S−f·[I − D·A/(2π)]
ddCOSMODomain-decomposition COSMOL matrix (spherical harmonics)✓ *
ddPCMDomain-decomposition PCML + A matrices✓ *
SMDSolvation Model based on DensityIEF-PCM on SMD radii+ CDS
  • ddCOSMO/ddPCM gradient uses adjoint-Lagrangian formulation; the l=0 block is regularized with ε = 1e-3 to stabilize the L-matrix solve.

Model Overview

All seven solvation models belong to one of three engine families. Choose the model that best fits your needs:

ModelFamilyEngineSurface MeshSolvent SourceECPGradientHessian
C-PCMPCMPcmSolver✓ (SWIG/ISWIG)lookup table + custom ε
COSMOPCMPcmSolver✓ (SWIG/ISWIG)lookup table + custom ε
IEF-PCMPCMPcmSolver✓ (SWIG/ISWIG)lookup table + custom ε
SS(V)PEPCMPcmSolver✓ (SWIG/ISWIG)lookup table + custom ε
ddCOSMODomain-DecompositionDdSolver✗ (atom spheres)lookup table + custom ε
ddPCMDomain-DecompositionDdSolver✗ (atom spheres)lookup table + custom ε
SMDSMDPcmSolver + SmdCds✓ (SWIG/ISWIG)SMD database (179 solvents) **
  • ddCOSMO/ddPCM gradients use the adjoint-Lagrangian formulation. The l=0 block is regularized with ε = 1e-3 to stabilise the L-matrix solve.

  • SMD requires a named solvent from the SMD database. A bare Dielectric without Solvent will construct IEF-PCM electrostatics but cannot compute the CDS term, and the calculation will abort.


Per-Model Guides

Each sub-section lists the keywords that actually take effect for that model, how the solvent is resolved, and any model-specific restrictions.

C-PCM (Conductor-like PCM)

The default model. Treats the solvent as a conductor with screening factor f = (ε − 1) / ε.

Supported keywords:

KeywordEffectDefault
Dielectric / epsStatic dielectric constant78.3553 (water)
Solvent / nameNamed solvent for ε lookup
SurfaceCavity discretisation: swig or iswigswig
LebedevAngular Lebedev points per atom302
VdwScaleScaling factor for vdW radii1.2
ProbeRadiusProbe radius added to vdW radii (Å)0.0
MaxCycleSolvent response iterations20
ConverSolvent response convergence threshold1e-7
FrozenFreeze solvent during post-SCFfalse
EquilibriumEquilibrium (not non-equilibrium) solvationfalse

Solvent resolution:

  1. If Solvent is given, the dielectric constant is looked up from the built-in solvent table (20 common solvents; see below). If the name is not found, the default 78.3553 is used silently.
  2. An explicit Dielectric overrides any solvent lookup.
  3. When neither Solvent nor Dielectric is given, the default 78.3553 (water) is used.

Examples:

Using a named solvent:

task: SCF RHF/STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model cpcm
  Solvent water
END

Using a custom dielectric without a named solvent:

task: SCF RHF/STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model cpcm
  Dielectric 46.826
END

COSMO (Conductor-like Screening Model)

Same keyword set as C-PCM, but uses the COSMO screening factor f = (ε − 1) / (ε + ½).

Supported keywords: Same as C-PCM.

Example:

task: SCF UHF/6-31G(d)

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model cosmo
  Solvent acetonitrile
END

IEF-PCM (Integral Equation Formalism PCM)

Full boundary-element PCM using the S (screened Coulomb) and D (dielectric response) matrices. This is the electrostatic engine used internally when SMD is selected.

Supported keywords: Same as C-PCM.

Example:

task: SCF RHF/6-31+G(d,p)

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model iefpcm
  Solvent tetrahydrofuran
  Surface iswig
END

SS(V)PE (Surface and Simulation of Volume Polarisation for Electrostatics)

Same keyword set as C-PCM, but uses a symmetrised D·A·S formulation to better approximate volume polarisation effects.

Supported keywords: Same as C-PCM.

Example:

SOLVATION
  Model ssvpe
  Solvent dichloromethane
  Lebedev 590
END

ddCOSMO (Domain-Decomposition COSMO)

Uses atom-centred real-spherical-harmonic expansions instead of a cavity surface mesh. This avoids the cost of surface matrix construction but has fewer capabilities.

Supported keywords:

KeywordEffectDefaultNotes
Dielectric / epsStatic dielectric constant78.3553
Solvent / nameNamed solvent for ε lookupUses static_dielectric() table
LebedevAngular Lebedev points per atom302Must be a supported grid size
MaxCycleSolvent response iterations20
ConverSolvent response convergence threshold1e-7

Keywords with no effect (ignored if given, no error):

  • Surface — ddCOSMO does not use a surface mesh
  • VdwScale — fixed UFF radii × 1.1 are always used
  • ProbeRadius — no probe radius is added
  • Frozen, Equilibrium — not implemented

Restrictions:

  • No analytical Hessian — calculations requesting freq will fail.
  • ECP not supported — ECP integrals are not available for ddCOSMO.
  • Gradient uses adjoint-Lagrangian — the l=0 block is regularised (ε = 1e-3) to stabilise the L-matrix solve.

Example:

task: SCF RHF/STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  H   0.000000   0.000000   0.000000
  H   0.000000   0.000000   1.400000
END

SOLVATION
  Model ddcosmo
  Solvent water
  Lebedev 302
END

ddPCM (Domain-Decomposition PCM)

Extends ddCOSMO with a dielectric preconditioner (A_diele matrix) for improved accuracy at higher dielectric constants.

Supported keywords and restrictions: Identical to ddCOSMO.

Example:

SOLVATION
  Model ddpcm
  Solvent acetonitrile
  MaxCycle 50
  Conver 1e-8
END

SMD (Solvation Model based on Density)

SMD combines IEF-PCM electrostatics (with SMD-specific cavity radii) with a density-independent CDS (cavity-dispersion-solvent-structure) term. It requires a named solvent from the Minnesota SMD parameter database.

Supported keywords:

KeywordEffectDefaultNotes
Solvent / nameRequired. SMD solvent nameFrom SMD database (179 solvents)
Dielectric / epsStatic dielectric constantfrom SMD databaseOverrides database value if set
SurfaceCavity discretisationswig
LebedevAngular Lebedev points per atom302
VdwScaleScaling factor for vdW radii1.2Overridden by SMD cavity radii
ProbeRadiusProbe radius added to vdW radii0.0Overridden by SMD cavity radii
MaxCycleSolvent response iterations20
ConverSolvent response convergence threshold1e-7
FrozenFreeze solvent during post-SCFfalse
EquilibriumEquilibrium solvationfalse

Restrictions:

  • ⚠️ Solvent is required — the CDS term cannot be computed without a named solvent from the SMD database. A bare Dielectric without Solvent will construct IEF-PCM electrostatics with SMD cavity radii but will not include the CDS term, and the calculation will abort with an error.
  • VdwScale and ProbeRadius are parsed but overridden by SMD-specific cavity radii from the database.
  • SMD provides its own dielectric constant from the database. Setting Dielectric explicitly overrides the database value (use with care).

Examples:

Using a named solvent from the SMD database:

task: SCF RHF/STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model smd
  Solvent water
END

With explicit dielectric override:

task: SCF RHF/STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model smd
  Solvent ethanol
  Dielectric 25.0
END

Keyword Quick Matrix

A row for every keyword, with per-model support.

KeywordC-PCMCOSMOIEF-PCMSS(V)PEddCOSMOddPCMSMD
Dielectric / eps
Solvent / name⚠️
Surface (swig/iswig)
Lebedev / ng
VdwScale✓ *
ProbeRadius✓ *
MaxCycle / maxiter
Conver / conv
Frozen
Equilibrium

Overridden by SMD cavity radii from the database.

⚠️ Required for SMD; optional for all other models.


Named Solvents

Lookup Table (All Models except SMD)

When Solvent is given without an explicit Dielectric, the dielectric constant is looked up from the built-in table below. Names are matched case-insensitively after stripping spaces, hyphens, underscores, commas, and dots.

SolventεAliases
Water78.3553water, h2o
DMSO46.7dimethylsulfoxide, dmso
Nitromethane38.20nitromethane, ch3no2
Acetonitrile35.688acetonitrile, ch3cn, mecn
Methanol32.613methanol, ch3oh
Ethanol24.852ethanol, ch3ch2oh
Acetone20.493acetone
Propylene Carbonate64.96propylenecarbonate
1,2-Dichloroethane10.125dichloroethane, 12dichloroethane
Dichloromethane8.93dichloromethane, methylenechloride, ch2cl2, dcm
Tetrahydrofuran7.4257tetrahydrofuran, tetrahydrofurane, thf
Aniline6.8882aniline
Chlorobenzene5.6968chlorobenzene
Chloroform4.7113chloroform, chcl3
Toluene2.3741toluene
1,4-Dioxane2.2099dioxane, 14dioxane
Benzene2.2706benzene, c6h6
Carbon Tetrachloride2.2280carbontetrachloride, ccl4
Cyclohexane2.0165cyclohexane, c6h12
n-Heptane1.9113heptane, nheptane
n-Hexane1.8819hexane, nhexane

For solvents not in this table, use an explicit Dielectric keyword with the desired value.

SMD Solvent Database (SMD Model Only)

SMD requires a solvent name from the Minnesota SMD parameter database. The database contains 179 solvents and is only available when Model = smd.

Quick Reference (Dielectric Constants)

SolventεSolventεSolventε
1,1,1-trichloroethane7.08261,1,2-trichloroethane7.19371,2,4-trimethylbenzene2.3653
1,2-dibromoethane4.93131,2-dichloroethane10.1251,2-ethanediol40.245
1,4-dioxane2.20991-bromo-2-methylpropane7.77921-bromooctane5.0244
1-bromopentane6.2691-bromopropane8.04961-butanol17.332
1-chlorohexane5.94911-chloropentane6.50221-chloropropane8.3548
1-decanol7.53051-fluorooctane3.891-heptanol11.321
1-hexanol12.511-hexene2.07171-hexyne2.615
1-iodobutane6.1731-iodohexadecane3.53381-iodopentane5.6973
1-iodopropane6.96261-nitropropane23.731-nonanol8.5991
1-octanol9.86291-pentanol15.131-pentene1.9905
1-propanol20.5242,2,2-trifluoroethanol26.7262,2,4-trimethylpentane1.9358
2,4-dimethylpentane1.89392,4-dimethylpyridine9.41762,6-dimethylpyridine7.1735
2-bromopropane9.36102-butanol15.9442-chlorobutane8.3930
2-heptanone11.6582-hexanone14.1362-methoxyethanol17.2
2-methyl-1-propanol16.7772-methyl-2-propanol12.472-methylpentane1.89
2-methylpyridine9.95332-nitropropane25.6542-octanone9.4678
2-pentanone15.2002-propanol19.2642-propen-1-ol19.011
3-methylpyridine11.6453-pentanone16.784-heptanone12.257
4-methyl-2-pentanone12.8874-methylpyridine11.9575-nonanone10.6
a-chlorotoluene6.7175acetic acid6.2528acetone20.493
acetonitrile35.688acetophenone17.44aniline6.8882
anisole4.2247benzaldehyde18.220benzene2.2706
benzonitrile25.592benzylalcohol12.457bromobenzene5.3954
bromoethane9.01bromoform4.2488butanal13.45
butanoic acid2.9931butanone18.246butanonitrile24.291
butylamine4.6178butylethanoate4.9941butylether3.0473
carbon disulfide2.6105carbon tetrachloride2.2280chlorobenzene5.6968
chloroform4.7113cis-1,2-dimethylcyclohexane2.06cis-decalin2.2139
cyclohexane2.0165cyclohexanone15.619cyclopentane1.9608
cyclopentanol16.989cyclopentanone13.58decalin (cis/trans mixture)2.196
dibromomethane7.2273dichloromethane8.93diethylamine3.5766
diethylether4.2400diethylsulfide5.723diiodomethane5.32
diisopropyl ether3.38dimethyldisulfide9.6dimethylsulfoxide46.826
diphenylether3.73dipropylamine2.9112e-1,2-dichloroethene2.14
e-2-pentene2.051ethanethiol6.667ethanol24.852
ethylbenzene2.4339ethylethanoate5.9867ethylmethanoate8.3310
ethylphenylether4.1797fluorobenzene5.42formamide108.94
formicacid51.1hexanoicacid2.6iodobenzene4.5470
iodoethane7.6177iodomethane6.8650isopropylbenzene2.3712
m-cresol12.44m-xylene2.3478mesitylene2.2650
methanol32.613methylbenzoate6.7367methylbutanoate5.5607
methylcyclohexane2.024methylethanoate6.8615methylmethanoate8.8377
methylpropanoate6.0777n,n-dimethylacetamide37.781n,n-dimethylformamide37.219
n-butylbenzene2.36n-decane1.9846n-dodecane2.0060
n-heptane1.9113n-hexadecane2.0402n-hexane1.8819
n-methylaniline5.9600n-methylformamide(e/zmixture)181.56n-nonane1.9605
n-octane1.9406n-pentadecane2.0333n-pentane1.8371
n-undecane1.991nitrobenzene34.809nitroethane28.29
nitromethane36.562o-chlorotoluene4.6331o-cresol6.76
o-dichlorobenzene9.9949o-nitrotoluene25.669o-xylene2.5454
p-isopropyltoluene2.2322p-xylene2.2705pentanal10.0
pentanoic acid2.6924pentyl ethanoate4.7297pentylamine4.2010
perfluorobenzene2.029propanal18.5propanoic acid3.44
propanonitrile29.324propyl ethanoate5.5205propylamine4.9912
pyridine12.978sec-butylbenzene2.3446tert-butylbenzene2.3447
tetrachloroethene2.268tetrahydrofuran7.4257tetrahydrothiophene-s,s-dioxide43.962
tetralin2.771thiophene2.7270thiophenol4.2728
toluene2.3741trans-decalin2.1781tributylphosphate8.1781
trichloroethene3.422triethylamine2.3832water78.355
xylene (mixture)2.3879z-1,2-dichloroethene9.2

Full Table (All SMD Parameters)

Complete Minnesota SMD descriptors for all supported solvents.

Solventnαβγ (cal mol⁻¹ Å⁻²)εφψ
1,1,1-trichloroethane1.43790.00.0936.247.08260.00.60
1,1,2-trichloroethane1.47170.130.1348.977.19370.00.60
1,2,4-trimethylbenzene1.50480.00.1942.032.36530.6670.0
1,2-dibromoethane1.53870.100.1756.934.93130.00.5
1,2-dichloroethane1.44480.100.1145.8610.1250.00.5
1,2-ethanediol1.43180.580.7869.0740.2450.00.5
1,4-dioxane1.42240.000.6447.142.20990.00.0
1-bromo-2-methylpropane1.43480.000.1234.697.77920.00.2
1-bromooctane1.45240.00.1241.285.02440.00.111
1-bromopentane1.44470.000.1238.76.2690.00.167
1-bromopropane1.43430.00.1236.368.04960.00.250
1-butanol1.39930.370.4835.8817.3320.00.0
1-chlorohexane1.41990.00.1037.035.94910.00.143
1-chloropentane1.41270.00.135.126.50220.00.167
1-chloropropane1.38790.00.130.668.35480.00.25
1-decanol1.43720.370.4841.047.53050.00.0
1-fluorooctane1.39350.00.1033.923.890.00.111
1-heptanol1.42490.370.4838.511.3210.00.0
1-hexanol1.41780.370.4837.1512.510.00.0
1-hexene1.38370.000.0725.762.07170.00.0
1-hexyne1.39890.120.1028.792.6150.00.0
1-iodobutane1.50010.000.1540.656.1730.00.0
1-iodohexadecane1.48060.000.1546.483.53380.00.0
1-iodopentane1.49590.000.1541.565.69730.00.0
1-iodopropane1.50580.000.1541.456.96260.00.0
1-nitropropane1.40180.000.3143.3223.730.00.0
1-nonanol1.43330.370.4840.148.59910.00.0
1-octanol1.42950.370.4839.019.86290.00.0
1-pentanol1.41010.370.4836.515.130.00.0
1-pentene1.37150.000.0722.241.99050.00.0
1-propanol1.38500.370.4833.5720.5240.00.0
2,2,2-trifluoroethanol1.29070.570.2542.0226.7260.00.5
2,2,4-trimethylpentane1.39150.000.0026.381.93580.00.0
2,4-dimethylpentane1.38150.00.0025.421.89390.00.0
2,4-dimethylpyridine1.50100.00.6346.869.41760.6250.0
2,6-dimethylpyridine1.49530.00.6344.647.17350.6250.0
2-bromopropane1.42510.000.1433.469.36100.00.25
2-butanol1.39780.330.5632.4415.9440.00.0
2-chlorobutane1.39710.000.1231.18.39300.00.2
2-heptanone1.40880.00.5137.611.6580.00.0
2-hexanone1.40070.00.5136.6314.1360.00.0
2-methoxyethanol1.40240.300.8444.3917.20.00.0
2-methyl-1-propanol1.39550.370.4832.3816.7770.00.0
2-methyl-2-propanol1.38780.310.6028.7312.470.00.0
2-methylpentane1.37150.00.0024.31.890.00.0
2-methylpyridine1.49570.00.5847.59.95330.7140.0
2-nitropropane1.39440.000.3342.1625.6540.000.0
2-octanone1.41510.000.5137.299.46780.00.0
2-pentanone1.38950.000.5133.4615.2000.00.0
2-propanol1.37760.330.5630.1319.2640.00.0
2-propen-1-ol1.41350.380.4836.3919.0110.00.0
3-methylpyridine1.50400.00.5449.6111.6450.7140.0
3-pentanone1.39240.000.5135.6116.780.00.0
4-heptanone1.40690.000.5135.9812.2570.00.0
4-methyl-2-pentanone1.39620.00.5133.8312.8870.00.0
4-methylpyridine1.50370.00.5450.1711.9570.7140.0
5-nonanone1.41950.00.5137.8310.60.00.0
a-chlorotoluene1.53910.00.3353.046.71750.750.125
acetic acid1.37200.610.4439.016.25280.00.0
acetone1.35880.040.4933.7720.4930.00.0
acetonitrile1.34420.070.3241.2535.6880.00.0
acetophenone1.53720.000.4856.1917.440.6670.0
aniline1.58630.260.4160.626.88820.8570.0
anisole1.51740.00.2950.524.22470.750.0
benzaldehyde1.54630.00.3954.6918.2200.8570.0
benzene1.50110.00.1440.622.27061.00.0
benzonitrile1.52890.00.3355.8325.5920.750.0
benzylalcohol1.53960.330.5652.9612.4570.750.0
bromobenzene1.55970.00.0950.725.39540.8570.143
bromoethane1.42390.00.1234.09.010.00.333
bromoform1.60050.150.0664.584.24880.00.75
butanal1.38430.00.4535.0613.450.00.0
butanoic acid1.39800.600.4537.492.99310.00.0
butanone1.37880.000.5134.518.2460.00.0
butanonitrile1.38420.00.3638.7524.2910.00.0
butylamine1.40310.160.6133.744.61780.00.0
butylethanoate1.39410.00.4535.814.99410.00.0
butylether1.39920.000.4535.983.04730.00.0
carbon disulfide1.63190.00.0745.452.61050.00.0
carbon tetrachloride1.46010.000.0038.042.22800.00.8
chlorobenzene1.52410.00.0747.485.69680.8570.143
chloroform1.44590.150.0238.394.71130.00.75
cis-1,2-dimethylcyclohexane1.43600.000.0036.282.060.00.0
cis-decalin1.48100.000.0045.452.21390.00.0
cyclohexane1.42660.000.0035.482.01650.00.0
cyclohexanone1.45070.000.5649.7615.6190.000.0
cyclopentane1.40650.000.0031.491.96080.00.0
cyclopentanol1.45300.320.5646.816.9890.00.0
cyclopentanone1.43660.000.5247.2113.580.00.0
decalin (cis/trans mixture)1.47530.000.0043.822.1960.00.0
dibromomethane1.54200.100.1056.217.22730.00.667
dichloromethane1.42420.100.0539.158.930.00.667
diethylamine1.38640.080.6928.573.57660.00.0
diethylether1.35260.000.4123.964.24000.00.0
diethylsulfide1.44300.000.3235.365.7230.00.0
diiodomethane1.74250.050.2395.255.320.00.0
diisopropyl ether1.36790.000.4124.863.380.00.0
dimethyldisulfide1.52890.000.2848.069.60.00.0
dimethylsulfoxide1.47830.000.8861.7846.8260.00.0
diphenylether1.57870.000.2038.53.730.9230.0
dipropylamine1.40500.080.6932.112.91120.00.0
e-1,2-dichloroethene1.44540.090.0537.132.140.00.5
e-2-pentene1.37930.000.0723.622.0510.00.0
ethanethiol1.43100.000.2433.226.6670.00.0
ethanol1.36110.370.4831.6224.8520.00.0
ethylbenzene1.49590.000.1541.382.43390.750.0
ethylethanoate1.37230.000.4533.675.98670.00.0
ethylmethanoate1.35990.000.3833.368.33100.00.0
ethylphenylether1.50760.000.3246.654.17970.6670.0
fluorobenzene1.46840.000.1038.375.420.8570.143
formamide1.44720.620.6082.08108.940.00.0
formicacid1.37140.750.3853.4451.10.00.0
hexanoicacid1.41630.600.4539.652.60.00.0
iodobenzene1.62000.000.1255.724.54700.8570.0
iodoethane1.51330.000.1540.967.61770.00.0
iodomethane1.53800.000.1343.676.86500.00.0
isopropylbenzene1.49150.000.1639.852.37120.6670.0
m-cresol1.54380.570.3451.3712.440.750.0
m-xylene1.49720.00.1640.982.34780.750.0
mesitylene1.49940.000.1939.652.26500.6670.0
methanol1.32880.430.4731.7732.6130.00.0
methylbenzoate1.51640.000.4653.56.73670.6000.0
methylbutanoate1.38780.000.4535.445.56070.00.0
methylcyclohexane1.42310.000.0033.522.0240.00.0
methylethanoate1.36140.000.4535.596.86150.00.0
methylmethanoate1.34330.000.3835.068.83770.00.0
methylpropanoate1.37750.000.4535.186.07770.00.0
n,n-dimethylacetamide1.43800.000.7847.6237.7810.00.0
n,n-dimethylformamide1.43050.000.7449.5637.2190.00.0
n-butylbenzene1.48980.00.1541.332.360.60.0
n-decane1.41020.000.0033.641.98460.00.0
n-dodecane1.42160.000.0035.852.00600.00.0
n-heptane1.38780.000.0028.281.91130.00.0
n-hexadecane1.43450.000.0038.932.04020.00.0
n-hexane1.37490.000.0025.751.88190.00.0
n-methylaniline1.56840.170.4353.115.96000.750.0
n-methylformamide(e/zmixture)1.43190.400.5555.44181.560.00.0
n-nonane1.40540.00.032.211.96050.00.0
n-octane1.39740.00.030.431.94060.00.0
n-pentadecane1.43150.00.038.342.03330.00.0
n-pentane1.35750.00.022.31.83710.00.0
n-undecane1.43980.00.034.851.9910.00.0
nitrobenzene1.55620.000.2857.5434.8090.6670.0
nitroethane1.39170.020.3346.2528.290.00.0
nitromethane1.38170.060.3152.5836.5620.00.0
o-chlorotoluene1.52680.000.0747.434.63310.750.125
o-cresol1.53610.520.3053.116.760.750.0
o-dichlorobenzene1.55150.000.0452.729.99490.750.25
o-nitrotoluene1.54500.00.2759.1225.6690.60.0
o-xylene1.50550.00.1642.832.54540.750.0
p-isopropyltoluene1.49090.000.1938.342.23220.6000.0
p-xylene1.49580.00.1640.322.27050.750.0
pentanal1.39440.00.436.6210.00.00.0
pentanoic acid1.40850.600.4538.42.69240.00.0
pentyl ethanoate1.40230.00.4536.234.72970.00.0
pentylamine1.4480.160.6135.544.20100.00.0
perfluorobenzene1.37770.000.0031.742.0290.50.5
propanal1.36360.000.4532.4818.50.00.0
propanoic acid1.38690.600.4537.713.440.00.0
propanonitrile1.36550.020.3638.529.3240.00.0
propyl ethanoate1.38420.00.4534.265.52050.00.0
propylamine1.38700.160.6131.314.99120.00.0
pyridine1.50950.00.5252.6212.9780.8330.0
sec-butylbenzene1.48950.00.1640.352.34460.600.0
tert-butylbenzene1.49270.00.1639.782.34470.60.0
tetrachloroethene1.50530.00.045.192.2680.00.667
tetrahydrofuran1.40500.00.4839.447.42570.00.0
tetrahydrothiophene-s,s-dioxide1.48330.00.8887.4943.9620.00.0
tetralin1.54130.00.1947.742.7710.60.0
thiophene1.52890.00.1544.162.72700.80.0
thiophenol1.58930.090.1655.244.27280.8570.0
toluene1.49610.00.1440.22.37410.8570.0
trans-decalin1.46950.00.042.192.17810.00.0
tributylphosphate1.42240.01.2127.558.17810.00.0
trichloroethene1.47730.080.0341.453.4220.00.6
triethylamine1.40100.00.7929.12.38320.00.0
water1.33280.820.35-1.078.355-1.0-1.0
xylene (mixture)1.49950.00.1641.382.38790.750.0
z-1,2-dichloroethene1.44900.110.0539.89.20.00.5

SYMMETRY Section

The SYMMETRY section controls point-group detection and symmetry usage.

Keywords

KeywordTypeDefaultDescription
Tolerancefloat1e-3Tolerance for point-group detection (Å)
DisablebooleanfalseForce C1 symmetry

Examples

Default symmetry detection:

SYMMETRY
  Tolerance  0.001
END

Tighter symmetry tolerance:

SYMMETRY
  Tolerance  0.0001
END

Disable symmetry (force C1):

SYMMETRY
  Disable  true
END

Notes

  • Symmetry is enabled by default. The detected point group is printed in the job header and used to skip symmetry-equivalent ERI shell quartets during energy, gradient, and Hessian computations.
  • Disable true forces C1 symmetry: integrals are computed without point-group screening, and all orbital labels are printed as A.
  • The 8-fold permutational symmetry of ERIs is always applied regardless of symmetry settings.
  • The symmetry tolerance controls how strictly the geometry must match the point group symmetry elements.

PARALLEL Section

The PARALLEL section controls how OpenQuantum uses the CPUs and memory of a single compute node. It selects between three execution layouts:

  • Multi-threaded — one process with a shared-memory thread pool that accelerates the hot kernels (two-electron integrals, Fock builds, and the finite-difference Hessian).
  • Multi-process — several cooperating processes that each take a slice of an embarrassingly parallel workload (the displaced gradient evaluations of a numerical Hessian).
  • HybridNProc processes, each running NThreads threads.

The default is a single process with a single thread (serial execution).

Keywords

KeywordTypeDefaultDescription
NProcinteger1Number of cooperating processes
NThreadsinteger1Shared-memory threads per process
NCoresintegerdetectedTotal physical-core budget
MemmemoryunlimitedTotal memory budget (e.g. 8GB)
MemPerProcmemoryderivedExplicit per-process memory budget

NProc, NThreads, and NCores accept Procs, Threads, and Cores as aliases. Memory values accept kb, mb, gb, and tb suffixes (binary units); a bare number is interpreted as megabytes.

Resolution rules

The requested layout is resolved against the machine as follows:

  1. The default is one process and one thread.
  2. If you give NCores together with NProc, the threads-per-process is derived so that NProc × NThreads ≤ NCores.
  3. If you give Mem together with NProc, the per-process budget is Mem / NProc.
  4. An explicit NThreads or MemPerProc always overrides a derived value.

A memory budget is advisory: the per-process value is reported in the output header and, on Unix, applied as a soft address-space limit so a runaway process fails fast rather than driving the node into swap.

Examples

Two processes spread across eight cores (four threads each):

PARALLEL
  NProc  2
  NCores 8
END

Eight threads in a single process with an 8 GB budget:

PARALLEL
  NThreads 8
  Mem      8GB
END

Route-card and command-line equivalents

The same settings may be given on the route card:

#p rhf/sto-3g freq=(numerical) parallel=(nproc=2,ncores=8)

or on the command line, which takes precedence over the input file:

openquantum --nproc 2 --ncores 8 input.inp
openquantum --nthreads 8 --mem 8GB input.inp

or through environment variables, which a batch scheduler script typically sets and which override the input file:

VariableMeaning
OPENQUANTUM_NPROCNumber of processes
OPENQUANTUM_NTHREADSThreads per process
OPENQUANTUM_NCORESTotal core budget
OPENQUANTUM_MEMTotal memory budget
OPENQUANTUM_MEM_PER_PROCPer-process memory budget

Precedence, from lowest to highest: input file → environment → command line.

Scope

Multi-process execution currently parallelises the numerical (semi-analytical) Hessian used by Numerical true, OptFreq, and the numerical Hessian path of Freq. All run types benefit from the shared-memory thread pool. Analytical Hessians and single-point energies use the thread pool within one process.

CONTROL

The CONTROL section holds general, job-wide settings that are not tied to a specific computational stage: output verbosity and checkpoint I/O. It is the home for future general-purpose keywords.

CONTROL
  PrintLevel       Normal          # Minimal / Normal / Verbose / Debug
  WriteCheckpoint  True
  CheckpointName   water_opt.oqw
END

Keywords

KeywordValuesDefaultDescription
PrintLevelMinimal, Normal, Verbose, DebugNormalOutput verbosity.
WriteCheckpointTrue / FalseTrueWrite a binary checkpoint at the end of the section.
CheckpointNamefile name or path<input>.oqwCheckpoint file name. Relative names are placed next to the input file.
ReadCheckpointTrue / False / pathFalseRead a checkpoint at the start. A bare True reads the most recent one; a path reads that file.
ReadCheckpointNamefile name or pathExplicit checkpoint to read (takes precedence over ReadCheckpoint).

Checkpoint contents

Every section with WriteCheckpoint True (the default) writes a binary (bincode) checkpoint capturing:

  • Final geometry (the optimized geometry for Opt, otherwise the input geometry)
  • Molecular orbitals (coefficients and energies)
  • Hessian, when a frequency calculation was run
  • SCF convergence info (energy components, iterations, convergence flag)
  • Basis-set info (name and full shell definition)

In a multi-section run, each checkpoint file holds only the data of the latest section that wrote it.

Default checkpoint name

When CheckpointName is omitted, the file is named after the input's base name with an .oqw extension (e.g. water.inpwater.oqw), written next to the input file.

Keyword Reference

OpenQuantum accepts keywords through both the section-based input format and the Gaussian-style route card. The keyword reference pages below cover every available option organized by category.

Each keyword page documents:

  • Accepted values and default
  • Aliases and alternative spellings
  • Interaction with other keywords
  • Route-card equivalent (where applicable)

For a quick overview of the input format, see the Input File Format.

Task Tokens

The task: line accepts method/run-type tokens and a basis name. These tokens set the RunType and default method/basis.

Tokens

TokenEffect
RHF / UHF / ROHFSet the SCF method
OPTGeometry optimization (alias of RunType::Opt)
FREQHarmonic frequency analysis
MP2Møller–Plesset 2nd-order correlation
CCSDCoupled-cluster singles & doubles
CCSD(T)CCSD with perturbative triples
TSTransition-state search (alias of OPT with TransitionState true)
IRCIntrinsic reaction coordinate
NEBNudged elastic band
RBernySwitch to the Rust Berny backend
SellaSwitch to the Sella IC optimizer
5D / 7F / 6D / 10FHarmonic selection

Examples

task: RHF STO-3G
task: OPT UHF 6-31G*
task: TS RHF STO-3G
task: FREQ RHF CC-PVDZ
task: MP2 RHF CC-PVDZ
task: CCSD(T) RHF CC-PVDZ
task: SELLA RHF STO-3G
task: RBERNY RHF STO-3G

Notes

  • The first word on the task: line is the run-type token.
  • The second word is the method (RHF/UHF/ROHF) or implicit from the token.
  • The third word is the basis set name.
  • Additional key=value pairs on the task: line are also accepted.

SCF Keywords

KeywordEffect
Algorithm rhf|uhf|rohfChoose the SCF method
Guess core|huckel|sad|readInitial MO guess
MaxCycle NMaximum SCF iterations (default 100)
Conver NConvergence threshold = 10⁻ᴺ (default 8)
Diis NDIIS subspace size (default 6)
NoDiisDisable DIIS
Shift NStatic level shift (Hartree)
VShiftDynamic virtual orbital level shift
Damp f / Damp trueDensity damping (factor or on)
NoDampTurn damping off
Fermi temperatureFermi broadening
DirectRecompute ERIs every SCF cycle
SaveWrite checkpoint after SCF
RestartRead initial guess from checkpoint
TightTighter convergence preset
SDSteepest Descent SCF
SSDScaled Steepest Descent SCF
MaxRot NMax QC-SCF macroiterations (default 512)
MaxNr NNR gradient threshold = 10⁻ᴺ (default 2)
FullLinearFull 1D line search in QC-SCF
OldQCOld QC polynomial-only line search

See SCF Section for detailed descriptions and examples.

DFT Keywords

DFT keywords are accepted in the DFT section and, for grid controls, in route-card Int= options.

Section keywords

KeywordValuesExample
FunctionalBP86, PBE, TPSS, M06-L, B3LYP, PBE0, M06-2X, ωB97X-DFunctional M06-L
XCsame as FunctionalXC PBE0
Methodsame as FunctionalMethod WB97XD
GridCoarse, Medium, Fine, UltraFine, SuperFine, or RRRAAAGrid 099302

Route-card forms

Route syntaxMeaning
#p pbe/sto-3gPBE RKS/UKS with STO-3G
#p m06l/sto-3g int=superfineM06-L with SuperFine XC grid
#p m062x/sto-3g scf=(maxcycle=80,conver=8)M06-2X hybrid meta-GGA
#p wb97xd/sto-3g int=grid=099302ωB97X-D with custom 99 × 302 grid

Custom grid code

The custom grid code is six digits:

Grid 099302
  • 099 = radial shells per atom.
  • 302 = requested angular order.

The angular dispatcher uses exact Lebedev–Laikov grids up to 302 points and a Fibonacci-sphere grid above that value.

INT Keywords

KeywordEffect
Acc2E NERI screening threshold = 10⁻ᴺ (default 12)
UltraFineUse a larger integration grid
Eri autoFast SP + Rys hybrid (S/P→SP, higher-L→Rys, MD fallback)
Eri mdMcMurchie–Davidson for all quartets (default)
Eri sp / Eri spfastForce SP-fast paths, MD fallback
Eri rys / Eri rysquadraturePrefer Rys quadrature, MD fallback
NoSymmDisable point-group symmetry
Grid coarse|fine|ultrafineDFT integration grid (future)
Relativistic dk|zora|noneRelativistic Hamiltonian (future)
FcMod NFreeze core shells (per atom)
Semiempirical nameActivate a semiempirical method

ERI Engine Selection

EngineEri valueBest forNotes
McMurchieDavidsonmdAll systems (default)Universal, correct for all angular momenta
SpFastsp, spfastOrganic molecules (H,C,N,O,F)10× ERI speedup for S/P shells only
Rysrys, rysquadratureTransition metals, D/F+Rys-first path with MD fallback
AutoautoGeneral useFast SP + Rys routing, MD fallback

See INT Section for detailed descriptions and examples.

OPT Keywords

KeywordEffect
Algorithm bfgs|berny|rberny|sella|geometricOptimizer backend (geometric aliases: geomet, tric)
Coord cartesian|primitive|dlc|hdlc|tric|tric-pInternal-coordinate model
MaxCycle NMaximum optimization cycles (default 100)
Trust rInitial trust radius, Bohr (default 0.3)
TMax rMaximum trust radius, Bohr (default 0.5)
NoTrustDisable TRM level-shifted Newton step
TransitionState trueSearch for a first-order saddle point (also: TS task token)
IRCIntrinsic reaction coordinate follow
IRCDir +1|-1Restrict IRC direction
NEBNudged elastic band
Images NNumber of NEB images (default 8)
SellaOrder 1|2Sella gradient order (1 = Hessian-only)
Step trm|prfo|mmfStep type (TRM, P-RFO, or MMF)
Update bfgs|psb|ms|bofill|sr1|dfp|bfgs_powell|ts-bfgsHessian update formula
DiisEnable GEDIIS
DiisSize NGEDIIS subspace size
SymmetryExploit point-group symmetry in IC build
MOGuess true|falseReuse previous cycle's orbitals as next SCF guess (warm start, default true)
OptSymmetryEnforce symmetry along the optimisation path
NoStepRun optimizer without taking a step (debug)
Hessian analytical|semiHessian source for IC initialisation
NoCartHessianIgnore any inline Cartesian Hessian
CartHessian …Inline Cartesian Hessian matrix
RigidRigid-body component removal (TRIC only)
RemoveTrRemove TR modes (DLC/HDLC/TRIC only)
ConMethod 0|1Delocalized construction method
ConnectReconnect connectivity graph at every step
AddCartAdd Cartesian components to IC basis
ConnectIsolatedConnect isolated fragments
PrimitiveAlias for Coord primitive
PrimStepStep projection in primitive IC space
Gauss default|loose|tightConvergence preset
Tighten NTighten all criteria by 10⁻ᴺ
MaxDisplacement rMax allowed step length
Constraints clause-listGeometric constraints
Dihedral true|false(RBerny only) Include dihedral angles in IC set (default true)
SuperWeakDih true|false(RRust Berny only) Use super‑weak dihedral force constants (default false)
EnergyNoise r(RBerny only) Energy‑noise floor for trust‑radius updates (default 2e-8)

Rust Berny backend keywords only apply when Algorithm rberny (or the RBerny task token) is active.

Constraint Syntax

Multiple clauses joined by ;:

Frozen atoms/components:

  • freeze_atoms:1-3;6
  • freeze_x:2
  • freeze_yz:4-5

Geometric targets (append ! for hard constraint):

  • bond:1-2=1.40ang
  • angle:1-2-3=104.5deg
  • dihedral:1-2-3-4=180deg!

Penalty tuning:

  • kbond=…, kangle=…, kdihedral=…, or k=… for all three

See OPT Section and Constraints for detailed descriptions and examples.

FREQ Keywords

KeywordEffect
Hessian analytical|semiHessian source (default: analytical for RHF/UHF)
NumericalForce finite-difference Hessian
Step rFinite-difference step, Bohr (default 0.01)
Temperature TTemperature for thermochemistry, K (default 298.15)
Pressure PPressure for thermochemistry, atm (default 1.0)
Scale fFrequency scaling factor for ZPE / thermal corrections
SymmetryNumber NRotational symmetry number (default 1, auto-detected)
Read fileRead Hessian from checkpoint file
SaveWrite Hessian to checkpoint after computation

See FREQ Section for detailed descriptions and examples.

MP2 Keywords

KeywordEffect
`Scaling nonescs
OS fOpposite-spin correlation scale factor
SS fSame-spin correlation scale factor
DFDensity-fitting / RI-MP2 request
Aux nameAuxiliary basis set for DF-MP2
KeepHalfKeep half-transformed AO integrals
DiscardVVDiscard virtual–virtual blocks (DF only)
Skip tokensComma-separated skip tokens (e.g. Skip eri)
Acc2E NERI threshold override for MP2
FreezeCore, FCUse automatic chemically standard frozen core
FreezeCore N, FC=NFreeze exactly N lowest occupied orbitals
Full, NoFCCorrelate all occupied orbitals

Spin-Component Scaling

ScalingDescription
noneCanonical MP2
scsSCS-MP2 defaults: OS = 1.2, SS = 1/3
sosSOS-MP2 defaults: OS = 1.3, SS = 0.0

Custom OS and SS values override the scaling defaults.

See MP2 Section for detailed descriptions and examples.

CC Keywords

KeywordEffect
Triples none|st|pt|fPerturbative-triples model (CCSD(T) uses st)
FreezeCoreCorrelate only valence electrons
DropVirt fDrop virtual orbitals below threshold
Conv NConvergence threshold = 10⁻ᴺ
MaxIter NMax CC iterations (default 50)
DiisEnable CC-DIIS
DiisStart NFirst iteration to use DIIS (default 2)
Shift fStatic level shift for amplitude update
Read fileRead amplitudes from checkpoint
Skip tokensComma-separated skip tokens
Acc2E NERI threshold override for CC
BruecknerBrueckner coupled-cluster (BCCD/BCCD(T))

Triples Models

TriplesDescription
noneCCSD only
stStandard CCSD(T) (non-iterative)
ptCCSD(2)_T (iterative)
fFull CCSDT (iterative)

See CC Section for detailed descriptions and examples.

Solvation Keywords

Solvent settings are specified in the SOLVATION input section.

KeywordValuesDefaultEffect
Modelcpcm, cosmo, iefpcm, ssvpe, ddcosmo, ddpcm, smdcpcmElectrostatic solvent model
Dielectricfloat78.3553Static dielectric constant ε
SolventstringNamed solvent for tabulated ε + SMD CDS
Surfaceswig, iswigswigCavity surface discretization
Lebedevint110Angular Lebedev points per atom
VdwScalefloat1.0Scaling of van der Waals radii
ProbeRadiusfloat (Å)0.0Probe radius added to vdW radii
MaxCycleint100Maximum solvent response iterations
Converfloat1e-8Solvent response convergence threshold
FrozenboolfalseKeep solvent frozen during post-SCF
EquilibriumboolfalseEquilibrium (not non-equilibrium) solvation

Solvent Models

TokenModel
cpcmConductor-like PCM
cosmoConductor-like Screening Model
iefpcmIntegral Equation Formalism PCM
ssvpeSurface & Simulation of Vol. Pol.
ddcosmoDomain-decomposition COSMO
ddpcmDomain-decomposition PCM
smdSMD (IEF-PCM electrostatics + CDS)

Cavity Surface

TokenMethodSwitching Function
swigSwitching/GaussianPolynomial switching
iswigImproved SWIGerfc-based switching

SYMMETRY Keywords

KeywordEffect
Tolerance fTolerance for point-group detection, Å (default 1e-3)
DisableForce C1 symmetry

See SYMMETRY Section for detailed descriptions and examples.

Basis Sets

OpenQuantum ships with over 520 basis sets built directly into the binary. The table below lists every available keyword and its element coverage. Auxiliary basis sets (/J, /JK, /C suffixes) are also available through the same keywords.

Quick Start

Specify a basis set on the task: line:

task: RHF def2-TZVP
task: UHF cc-pVDZ
task: RKS aug-cc-pVTZ B3LYP

Basis set names are case-insensitive and tolerate hyphens, underscores, and parentheses:

def2-TZVP  def2-tzvp  def2tzvp      all work
cc-pVDZ    cc-pvdz    CCPVDZ        all work
6-31+G**   6-31+g**   631+G**       all work

ANO

KeywordElement Availability
ANO-pV5ZH–Ar, Sc–Zn
ANO-pV6ZH–Ar, Sc–Zn
ANO-pVDZH–Ar, Sc–Zn
ANO-pVQZH–Ar, Sc–Zn
ANO-pVTZH–Ar, Sc–Zn
ANO-SZH–Ar, Sc–Zn
aug-ANO-pV5ZH–Ar, Sc–Zn
aug-ANO-pVDZH–Ar, Sc–Zn
aug-ANO-pVQZH–Ar, Sc–Zn
aug-ANO-pVTZH–Ar, Sc–Zn
saug-ANO-pV5ZH–Ar, Sc–Zn
saug-ANO-pVDZH–Ar, Sc–Zn
saug-ANO-pVQZH–Ar, Sc–Zn
saug-ANO-pVTZH–Ar, Sc–Zn

ANO-RCC

KeywordElement Availability
ANO-RCC-DZPH–Cm
ANO-RCC-FullH–Cm
ANO-RCC-QZPH–Cm
ANO-RCC-TZPH–Cm

Ahlrichs SV / TZV / QZV

KeywordElement Availability
CPSc–Zn
CP(PPP)Sc–Zn
QZVPH–Kr
QZVPPH–Kr
SVH–Kr
SV(P)H–Kr
SVPH–Kr
TZVH–Kr
TZV(P)H–Kr
TZVPH–Kr
TZVPPH–Kr

Ahlrichs SV / TZV / QZV (old-style)

KeywordElement Availability
old-SVH–I
old-SV(P)H–I
old-SVPH–I
old-TZVH–I
old-TZV(P)H–I
old-TZVPH–I
old-TZVPPH–I

CBS / W1

KeywordElement Availability
W1-DZH–Ar
W1-mtsmallH–Ar
W1-OptH–Ar
W1-QZH–Ar
W1-TZH–Ar
Wachters+fSc–Cu

D95

KeywordElement Availability
D95H, Li, B–Ne, Al–Cl
D95pH, Li, B–Ne, Al–Cl

Dunning aug-cc-pCVXZ

KeywordElement Availability
aug-cc-pCV5ZH–Ar, Ga–Kr
aug-cc-pCV5Z-PPCa, Sr, Ba, Ra
aug-cc-pCV6ZH–He, B–Ne, Al–Ar
aug-cc-pCVDZH–Ar, Ga–Kr
aug-cc-pCVDZ-PPCa, Sr, Ba, Ra
aug-cc-pCVQZH–Ar, Ga–Kr
aug-cc-pCVQZ-PPCa, Sr, Ba, Ra
aug-cc-pCVTZH–Ar, Ga–Kr
aug-cc-pCVTZ-PPCa, Sr, Ba, Ra

Dunning aug-cc-pVXZ

KeywordElement Availability
aug-cc-pV5ZH–Ar, Sc–Kr
aug-cc-pV5Z-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pV5Z/CH–Ne, Al–Ar, Ga–Kr
aug-cc-pV5Z/JKH, B–F, Al–Cl, Ga–Br
aug-cc-pV6ZH–He, B–Ne, Al–Ar
aug-cc-pV6Z/CH–He, B–Ne, Al–Ar
aug-cc-pVDZH–Ar, Sc–Kr
aug-cc-pVDZ-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pVDZ-PP/CCu–Kr, Y–Xe, Hf–Rn
aug-cc-pVDZ/CH–He, Be–Ne, Mg–Ar, Ga–Kr
aug-cc-pVQZH–Ar, Sc–Kr
aug-cc-pVQZ-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pVQZ-PP/CCu–Kr, Y–Xe, Hf–Rn
aug-cc-pVQZ/CH–He, Be–Ne, Mg–Ar, Sc–Kr
aug-cc-pVQZ/JKH, B–F, Al–Cl, Ga–Br
aug-cc-pVTZH–Ar, Sc–Kr, Ag, Au
aug-cc-pVTZ-JH, B–F, Al–Cl, Sc–Zn, Se
aug-cc-pVTZ-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pVTZ-PP/CCu–Kr, Y–Xe, Hf–Rn
aug-cc-pVTZ/CH–He, Be–Ne, Mg–Ar, Sc–Kr
aug-cc-pVTZ/JKH, B–F, Al–Cl, Ga–Br

Dunning aug-cc-pwCVXZ

KeywordElement Availability
aug-cc-pwCV5ZH–Ar, Sc–Kr
aug-cc-pwCV5Z/CH–Ne, Al–Ar
aug-cc-pwCVDZH–Ar, Ga–Kr
aug-cc-pwCVDZ/CH–He, B–Ne, Al–Ar, Ga–Kr
aug-cc-pwCVQZH–Ar, Sc–Kr
aug-cc-pwCVQZ/CH–He, B–Ne, Al–Ar, Ga–Kr
aug-cc-pwCVTZH–Ar, Sc–Kr, Ag, Au
aug-cc-pwCVTZ/CH–He, B–Ne, Al–Ar, Sc–Kr

Dunning cc-pCVXZ

KeywordElement Availability
cc-pCV5ZH–Ar, Ca, Ga–Kr
cc-pCV5Z-PPCa, Sr, Ba, Ra
cc-pCV6ZH–He, B–Ne, Al–Ar
cc-pCVDZH–Ar, Ca, Ga–Kr
cc-pCVDZ-F12Li–Ar
cc-pCVDZ-F12-MP2FitLi–Ar
cc-pCVDZ-F12-OptRILi–Ar
cc-pCVDZ-PPCa, Sr, Ba, Ra
cc-pCVQZH–Ar, Ca, Ga–Kr
cc-pCVQZ-F12Li–Ar
cc-pCVQZ-F12-MP2FitLi–Ar
cc-pCVQZ-F12-OptRILi–Ar
cc-pCVQZ-PPCa, Sr, Ba, Ra
cc-pCVTZH–Ar, Ca, Ga–Kr
cc-pCVTZ-F12Li–Ar
cc-pCVTZ-F12-MP2FitLi–Ar
cc-pCVTZ-F12-OptRILi–Ar
cc-pCVTZ-PPCa, Sr, Ba, Ra

Dunning cc-pVXZ

KeywordElement Availability
cc-pV5ZH–Ar, Ca–Kr
cc-pV5Z/CH–Ar, Ga–Kr
cc-pV5Z/JKH, B–F, Al–Cl, Ga–Br
cc-pV6ZH–He, Be–Ne, Al–Ar
cc-pV6Z/CH–He, B–Ne, Al–Ar
cc-pVDZH–Ar, Ca–Kr
cc-pVDZ-PP/CCu–Kr, Y–Xe, Hf–Rn
cc-pVDZ/CH–Ar, Ga–Kr
cc-pVQZH–Ar, Ca–Kr
cc-pVQZ-PP/CCu–Kr, Y–Xe, Hf–Rn
cc-pVQZ/CH–Ar, Sc–Kr
cc-pVQZ/JKH, B–F, Al–Cl, Ga–Br
cc-pVTZH–Ar, Ca–Kr, Y, Ag, Au
cc-pVTZ-PP/CCu–Kr, Y–Xe, Hf–Rn
cc-pVTZ/CH–Ar, Sc–Kr
cc-pVTZ/JKH, B–F, Al–Cl, Ga–Br

Dunning cc-pVXZ (+d) / calendar-variants

KeywordElement Availability
apr-cc-pV(Q+d)ZH–Ar
aug-cc-pV5(+d)ZAl–Ar
aug-cc-pV6(+d)ZAl–Ar
aug-cc-pVD(+d)ZAl–Ar
aug-cc-pVQ(+d)ZAl–Ar
aug-cc-pVT(+d)ZAl–Ar
cc-pV5(+d)ZNa–Ar
cc-pVD(+d)ZNa–Ar
cc-pVQ(+d)ZNa–Ar
cc-pVT(+d)ZNa–Ar
haV(5+d)ZH–Ar
haV(Q+d)ZH–Ar
haV(T+d)ZH–Ar
jul-cc-pV(D+d)ZH–Ar
jul-cc-pV(Q+d)ZH–Ar
jul-cc-pV(T+d)ZH–Ar
jun-cc-pV(D+d)ZH–Ar
jun-cc-pV(Q+d)ZH–Ar
jun-cc-pV(T+d)ZH–Ar
maug-cc-pV(D+d)ZH–Ar
maug-cc-pV(Q+d)ZH–Ar
maug-cc-pV(T+d)ZH–Ar
may-cc-pV(Q+d)ZH–Ar
may-cc-pV(T+d)ZH–Ar

Dunning cc-pVXZ-DK

KeywordElement Availability
aug-cc-pV5Z-DKH–Ar, Sc–Kr
aug-cc-pVDZ-DKH–Ar, Sc–Kr
aug-cc-pVQZ-DKH–Ar, Sc–Kr, In–Xe, Tl–Rn
aug-cc-pVTZ-DKH–Ar, Sc–Kr, Y–Xe, Hf–Rn
cc-pV5Z-DKH–Ar, Sc–Kr
cc-pVDZ-DKH–Ar, Sc–Kr
cc-pVDZ-DK3U
cc-pVQZ-DKH–Ar, Sc–Kr, In–Xe, Tl–Rn
cc-pVQZ-DK3U
cc-pVTZ-DKH–Ar, Sc–Kr, Y–Xe, Hf–Rn
cc-pVTZ-DK3U

Dunning cc-pVXZ-F12

KeywordElement Availability
cc-pVDZ-F12H–Ar
cc-pVDZ-F12-CABSH, B–Ne, Al–Ar
cc-pVDZ-F12-MP2FitH–Ar
cc-pVDZ-F12-OptRIH–Ar
cc-pVDZ-PP-F12Ga–Kr, In–Xe, Tl–Rn
cc-pVDZ-PP-F12-MP2FitGa–Kr, In–Xe, Tl–Rn
cc-pVDZ-PP-F12-OptRIGa–Kr, In–Xe, Tl–Rn
cc-pVQZ-F12H–Ar
cc-pVQZ-F12-CABSH, B–Ne, Al–Ar
cc-pVQZ-F12-MP2FitH–Ar
cc-pVQZ-F12-OptRIH–Ar
cc-pVQZ-PP-F12Ga–Kr, In–Xe, Tl–Rn
cc-pVQZ-PP-F12-MP2FitGa–Kr, In–Xe, Tl–Rn
cc-pVQZ-PP-F12-OptRIGa–Kr, In–Xe, Tl–Rn
cc-pVTZ-F12H–Ar
cc-pVTZ-F12-CABSH, B–Ne, Al–Ar
cc-pVTZ-F12-MP2FitH–Ar
cc-pVTZ-F12-OptRIH–Ar
cc-pVTZ-PP-F12Ga–Kr, In–Xe, Tl–Rn
cc-pVTZ-PP-F12-MP2FitGa–Kr, In–Xe, Tl–Rn
cc-pVTZ-PP-F12-OptRIGa–Kr, In–Xe, Tl–Rn

Dunning cc-pVXZ-PP

KeywordElement Availability
aug-cc-pV5Z-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
aug-cc-pVDZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
aug-cc-pVQZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
aug-cc-pVTZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
cc-pV5Z-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
cc-pVDZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra, U
cc-pVQZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra, U
cc-pVTZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra, U

Dunning cc-pwCVXZ

KeywordElement Availability
cc-pwCV5ZH–Ar, Ca–Kr
cc-pwCV5Z/CH–Ne, Al–Ar
cc-pwCVDZH–Ar, Ca, Ga–Kr
cc-pwCVDZ/CH–He, B–Ne, Al–Ar, Ga–Kr
cc-pwCVQZH–Ar, Ca–Kr
cc-pwCVQZ/CH–He, B–Ne, Al–Ar, Ga–Kr
cc-pwCVTZH–Ar, Ca–Kr, Ag, Au
cc-pwCVTZ/CH–He, B–Ne, Al–Ar, Sc–Kr

Dunning cc-pwCVXZ-DK

KeywordElement Availability
aug-cc-pwCV5Z-DKH–Be, Na–Mg, Sc–Zn
aug-cc-pwCVDZ-DKH–Be, Na–Mg, Sc–Zn
aug-cc-pwCVQZ-DKH–Be, Na–Mg, Sc–Zn, In–Xe, Tl–Rn
aug-cc-pwCVTZ-DKH–Be, Na–Mg, Sc–Zn, Y–Xe, Hf–Rn
cc-pwCV5Z-DKH–Be, Na–Mg, Ca–Zn
cc-pwCVDZ-DKH–Be, Na–Mg, Ca–Zn
cc-pwCVDZ-DK3U
cc-pwCVQZ-DKH–Be, Na–Mg, Ca–Zn, In–Xe, Tl–Rn
cc-pwCVQZ-DK3U
cc-pwCVTZ-DKH–Be, Na–Mg, Ca–Zn, Y–Xe, Hf–Rn
cc-pwCVTZ-DK3U

Dunning cc-pwCVXZ-PP

KeywordElement Availability
aug-cc-pwCV5Z-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
aug-cc-pwCV5Z-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pwCVDZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
aug-cc-pwCVDZ-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pwCVDZ-PP/CCu–Kr, Y–Xe, Hf–Rn
aug-cc-pwCVQZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
aug-cc-pwCVQZ-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pwCVQZ-PP/CCu–Kr, Y–Xe, Hf–Rn
aug-cc-pwCVTZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
aug-cc-pwCVTZ-PP-OptRICu–Zn, Ag–Cd, Au–Hg
aug-cc-pwCVTZ-PP/CCu–Kr, Y–Xe, Hf–Rn
cc-pwCV5Z-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra
cc-pwCVDZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra, U
cc-pwCVDZ-PP/CCu–Kr, Y–Xe, Hf–Rn
cc-pwCVQZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra, U
cc-pwCVQZ-PP/CCu–Kr, Y–Xe, Hf–Rn
cc-pwCVTZ-PPCa, Cu–Kr, Sr–Xe, Ba, Hf–Rn, Ra, U
cc-pwCVTZ-PP/CCu–Kr, Y–Xe, Hf–Rn

ECP / Effective Core

KeywordElement Availability
LANL08Na–La, Hf–Bi
LANL08(f)Sc–Cu, Y–Ag, La, Hf–Au
LANL2DZH, Li–La, Hf–Bi, U–Pu
LANL2TZSc–Zn, Y–Cd, La, Hf–Hg
LANL2TZ(f)Sc–Cu, Y–Ag, La, Hf–Au

EPR / IGLO

KeywordElement Availability
EPR-IIH, B–F
EPR-IIIH, B–F
IGLO-IIH, B–F, Al–Cl
IGLO-IIIH, B–F, Al–Cl

Jensen pc-n

KeywordElement Availability
pc-0H–Ca, Ga–Kr
pc-1H–Kr
pc-2H–Kr
pc-3H–Kr
pc-4H–Kr

Jensen pc-n (augmented)

KeywordElement Availability
aug-pc-0H–Ca, Ga–Kr
aug-pc-1H–Kr
aug-pc-2H–Kr
aug-pc-3H–Kr
aug-pc-4H–Kr

Jensen pcH/pcJ/pcSseg/pcX

KeywordElement Availability
pcJ-0H–He, B–Ne, Al–Ar
pcJ-1H–He, B–Ne, Al–Ar
pcJ-2H–He, B–Ne, Al–Ar
pcJ-3H–He, B–Ne, Al–Ar
pcJ-4H–He, B–Ne, Al–Ar
pcSseg-0H–Kr
pcSseg-1H–Kr
pcSseg-2H–Kr
pcSseg-3H–Kr
pcSseg-4H–Kr

Jensen pcH/pcJ/pcSseg/pcX (augmented)

KeywordElement Availability
aug-pcJ-0H–He, B–Ne, Al–Ar
aug-pcJ-1H–He, B–Ne, Al–Ar
aug-pcJ-2H–He, B–Ne, Al–Ar
aug-pcJ-3H–He, B–Ne, Al–Ar
aug-pcJ-4H–He, B–Ne, Al–Ar
aug-pcSseg-0H–Kr
aug-pcSseg-1H–Kr
aug-pcSseg-2H–Kr
aug-pcSseg-3H–Kr
aug-pcSseg-4H–Kr

Jensen pcseg

KeywordElement Availability
pcseg-0H–Kr
pcseg-1H–Kr
pcseg-2H–Kr
pcseg-3H–Kr
pcseg-4H–Kr

Jensen pcseg (augmented)

KeywordElement Availability
aug-pcseg-0H–Kr
aug-pcseg-1H–Kr
aug-pcseg-2H–Kr
aug-pcseg-3H–Kr
aug-pcseg-4H–Kr

Karlsruhe def2

KeywordElement Availability
def2-mSVPH–Rn
def2-mTZVPH–Rn
def2-mTZVP/JH–Rn
def2-mTZVPPH–Lr
def2-mTZVPP/JH–Rn
def2-QZVPH–Rn
def2-QZVPDH–Rn
def2-QZVPPH–Rn
def2-QZVPP/CH–Rn
def2-QZVPPDH–Rn
def2-QZVPPD/CH–La, Hf–Rn
def2-SV(P)H–Rn
def2-SVPH–Rn
def2-SVP/CH–Rn
def2-SVPDH–Rn
def2-SVPD/CH–La, Hf–Rn
def2-TZVPH–Rn
def2-TZVP(-f)H–Rn
def2-TZVP/CH–Rn
def2-TZVPDH–Rn
def2-TZVPD/CH–La, Hf–Rn
def2-TZVPPH–Rn
def2-TZVPP/CH–Rn
def2-TZVPPDH–Rn
def2-TZVPPD/CH–La, Hf–Rn

Karlsruhe def2 (ma- / minimal-augmented)

KeywordElement Availability
ma-def-TZVPFr–Lr
ma-def2-mSVPH–Rn
ma-def2-QZVPH–Rn
ma-def2-QZVPPH–Rn
ma-def2-SV(P)H–Rn
ma-def2-SVPH–Rn
ma-def2-TZVPH–Rn
ma-def2-TZVP(-f)H–Rn
ma-def2-TZVPPH–Rn
ma-DKH-def2-QZVPPH–Kr
ma-DKH-def2-SV(P)H–Kr
ma-DKH-def2-SVPH–Kr
ma-DKH-def2-TZVPH–Kr
ma-DKH-def2-TZVP(-f)H–Kr
ma-DKH-def2-TZVPPH–Kr
ma-ZORA-def2-QZVPPH–Kr
ma-ZORA-def2-SV(P)H–Kr
ma-ZORA-def2-SVPH–Kr
ma-ZORA-def2-TZVPH–Kr
ma-ZORA-def2-TZVP(-f)H–Kr
ma-ZORA-def2-TZVPPH–Kr

MINI / MINIX / MIDI

KeywordElement Availability
MIDIH–Na, Al–K
MINIH–Ca
MINISH–Ca
MINIXH–Rn

Miscellaneous

KeywordElement Availability
def-TZVPFr–Lr
def2/JH–Rn
def2/JKH–Ba, Hf–Rn
def2/JKsmallH–Ra, Th–Lr
x2c/JH–Rn
{cspan}1 *Auxiliary basis sets for correlated methods (AuxC)** - def2-SVP/C
{cspan}1 *Complementary auxiliary basis sets for F12 calculations (CABS)** - cc-pVDZ-F12-CABS
{cspan}1 *Coulomb and exchange-fitting auxiliary basis sets (AuxJK)** - def2/JK
{cspan}1 *Coulomb-fitting auxiliary basis sets (AuxJ``)*`* - def2/J
{cspan}1 *Orbital basis sets (Basis)** - STO-3G

Partridge

KeywordElement Availability
Partridge-1H, Li–Sr
Partridge-2H, Li–Kr
Partridge-3H, Li–Zn
Partridge-4Sc–Zn

Pople-style (3-21G, 4-22G)

KeywordElement Availability
3-21GH–Cs
3-21GSPH–Ar
4-22GSPH–Ar

Pople-style (6-31G, 6-311G)

KeywordElement Availability
6-311GH–Br
6-311G(2d)H–Br
6-311G(2d,2p)H–Br
6-311G(2d,p)H–Br
6-311G(2df)H–Br
6-311G(2df,2p)H–Br
6-311G(2df,2pd)H–Br
6-311G(3df)H–Br
6-311G(3df,3pd)H–Br
6-311G(d)H–Br
6-311G(d,p)H–Br
6-311G\*H–Br
6-311G\*\*H–Br
6-31GH–Zn
6-31G(2d)H–Zn
6-31G(2d,2p)H–Zn
6-31G(2d,p)H–Zn
6-31G(2df)H–Zn
6-31G(2df,2p)H–Zn
6-31G(2df,2pd)H–Zn
6-31G(d)H–Zn
6-31G(d,p)H–Zn
6-31G\*H–Zn
6-31G\*\*H–Zn
m6-31GSc–Cu
m6-31G\*Sc–Cu

Pople-style 6-311G (+/++)

KeywordElement Availability
6-311++G(2d,2p)H–Br
6-311++G(2d,p)H–Br
6-311++G(2df,2p)H–Br
6-311++G(2df,2pd)H–Br
6-311++G(3df,3pd)H–Br
6-311++G(d,p)H–Br
6-311++G\*\*H–Br
6-311+G(2d)H–Br
6-311+G(2d,2p)H–Br
6-311+G(2d,p)H–Br
6-311+G(2df)H–Br
6-311+G(2df,2p)H–Br
6-311+G(2df,2pd)H–Br
6-311+G(3df)H–Br
6-311+G(3df,2p)H–Br
6-311+G(3df,3pd)H–Br
6-311+G(d)H–Br
6-311+G(d,p)H–Br
6-311+G\*H–Br
6-311+G\*\*H–Br

Pople-style 6-31G (+/++)

KeywordElement Availability
6-31++G(2d,2p)H–Zn
6-31++G(2d,p)H–Zn
6-31++G(2df,2p)H–Zn
6-31++G(2df,2pd)H–Zn
6-31++G(d,p)H–Zn
6-31++G\*\*H–Zn
6-31+G(2d)H–Zn
6-31+G(2d,2p)H–Zn
6-31+G(2d,p)H–Zn
6-31+G(2df)H–Zn
6-31+G(2df,2p)H–Zn
6-31+G(2df,2pd)H–Zn
6-31+G(d)H–Zn
6-31+G(d,p)H–Zn
6-31+G\*H–Zn
6-31+G\*\*H–Zn

Relativistic DKH

KeywordElement Availability
DKH-QZVPH–Kr
DKH-QZVPPH–Kr
DKH-SV(P)H–Kr
DKH-SVPH–Kr
DKH-TZV(P)H–Kr
DKH-TZVPH–Kr
DKH-TZVPPH–Kr

Relativistic DKH (old-style)

KeywordElement Availability
old-DKH-SV(P)H–I
old-DKH-SVPH–I
old-DKH-TZV(P)H–I
old-DKH-TZVPH–I
old-DKH-TZVPPH–I

Relativistic DKH-def2

KeywordElement Availability
DKH-def2-QZVPPH–Kr
DKH-def2-SV(P)H–Kr
DKH-def2-SVPH–Kr
DKH-def2-TZVPH–Kr
DKH-def2-TZVP(-f)H–Kr
DKH-def2-TZVPPH–Kr

Relativistic ZORA

KeywordElement Availability
ZORA-QZVPH–Kr
ZORA-QZVPPH–Kr
ZORA-SV(P)H–Kr
ZORA-SVPH–Kr
ZORA-TZV(P)H–Kr
ZORA-TZVPH–Kr
ZORA-TZVPPH–Kr

Relativistic ZORA (old-style)

KeywordElement Availability
old-ZORA-SV(P)H–I
old-ZORA-SVPH–I
old-ZORA-TZV(P)H–I
old-ZORA-TZVPH–I
old-ZORA-TZVPPH–I

Relativistic ZORA-def2

KeywordElement Availability
ZORA-def2-QZVPPH–Kr
ZORA-def2-SV(P)H–Kr
ZORA-def2-SVPH–Kr
ZORA-def2-TZVPH–Kr
ZORA-def2-TZVP(-f)H–Kr
ZORA-def2-TZVPPH–Kr

Relativistic dhf (2c)

KeywordElement Availability
dhf-QZVPH–Kr, Rb–Rn
dhf-QZVP-2cH–Kr, Rb–Rn
dhf-QZVPPH–Kr, Rb–Rn
dhf-QZVPP-2cH–Kr, Rb–Rn
dhf-SV(P)H–Kr, Rb–Rn
dhf-SV(P)-2cH–Kr, Rb–Rn
dhf-SVPH–Kr, Rb–Rn
dhf-SVP-2cH–Kr, Rb–Rn
dhf-TZVPH–Kr, Rb–Rn
dhf-TZVP-2cH–Kr, Rb–Rn
dhf-TZVPPH–Kr, Rb–Rn
dhf-TZVPP-2cH–Kr, Rb–Rn

Relativistic x2c

KeywordElement Availability
x2c-QZVPallH–Rn
x2c-QZVPall-2cH–Rn
x2c-QZVPall-2c-sH–Rn
x2c-QZVPall-sH–Rn
x2c-QZVPPallH–Rn
x2c-QZVPPall-2cH–Rn
x2c-QZVPPall-2c-sH–Rn
x2c-QZVPPall-sH–Rn
x2c-SV(P)allH–Rn
x2c-SV(P)all-2cH–Rn
x2c-SV(P)all-sH–Rn
x2c-SVPallH–Rn
x2c-SVPall-2cH–Rn
x2c-SVPall-sH–Rn
x2c-TZVPallH–Rn
x2c-TZVPall-2cH–Rn
x2c-TZVPall-sH–Rn
x2c-TZVPPallH–Rn
x2c-TZVPPall-2cH–Rn
x2c-TZVPPall-sH–Rn

SARC

KeywordElement Availability
SARC-DKH-SVPHf–Hg
SARC-DKH-TZVPRb–Rn, Ac–Lr
SARC-DKH-TZVPPRb–Rn, Ac–Lr
SARC-ZORA-SVPHf–Hg
SARC-ZORA-TZVPRb–Rn, Ac–Lr
SARC-ZORA-TZVPPRb–Rn, Ac–Lr
SARC/JH–Rn, Ac–Lr
SARC2-DKH-QZVLa–Lu
SARC2-DKH-QZV/JKLa–Lu
SARC2-DKH-QZVPLa–Lu
SARC2-DKH-QZVP/JKLa–Lu
SARC2-ZORA-QZVLa–Lu
SARC2-ZORA-QZV/JKLa–Lu
SARC2-ZORA-QZVPLa–Lu
SARC2-ZORA-QZVP/JKLa–Lu

STO-3G

KeywordElement Availability
STO-3GH–I

Sapporo

KeywordElement Availability
Sapporo-DKH3-DZP-2012K–Rn
Sapporo-DKH3-QZP-2012K–Rn
Sapporo-DKH3-TZP-2012K–Rn
Sapporo-DZP-2012H–Xe
Sapporo-QZP-2012H–Xe
Sapporo-TZP-2012H–Xe

Universal (UGBS / HGBS / AHGBS)

KeywordElement Availability
AHGBS-5H–Og
AHGBS-7H–Og
AHGBS-9H–Og
AHGBSP1-5H–Og
AHGBSP1-7H–Og
AHGBSP1-9H–Og
AHGBSP2-5H–Og
AHGBSP2-7H–Og
AHGBSP2-9H–Og
AHGBSP3-5H–Og
AHGBSP3-7H–Og
AHGBSP3-9H–Og
HGBS-5H–Og
HGBS-7H–Og
HGBS-9H–Og
HGBSP1-5H–Og
HGBSP1-7H–Og
HGBSP1-9H–Og
HGBSP2-5H–Og
HGBSP2-7H–Og
HGBSP2-9H–Og
HGBSP3-5H–Og
HGBSP3-7H–Og
HGBSP3-9H–Og
UGBSH–Th, Pu–Am, Cf–Lr

vDZP

KeywordElement Availability
vDZPH–Rn

Footnotes

  • 1. Used with the Def-ECP pseudopotentials (Rb–Lr).
  • 2. Used with the Def2-ECP pseudopotentials (Rb–Rn).
  • 3. Used with the dhf-ECP or dhf-ECP-2c pseudopotentials (Rb–Rn).
  • 4. Used with the HayWadt pseudopotentials (Na–La, Hf–Bi, U–Pu).
  • 5. Valence double-zeta with large-core pseudopotentials. For the respective ECP types per element, see the ORCA or EMSL Basis Set Library.
  • 6. The respective basis sets without core correlation functions, i.e. (aug-)cc-pVXZ(-DK)(/C), are used for H and He.
  • 7. Used with the SK-MCDHF-RSC pseudopotentials (Ca, Cu–Kr, Sr–Xe, Ba, Hf–Ra, U).

External / Custom Basis Sets

OpenQuantum supports three external formats for user-supplied basis sets:

FormatExtension
Gaussian GBS.gbs
Orca BAS.bas
JSON.json

Search order: OPENQUANTUM_BASIS_PATHbasis/ next to executable → basis/ in CWD.

Pure vs Cartesian Harmonics

By default, OpenQuantum uses pure spherical harmonics (5d, 7f, etc.).

ECP Libraries

BASIS
  Library def2-TZVP
  Ecp lanl2dz
END

Molecular Geometry

XYZ Format (Section-Based)

MOLECULE
  Charge        <int>             # default 0
  Multiplicity  <int>             # default 1
  Units         Angstrom | Bohr   # default Angstrom
END

GEOMETRY
  <ELEMENT>  <x>  <y>  <z>     # one line per atom
  ...
END
  • All coordinates default to Angstrom.
  • Charge and Multiplicity default to 0 and 1.
  • The GEOMETRY block must contain at least one atom.
  • Element symbols are case-insensitive.
  • Multiple geometries (for NEB) separated by a blank line in the same GEOMETRY block.

Z-Matrix Format (Route-Card Only)

Z-matrix input is only supported by the legacy route-card parser. It is detected automatically when the geometry block opens with a charge multiplicity line (two integers). Distances in Angstrom, angles in degrees.

#p rhf/6-31g
0 1
N
H  1  R
H  1  R  2  A
H  1  R  2  A  3  120.0

Variables:
R=1.012
A=106.7

Molecule Properties

The Molecule type provides:

MethodDescription
atomic_massAtomic masses
total_massTotal molecular mass
center_of_massCenter of mass
inertia_tensorMoment of inertia tensor
is_linearLinear molecule detection

These are used for thermochemistry (rotational entropy) and IRC mass-weighting.

Coordinate Units

  • Angstrom (default): 1 Å = 0.529177210903 Bohr
  • Bohr: Atomic unit of distance

Set via MOLECULE Units or task: line:

MOLECULE
  Units  Bohr
END

Constraints

The Constraints keyword in the OPT section supports multiple clauses joined by ;.

Frozen Atoms/Components

SyntaxExampleDescription
freeze_atoms:i-j;kfreeze_atoms:1-3;6Freeze all components of atoms 1–3 and 6
freeze_x:ifreeze_x:2Freeze X component of atom 2
freeze_y:ifreeze_y:3Freeze Y component of atom 3
freeze_z:ifreeze_z:4Freeze Z component of atom 4
freeze_xy:ifreeze_xy:5Freeze X and Y of atom 5
freeze_xz:ifreeze_xz:6Freeze X and Z of atom 6
freeze_yz:ifreeze_yz:7Freeze Y and Z of atom 7

Geometric Targets

Append ! for hard constraint (enforced via null-space projection).

SyntaxExampleDescription
bond:i-j=valuebond:1-2=1.40angBond distance target
angle:i-j-k=valueangle:1-2-3=104.5degBond angle target
dihedral:i-j-k-l=valuedihedral:1-2-3-4=180deg!Dihedral angle target (hard)

Units: ang (Angstrom), bohr, deg (degrees), rad (radians).

Penalty Tuning

SyntaxDescription
kbond=valueBond force constant
kangle=valueAngle force constant
kdihedral=valueDihedral force constant
k=valueSet all three at once

Default penalty constants are used if not specified. Hard constraints (!) use null-space projection instead of quadratic penalties.

Examples

Freeze atom 1:

Constraints freeze_atoms:1

Freeze X component of atom 2:

Constraints freeze_x:2

Bond constraint with custom force constant:

Constraints bond:1-2=1.40ang;kbond=20.0

Angle constraint:

Constraints angle:1-2-3=109.5deg;kangle=2.0

Hard dihedral constraint:

Constraints dihedral:1-2-3-4=180deg!

Combined constraints:

Constraints freeze_atoms:1;bond:1-2=1.10ang!;k=0.5

Notes

  • Multiple clauses are joined by ;.
  • Hard constraints (!) are enforced via null-space projection rather than soft quadratic penalties.
  • Constraint indices are 1-based, matching the atom order in the GEOMETRY section.
  • Frozen atoms/components zero the corresponding gradient/step components.

Examples Overview

This chapter contains comprehensive examples organized by calculation type. All examples use the section-based input format.

Categories

Quick Reference

Calculation TypeTask TokenKey Sections
RHF SPRHFMOLECULE, GEOMETRY
UHF SPUHFMOLECULE (mult=2), GEOMETRY
MP2MP2GEOMETRY, MP2 (optional)
CCSD(T)CCSD(T)GEOMETRY, CC (optional)
OptimizationOPTGEOMETRY, OPT
TS SearchTSGEOMETRY, OPT (TS)
FrequencyFREQGEOMETRY, FREQ
IRC(via OPT)GEOMETRY, OPT (IRC)
NEB(via OPT)GEOMETRY (2 blocks), OPT (NEB)

Single Point Energies

Single-point energy calculations are the simplest run type in OpenQuantum. The program solves the SCF equations at a fixed geometry and reports the total energy, orbital energies, and (for post-HF methods) the correlation energy contribution.

The examples below cover:

  • RHF / UHF / ROHF — Hartree–Fock for closed-shell, unrestricted, and restricted open-shell reference wavefunctions
  • MP2 / CCSD(T) — Møller–Plesset perturbation theory and coupled-cluster correlation energies on top of a converged HF reference

Use the task: line to select the method and basis set. See the Keyword Reference for all available options.

Single Point: RHF / UHF / ROHF

RHF Single Point — Water, STO-3G

task: RHF STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

RHF Single Point — H₂, Coordinates in Bohr

task: RHF STO-3G

MOLECULE
  Units  Bohr
END

GEOMETRY
  H  0.0  0.0  0.0
  H  0.0  0.0  1.4
END

UHF Single Point — Hydroxyl Radical (Doublet)

task: UHF 6-31G*

MOLECULE
  Charge        0
  Multiplicity  2
END

GEOMETRY
  O   0.000000   0.000000   0.000000
  H   0.000000   0.000000   0.970000
END

ROHF Single Point — Oxygen Atom (Triplet)

task: ROHF STO-3G

MOLECULE
  Charge        0
  Multiplicity  3
END

GEOMETRY
  O  0.0  0.0  0.0
END

Notes

  • For UHF, set Multiplicity 2 in MOLECULE (doublet: 2S+1 = 2).
  • For ROHF, set Multiplicity 3 in MOLECULE (triplet: 2S+1 = 3).
  • The Algorithm in the SCF section is typically redundant with the task: line.

Single Point: MP2 / CCSD(T)

MP2 Energy — Water, cc-pVDZ

task: MP2 RHF CC-PVDZ

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

MP2
  FreezeCore false
END

CCSD(T) Energy — N₂

task: CCSD(T) RHF CC-PVDZ

GEOMETRY
  N  0.0  0.0  0.0
  N  0.0  0.0  2.074
END

CC
  Triples   st
  FreezeCore false
END

Notes

  • The task: line for MP2 and CCSD(T) includes the reference method (RHF/UHF/ROHF) and the basis set.
  • FreezeCore false correlates all electrons. Use FreezeCore true for frozen-core (valence-only) correlation.
  • CCSD(T) uses Triples st by default. Use Triples none for CCSD only.
  • MP2 and CC always compute in-core TwoElectronIntegrals for the AO→MO transform, even when Direct true is enabled for SCF.

DFT Calculations

OpenQuantum runs Kohn–Sham DFT through either Gaussian-style route cards or the section-based input format. These examples cover the available functional rungs, grid control, open-shell DFT, and dispersion-corrected functionals.

Closed-shell GGA (PBE)

title: Water PBE single point

MOLECULE
  Charge 0
  Multiplicity 1
  Units Angstrom
END

task: pbe sto-3

SCF
  MaxCycle 50
  Conver 8
END

INT
  Grid UltraFine
END

GEOMETRY
O 0.000000  0.000000  0.117000
H 0.000000  0.755000 -0.471000
H 0.000000 -0.755000 -0.471000
END

The output reports the functional rung, grid level, the integrated XC energy, the grid electron count, and the signed grid integration error.

Hybrid GGA (B3LYP, PBE0)

title: Water B3LYP

MOLECULE
  Charge 0
  Multiplicity 1
  Units Angstrom
END

task: b3lyp sto-3g

SCF
  MaxCycle 50
  Conver 8
END

INT
  Grid UltraFine
END

GEOMETRY
O 0.000000  0.000000  0.117000
H 0.000000  0.755000 -0.471000
H 0.000000 -0.755000 -0.471000
END

Hybrid functionals mix exact exchange (20% for B3LYP, 25% for PBE0) into the Fock build, so they require electron-repulsion integrals in addition to the grid quadrature.

Meta-GGA (TPSS, M06-L)

title: H2 M06-L

MOLECULE
  Charge 0
  Multiplicity 1
  Units Angstrom
END

task: m06l sto-3g 

SCF
  MaxCycle 50
  Conver 8
END

INT
  Grid UltraFine
END

GEOMETRY
H 0.0 0.0 0.0
H 0.0 0.0 0.74
END

M06-L correlation uses the full VS98 working factor with the reduced-gradient polynomial baseline, so opposite-spin correlation integrates physically on the standard grid. Meta-GGAs use kinetic-energy density and benefit from a finer grid; int=superfine is recommended for production runs.

Hybrid meta-GGA (M06-2X)

title: H2 M06-2X 

MOLECULE
  Charge 0
  Multiplicity 1
  Units Angstrom
END

task: m062x sto-3g 

SCF
  MaxCycle 50
  Conver 8
END

INT
  Grid UltraFine
END

GEOMETRY
H 0.0 0.0 0.0
H 0.0 0.0 0.74
END

M06-2X adds 54% exact exchange on top of the meta-GGA semilocal terms.

Range-separated hybrid with dispersion (ωB97X-D)

title: Water omegaB97X-D

MOLECULE
  Charge 0
  Multiplicity 1
  Units Angstrom
END

task: wb97xd sto-3g 

SCF
  MaxCycle 50
  Conver 8
END

INT
  Grid UltraFine 
END

GEOMETRY
O 0.000000  0.000000  0.117000
H 0.000000  0.755000 -0.471000
H 0.000000 -0.755000 -0.471000
END

ωB97X-D splits the Coulomb operator into short- and long-range exchange and adds an empirical D2 dispersion correction to the total energy. The job header lists the range-separation parameter ω and the dispersion tag.

Open-shell DFT (UKS)

title: H atom PBE doublet

MOLECULE
  Charge 0
  Multiplicity 2
  Units Angstrom
END

task: PBE STO-3G

SCF
  MaxCycle 50
  Conver 8
END

GEOMETRY
H 0.0 0.0 0.0
END

Any non-singlet multiplicity dispatches an unrestricted Kohn–Sham calculation with spin-resolved XC potentials.

Section-format DFT with explicit grid

title: Water PBE0 section input

MOLECULE
  Charge 0
  Multiplicity 1
  Units Angstrom
END

task: STO-3G

DFT
  Functional PBE0
  Grid UltraFine
END

SCF
  MaxCycle 100
  Conver 8
END

GEOMETRY
O 0.000000  0.000000  0.117000
H 0.000000  0.755000 -0.471000
H 0.000000 -0.755000 -0.471000
END

Custom angular grid

A six-digit grid code requests an explicit radial × angular grid. Angular orders up to 302 use genuine Lebedev–Laikov grids:

#p m06l/sto-3g int=grid=099302

H2 with 99 x 302 grid

0 1
H 0.0 0.0 0.0
H 0.0 0.0 0.74

Choosing a grid

  • Coarse / Medium — quick smoke tests and early development.
  • Fine / UltraFine — typical GGA and hybrid production runs.
  • SuperFine or a custom 099302 grid — meta-GGA and M06-family functionals, which are most sensitive to angular and radial resolution.

Geometry Optimization Examples

Geometry optimization finds local minima (and saddle points for TS search) on the potential energy surface. OpenQuantum supports several coordinate models, optimizers, and acceleration methods:

  • Standard Optimization — BFGS with Cartesian or default internal coordinates
  • Internal Coordinates — Primitive, DLC, and TRIC coordinate back-ends
  • Berny RFO / Rust Berny — Trust-radius step control with Gaussian-style convergence
  • GEDIIS Acceleration — Geometry-space DIIS extrapolation
  • Hessian Update Variants — BFGS, MSP, SR1, DFP, Bofill, PSB, and MS updates

See the specific sub-pages for full examples.

Standard Optimization

Geometry optimization finds a local minimum on the potential energy surface by iteratively updating nuclear positions. The default optimizer uses Cartesian coordinates with a BFGS Hessian update.

Geometry Optimization — Water, RHF/6-31G*

task: OPT RHF 6-31G*

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

Geometry Optimization — Methyl Radical (UHF Doublet)

task: OPT UHF 6-31G*

MOLECULE
  Multiplicity  2
END

GEOMETRY
  C   0.000000   0.000000   0.000000
  H   0.000000   1.079000   0.000000
  H  -0.934000  -0.539500   0.000000
  H   0.934000  -0.539500   0.000000
END

Notes

  • For UHF optimization, set Multiplicity 2 in MOLECULE.
  • The default optimizer is Berny RFO with Cartesian coordinates.
  • Each cycle warm-starts the SCF from the previous cycle's converged orbitals, which usually cuts SCF iterations substantially after the first step. Disable with MOGuess false in the OPT section.
  • See Internal Coordinates, Berny/Rust Berny, and GEDIIS for advanced options.

Internal Coordinates Optimization

Berny RFO Optimization — Water, RHF/STO-3G

task: OPT RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

OPT
  Algorithm  berny
  MaxCycle   50
END

Primitive Internal Coordinates

task: OPT RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

OPT
  Algorithm  berny
  Coord      primitive
  MaxCycle   50
END

Delocalized Internal Coordinates (DLC)

OPT
  Algorithm  berny
  Coord      dlc
  MaxCycle   50
END

TRIC (Translation-Rotation Internal Coordinates)

OPT
  Algorithm  berny
  Coord      tric
  MaxCycle   50
END

GeomeTRIC Native TRIC Optimizer

The geometric backend runs a quasi-Newton optimizer directly in TRIC coordinates, with rigid-body translation/rotation as first-class internals and an adaptive trust radius:

task: OPT RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

OPT
  Algorithm  geometric    # aliases: geomet, tric
  Coord      tric         # tric-p drops the rigid-body modes
  MaxCycle   200
END

For transition-state searches add TransitionState true (or use the TS task token); the engine switches to RS-P-RFO with Bofill Hessian updates. Seeding the initial Hessian via CartHessian is recommended for TS runs.

Notes

  • Primitive IC: Full redundant primitive set (bonds, angles, dihedrals, OOP, linear-angle)
  • DLC: Non-redundant delocalized basis from SVD of B-matrix
  • TRIC: DLC + rigid-body translational/rotational modes removed via modified Gram-Schmidt
  • GeomeTRIC backend: native TRIC quasi-Newton; per-fragment rotations are encoded as exponential maps with analytic B-matrix derivatives, and the internal-to-Cartesian back-transform is iterative with periodic-aware residuals
  • For floppy molecules or systems with near-linear geometries, TRIC is recommended
  • The default algorithm for internal coordinates is Berny RFO
  • When Coord != cartesian, the optimizer automatically uses the IC back-transform

Berny RFO / Rust Berny Backend

RBerny Backend

The RBerny backend is a new implementation of the Berny RFO algorithm. Select it either via the RBerny task token or Algorithm rberny in the OPT section.

task: RBERNY RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

Backend-specific controls (Dihedral, SuperWeakDih, EnergyNoise) are configured in the OPT section alongside Algorithm rberny.

Dihedral — Control torsional coordinates

By default (Dihedral true) the Rust Berny engine includes dihedral (torsion) angles in its primitive internal‑coordinate set. Setting Dihedral false omits them entirely, which reduces the coordinate count and removes torsional coupling from the initial Hessian guess.

task: RBERNY RHF STO-3G

OPT
  Algorithm  rberny
  Dihedral   false
END

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

SuperWeakDih — Soften dihedral Hessian guess

When SuperWeakDih true is set, dihedral angles that would normally receive a "weak" force‑constant scaling (≈ 0.1) in the Lindh Hessian are instead treated as "superweak" (≈ 0.01). This gives very soft initial torsional force constants, useful for floppy molecules where the first few steps should not over‑correct large dihedral motion.

task: RBERNY RHF STO-3G

OPT
  Algorithm     rberny
  SuperWeakDih  true
END

GEOMETRY
  C   0.000000   0.000000   0.000000
  C   1.540000   0.000000   0.000000
  H   0.000000   1.090000   0.000000
  H   0.000000  -1.090000   0.000000
  H   1.540000   1.090000   0.000000
  H   1.540000  -1.090000   0.000000
END

EnergyNoise — Flat‑PES trust‑radius floor

Energy precision estimate in Hartree. The trust‑radius logic treats predicted energy changes below 10 × EnergyNoise as numerical noise, adjusting the trust radius conservatively instead of growing or shrinking aggressively. Increase this on very flat surfaces where tiny energy differences may be unreliable.

task: RBERNY RHF STO-3G

OPT
  Algorithm    rberny
  EnergyNoise  1e-7
END

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

Rust Berny Features

  • Native Cartesian and internal coordinate paths
  • High-performance Rust implementation
  • Backend-specific controls: Dihedral, SuperWeakDih, EnergyNoise
  • First-cycle Cartesian Hessian injection
  • Hard constraints via native correction flow

Usage

Via task token:

task: RBERNY RHF STO-3G

OPT
  Dihedral  false
END

Via OPT section:

task: OPT RHF STO-3G

OPT
  Algorithm  rberny
  Dihedral   false
END

Notes

  • The RBerny backend is implemented with native internal coordinate support.
  • It provides the same algorithmic features as the legacy Berny optimizer but with better performance and Rust-native code paths.
  • For TS searches, combine with TransitionState true (or the TS task token).

GEDIIS Geometry-Space DIIS

GEDIIS extrapolates from previous geometry/gradient points to accelerate optimisation. Enable with Diis true.

Basic GEDIIS Usage

task: OPT RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

OPT
  Diis     true
  DiisSize 4
END

Combined with Berny RFO and Larger DIIS Subspace

OPT
  Algorithm  berny
  Diis       true
  DiisSize   6
  MaxCycle   200
END

TS Search with GEDIIS (Berny)

task: TS RHF STO-3G

GEOMETRY
  ...
END

OPT
  TransitionState true
  Diis            true
END

Sella with GEDIIS

Sella minimum search:

task: SELLA RHF STO-3G

GEOMETRY
  ...
END

OPT
  Algorithm sella
  Diis      true
END

Sella TS with GEDIIS:

task: TS SELLA RHF STO-3G

GEOMETRY
  ...
END

OPT
  Algorithm       sella
  TransitionState true
  Diis            true
END

Sella TS + GEDIIS + Bofill:

task: TS SELLA RHF STO-3G

GEOMETRY
  ...
END

OPT
  Algorithm       sella
  TransitionState true
  Diis            true
  Update          bofill
END

Rust Berny with GEDIIS

OPT
  Algorithm  rberny
  Diis       true
END

Notes

  • GEDIIS is most effective for:
    • Difficult optimizations near flat PES regions
    • Multi-step convergences where optimizer oscillates
    • Large molecules where SCF is expensive
  • Typically reduces optimization cycles by 20–40% for well-behaved systems
  • When DIIS is enabled in supported optimizers, you usually run a GEDIIS pipeline that can fall back to GDIIS internally (RFO-DIIS → EnDIS → GDIIS)
  • For debugging DIIS behavior, set OPENQ_DIIS_TRACE=1

Hessian Update Variants for TS Optimization

The Update keyword selects the Hessian update formula.

OPT
  TransitionState true
  Update bofill
END

Update Formulas

Update=Description
bfgsStandard BFGS (minima)
psbPowell–Symmetric–Broyden, rank-2 (TS)
msMurtagh–Sargent, rank-1 (TS, allows negative curvature)
bofillφ·PSB + (1-φ)·MS, blends PSB and MS (TS)
sr1Symmetric rank-1 (naturally indefinite)
dfpDavidon–Fletcher–Powell (positive-definite)
bfgs_powellAuto: BFGS for minima, Bofill for TS
ts-bfgsTS-BFGS: BFGS in |H| space (saddle points)

Examples

Bofill with TS search:

OPT
  TransitionState true
  Update bofill
END

Bofill with primitive internal coordinates:

OPT
  TransitionState true
  Update bofill
  Coord primitive
END

Bofill with DLC coordinates:

OPT
  TransitionState true
  Update bofill
  Coord dlc
  MaxCycle 100
END

PSB with TS search:

OPT
  TransitionState true
  Update psb
END

PSB with TRIC coordinates:

OPT
  TransitionState true
  Update psb
  Coord tric
END

MS with TS search:

OPT
  TransitionState true
  Update ms
END

BFGS/Powell mixed for minimum:

OPT
  Update bfgs_powell
END

BFGS/Powell mixed for TS (auto Bofill):

OPT
  TransitionState true
  Update bfgs_powell
END

Combined GEDIIS + Bofill for TS:

OPT
  TransitionState true
  Update bofill
  Diis true
  MaxCycle 150
END

Sella + Bofill:

OPT
  Algorithm       sella
  TransitionState true
  Update          bofill
  MaxCycle        100
END

Sella + Bofill + DLC:

OPT
  Algorithm       sella
  TransitionState true
  Update          bofill
  Coord           dlc
  MaxCycle        100
END

Notes

  • Default for Berny TS: Bofill (blends PSB and MS)
  • Default for Sella TS: TS-BFGS
  • Default for minima: MSP (Berny) or MSP/TS-BFGS (Sella)
  • Bofill is recommended for TS searches with Berny optimizer
  • TS-BFGS is default for Sella and preserves negative curvature
  • BFGS/Powell automatically selects the appropriate update

Transition State Search

Transition-state (TS) search locates saddle points on the potential energy surface — structures with exactly one imaginary frequency. OpenQuantum provides three strategies for TS search:

  • P-RFO (Partitioned Rational Function Optimization) — A trust-radius eigenvector- following method that walks uphill along the lowest Hessian mode and downhill in all other modes. Selected with Algorithm sella (or Sella task token) in the OPT section.
  • Sella Optimizer — A saddle-point-aware IC optimizer with TS-BFGS Hessian update, P-RFO or Minimum Mode Following (MMF) step, sigma-based trust-radius schedule, and Davidson partial eigensolver for the lowest Hessian mode.
  • IRC (Intrinsic Reaction Coordinate) — Path following from a TS to connected minima (reactant and product), using Gonzalez–Schlegel, mass-weighted, predictor-corrector, or bidirectional integration.
  • Verification Workflows — Combined TS search → frequency verification → IRC path in a single input file using multiple task: sections.

Choose a strategy based on the quality of the initial guess and the curvature of the surface near the TS.

Transition State Search: P-RFO / Sella

P-RFO maximises the energy along the lowest Hessian eigenvector (the TS mode) and simultaneously minimises along all remaining modes. Activate it with TransitionState true or by including TS on the task: line.

Basic TS Search (P-RFO)

task: TS RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.000000
  H   1.100000   0.000000   0.500000
  H  -1.100000   0.000000   0.500000
END

OPT
  Coord     dlc
  MaxCycle  100
END

Sella TS Optimizer

Sella is a saddle-point-aware IC optimizer with TS-BFGS Hessian update and P-RFO step. Combined with TS it targets a first-order saddle point.

PropertyTransitionState trueAlgorithm sella + TransitionState true
Hessian updateMSPTS-BFGS
Trust-radius scheduleρ-based (shrink/grow)σ-based (multiplicative)
Initial TS HessianLindh (all positive)Davidson-refined when available
Adaptive eigenvalue checkNoEvery 3 steps

Sella Minimum Optimisation

task: SELLA RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.100000
  H   0.750000   0.000000  -0.450000
  H  -0.750000   0.000000  -0.450000
END

Sella TS Search with MMF Step (More Robust on Flat Surfaces)

task: TS SELLA RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.000000
  H   1.100000   0.000000   0.500000
  H  -1.100000   0.000000   0.500000
END

OPT
  Step     mmf
  Coord    dlc
  SellaOrder 2
  MaxCycle 100
END

Rust Berny TS Optimizer

The Rust Berny optimizer carries its own self-contained transition-state search: partitioned RFO with eigenvector following, flowchart SR1/BFGS/PSB Hessian updates, periodic single-negative-eigenvalue restoration, and conservative saddle-point trust-radius defaults (0.05 Bohr initial, 0.15 Bohr maximum). It works in Cartesian, primitive, delocalized/HDLC, and TRIC coordinate models.

Activate it with Algorithm rberny together with TS, or with the rts shortcut token:

task: TS RHF STO-3G

OPT
  Algorithm rberny
  Coord     dlc
  MaxCycle  100
END

GEOMETRY
  C   -0.621400   -0.081500    0.000000
  N    0.572600   -0.081500    0.000000
  H   -0.201200    1.031500    0.000000
END

Set Step mmf to use the minimum-mode-following saddle-point step (a |H| denominator), which is more robust on flat surfaces and often converges in fewer cycles; the default is partitioned RFO.

Eigenvector following tracks the reaction-coordinate eigenvector across cycles by maximum overlap, so the search keeps climbing the same mode instead of whichever mode is momentarily lowest. The transition-state workflow seeds the optimizer with an exact (or finite-difference) Cartesian Hessian at the starting geometry, so the correct reaction coordinate is identified from the first step; this applies to both Optimize and OptFreq TS jobs.

Verify the Result

A genuine TS shows exactly one imaginary frequency, printed as a negative value:

 Frequencies (cm⁻¹):  -1247.3   1652.1   3825.4

Verify with a FREQ job on the converged TS geometry.

Notes

  • Starting geometry must be near the transition state
  • Initial Hessian must have at least one negative eigenvalue for P-RFO
  • The TS task token implies OPT with TransitionState true
  • Sella with Step mmf is more robust on flat surfaces (uses |λ| denominator)
  • Sella TS in DLC space recommended for medium/large molecules

IRC Path Following

The IRC true directive triggers bidirectional IRC from the provided geometry. The starting geometry should be a pre-converged TS.

IRC Path Following from a Transition State

task: RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.000000
  H   0.800000   0.000000   0.400000
  H  -0.800000   0.000000   0.400000
END

OPT
  IRC     true
  IRCDir  +1
END

Notes

  • The IRC true directive triggers bidirectional IRC from the provided geometry.
  • Restrict to one direction with IRCDir +1 (forward) or IRCDir -1 (reverse).
  • The starting geometry should be a pre-converged TS (imaginary frequency expected).
  • Uses Gonzalez–Schlegel (1990) mass-weighted IRC with predictor-corrector steps.
  • Output includes per-step energies, geometries, and a formatted path summary.

Sella TS + Frequency Verification + IRC Workflow

Step 1 — TS Optimisation with Sella + DLC:

task: TS SELLA RHF STO-3G

GEOMETRY
  H  -1.200000   0.000000   0.000000
  H   0.000000   0.000000   0.000000
  H   1.200000   0.000000   0.000000
END

OPT
  Coord    dlc
  MaxCycle 150
END

Step 2 — Frequency Analysis on Converged TS Geometry:

task: FREQ RHF STO-3G

GEOMETRY
  # Paste the optimized TS geometry from step 1
  H  ...
  H  ...
  H  ...
END

Step 3 (optional) — IRC from the TS:

task: RHF STO-3G

GEOMETRY
  # Same TS geometry
  H  ...
  H  ...
  H  ...
END

OPT
  IRC true
END

Notes

  • IRC requires a pre-converged TS geometry
  • The corrector uses up to 10 iterations per IRC step with perpendicular gradient tolerance of 1e-6
  • Bidirectional by default; use IRCDir +1 or -1 to restrict
  • Output includes per-step energies, geometries, and formatted path summary

TS Verification Workflows

Sella TS + Frequency Verification Workflow

Step 1 — TS Optimisation with Sella + DLC:

task: TS SELLA RHF STO-3G

GEOMETRY
  H  -1.200000   0.000000   0.000000
  H   0.000000   0.000000   0.000000
  H   1.200000   0.000000   0.000000
END

OPT
  Coord    dlc
  MaxCycle 150
END

Step 2 — Frequency Analysis on Converged TS Geometry:

task: FREQ RHF STO-3G

GEOMETRY
  # Paste the optimized TS geometry from step 1
  H  ...
  H  ...
  H  ...
END

Expected output for a genuine TS:

 Frequencies (cm⁻¹):  -1547.2   789.3   934.6

Step 3 (optional) — IRC from the TS:

task: RHF STO-3G

GEOMETRY
  # Same TS geometry
  H  ...
  H  ...
  H  ...
END

OPT
  IRC true
END

Basic TS Verification

Step 1 — TS Optimization (Berny):

task: TS RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.000000
  H   1.100000   0.000000   0.500000
  H  -1.100000   0.000000   0.500000
END

OPT
  MaxCycle 100
END

Step 2 — Frequency Verification:

task: FREQ RHF STO-3G

GEOMETRY
  # Copy optimized TS geometry
  O  ...
  H  ...
  H  ...
END

A genuine TS shows exactly one imaginary frequency:

 Frequencies (cm⁻¹):  -1247.3   1652.1   3825.4

TS Verification with Hydrogen Transfer

Step 1 — TS Optimization with Sella + DLC:

task: TS SELLA RHF STO-3G

GEOMETRY
  H  -1.200000   0.000000   0.000000
  H   0.000000   0.000000   0.000000
  H   1.200000   0.000000   0.000000
END

OPT
  Coord    dlc
  MaxCycle 150
END

Frequency Analysis Examples

Frequency analysis computes harmonic vibrational frequencies, IR intensities, and thermochemical properties from the nuclear Hessian. OpenQuantum supports two paths:

  • Analytical Hessian (default for RHF/UHF/RKS/UKS) — uses the fully analytical energy second derivative with CPHF response
  • Semi-analytical Hessian — finite-difference of analytical gradients

The thermochemistry module adds zero-point energy, thermal corrections (U, H, G), and entropy via the RRHO model with automatic symmetry-number detection.

See the sub-pages for full examples of each approach.

Harmonic Frequencies

Harmonic vibrational frequencies are computed from the nuclear Hessian (second derivative of the energy with respect to nuclear displacements). OpenQuantum supports both the fully analytical Hessian (default for RHF/UHF/RKS/UKS) and the semi-analytical finite-difference approach.

Harmonic Frequency Analysis — Water, RHF/STO-3G

task: FREQ RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

FREQ
  Hessian     analytical
  Temperature 298.15
  Pressure    1.0
END

UHF Frequency Analysis with Analytical Hessian — OH Radical

task: FREQ UHF STO-3G

MOLECULE
  Multiplicity  2
END

GEOMETRY
  O   0.000000   0.000000   0.000000
  H   0.000000   0.000000   0.970000
END

Notes

  • The analytical Hessian is the default for RHF/UHF frequency calculations.
  • Use Hessian semi to force finite-difference of gradients.
  • For TS verification, the geometry must be a pre-converged TS structure.
  • A genuine TS shows exactly one imaginary frequency (negative value).

Read Hessian from Checkpoint

FREQ
  Read  myjob.oqd
END

This avoids recomputing the Hessian for subsequent thermochemistry at different temperatures/pressures.

Thermochemistry

Harmonic frequency analysis computes thermodynamic properties at a given temperature and pressure.

Harmonic Frequency Analysis with Thermochemistry

task: FREQ RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

FREQ
  Hessian     analytical
  Temperature 298.15
  Pressure    1.0
  Scale       1.0
END

Custom Conditions

FREQ
  Temperature 350.0
  Pressure    1.0
  Scale       0.9854
END

Output

The thermochemistry output includes:

Zero-Point Energy:            0.05895 Hartree
Thermal Correction (E):       0.06123 Hartree
Thermal Correction (H):       0.06217 Hartree
Thermal Correction (G):       0.04188 Hartree
Entropy:                      0.04432 Hartree/K

Symmetry Number

The symmetry number σ is automatically determined from the detected point group:

Point Groupσ
C₁1
Cₙn
Dₙ2n
T_d12
O_h24
C∞ᵥ1
D∞ₕ2

Override with SymmetryNumber N in the FREQ section if needed.

Read/Save Hessian

FREQ
  Read  myjob.oqd
END
FREQ
  Save true
END

This avoids recomputing the Hessian for subsequent thermochemistry at different temperatures/pressures.

SCF Control

The SCF procedure can be tuned with a range of convergence and stability options. The examples below cover the most common scenarios:

  • Convergence & DIIS — Tightening thresholds, configuring the DIIS subspace, disabling DIIS when it oscillates, and using level shifting or Fermi broadening for difficult cases.
  • Level Shift / Direct SCF — Static and dynamic level shifting for near-degenerate systems, and direct SCF mode that recomputes ERIs on the fly to save memory for large molecules.

All SCF controls go in the SCF section. See the SCF Section for the full keyword reference.

SCF Convergence & DIIS

SCF with Tight Convergence and Custom DIIS

task: RHF DEF2-TZVP

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SCF
  MaxCycle 200
  Conver   10
  Diis     10
END

DIIS Parameters

KeywordDefaultDescription
MaxCycle100Maximum SCF iterations
Conver8Convergence threshold = 10⁻ᴺ
Diis6DIIS subspace size
NoDiisfalseDisable DIIS

Tight Convergence Preset

SCF
  Tight true
END

This sets Conver 10 and tighter thresholds automatically.

Disable DIIS

SCF
  NoDiis true
END

Useful for systems where DIIS oscillates.

Level Shift

SCF
  Shift 0.5
END

Static level shift in Hartree. Helps with difficult convergence (e.g., open-shell transition metals).

Dynamic Level Shift

SCF
  VShift true
END

Dynamic virtual orbital level shift (automatically adjusts).

Fermi Broadening

SCF
  Fermi 0.01
END

Fermi-Dirac broadening for metallic/near-degenerate systems. Helps with convergence by smearing the Fermi surface.

Level Shift / Direct SCF

Level Shift for Difficult Convergence

task: UHF STO-3G

MOLECULE
  Multiplicity  2
END

GEOMETRY
  Li  0.0  0.0  0.0
END

SCF
  Shift    0.5
  MaxCycle 150
END

Direct SCF — Large Molecule

task: RHF 6-31G*

GEOMETRY
  C     -1.796395   -0.568749   -0.005321
  C     -0.585071    0.125222   -0.004539
  C      0.625618   -0.569857   -0.004391
  C      1.831897    0.128238   -0.003610
  C      1.832534    1.521736   -0.002974
  C      0.626894    2.220934   -0.003119
  C     -0.584430    1.526963   -0.003900
  C     -1.795119    2.222042   -0.004049
  C     -3.001397    1.523947   -0.004830
  C     -3.002034    0.130449   -0.005466
  H     -1.806316   -1.656277   -0.005820
  H      0.634545   -1.657393   -0.004883
  H      2.773551   -0.415222   -0.003495
  H      2.774685    2.064334   -0.002365
  H      0.636815    3.308462   -0.002619
  H     -1.804045    3.309579   -0.003557
  H     -3.943052    2.067407   -0.004944
  H     -3.944185   -0.412149   -0.006075
END

SCF
  Direct   true
  MaxCycle 100
END

Notes

  • Level Shift (Shift): Adds a constant to virtual orbital energies, helping convergence for systems with small HOMO-LUMO gaps or near-degeneracies.
  • Direct SCF (Direct true): Recomputes ERIs each SCF iteration instead of storing them. Trades memory for CPU time. Essential for large systems.
  • Combined: Use both for difficult large systems:
SCF
  Direct   true
  Shift    0.3
  MaxCycle 200
END
  • Direct SCF uses symmetry-accelerated cache lookup and Schwarz screening for efficiency.

Integral Options

Control the electron-repulsion integral (ERI) engine and other integral-related settings. The selected engine applies uniformly to all ERI computation paths: in-core build, direct SCF, analytical gradients, and analytical Hessians.

  • ERI Engine Selection — Choose between MD, SP fast paths, Rys quadrature, or auto
  • Symmetry Control — Enable or disable point-group symmetry acceleration

ERI Engine Selection

Choose the ERI engine for the whole calculation (energy, gradient, Hessian, and SCF paths):

INT
  Eri  auto
END

Engine Options

Eri=Description
autoFast SP + Rys routing (S/P→SP, higher-L→Rys, MD fallback) — recommended
mdMcMurchie–Davidson (default, most general)
sp / spfastSP fast paths for S/P shells, MD fallback for higher-L
rys / rysquadratureRys-first with MD fallback

SP Analytical Fast Paths — H₂O, STO-3G

task: RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

INT
  Eri spfast
END

Rys Quadrature — H₂O, cc-pVDZ (D functions)

task: RHF CC-PVDZ

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

INT
  Eri rys
END
task: RHF DEF2-TZVP

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

INT
  Eri auto
END

Pure MD Engine (Baseline)

task: RHF DEF2-TZVP

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

INT
  Eri md
END

Notes

  • The selected ERI engine applies to all ERI computation paths: in-core integral build, direct SCF, analytical gradients, fully analytical Hessians, and semi-analytical (FD) Hessians.
  • Eri auto is recommended for general use — it routes S/P shells through fast paths and higher angular momentum through Rys quadrature with MD fallback.

Symmetry Control

Disable Symmetry — Water, RHF/STO-3G

Symmetry is on by default. Use NoSymm true to turn it off. This skips point-group ERI screening and prints all orbital irreps as A (C1 symmetry).

task: RHF STO-3G

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

INT
  NoSymm true
END

Notes

  • Symmetry is enabled by default. The detected point group is printed in the job header and used to skip symmetry-equivalent ERI shell quartets during energy, gradient, and Hessian computations.
  • NoSymm true forces C1 symmetry: integrals are computed without point-group screening, and all orbital labels are printed as A.
  • The 8-fold permutational symmetry of ERIs is always applied regardless of NoSymm.
  • Symmetry tolerance is controlled in the SYMMETRY section (Tolerance).

Custom Symmetry Tolerance

SYMMETRY
  Tolerance 0.0001
END

Tighter tolerance requires the geometry to more closely match symmetry elements.

Post-HF Correlation

Correlation energy methods improve upon the Hartree–Fock reference by recovering a fraction of the electron correlation energy. OpenQuantum provides:

  • Spin-Scaled MP2 — Møller–Plesset perturbation theory to second order, with optional spin-component scaling (SCS-MP2)
  • CCSD Convergence — Coupled-cluster singles and doubles, with convergence controls for the CC iterative solver

Spin-Scaled MP2

Spin-component-scaled MP2 (SCS-MP2) improves upon canonical MP2 by scaling the same-spin (SS) and opposite-spin (OS) correlation contributions separately.

Spin-Scaled MP2 — Water

task: MP2 RHF CC-PVDZ

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

MP2
  Scaling  osss
  OS       1.2
  SS       0.333
  FreezeCore false
END

Notes

  • Scaling osss with OS 1.2, SS 0.333 gives the standard SCS-MP2 correction.
  • Spin-scaled variants: SCS-MP2 (1.2/0.333), SCS-MP2 (1.3/1.0), and SCS-MP2 (1.11/0.0) are all accessible via OS/SS keywords.
  • Frozen-core: use FreezeCore true to correlate only valence electrons.

CCSD Convergence

The coupled-cluster singles and doubles (CCSD) solver can be tuned with several convergence controls for difficult systems.

CCSD Convergence Control

task: CCSD RHF CC-PVDZ

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

CC
  Conv        8
  MaxIter     80
  Diis        true
  DiisStart   3
  Shift       0.2
  FreezeCore  false
END

Notes

  • MP2 and CC always compute in-core TwoElectronIntegrals for the AO→MO transform, even when Direct true is enabled for SCF.
  • The task: line for MP2/CCSD(T) includes the reference method and basis set.
  • Frozen-core: use FreezeCore true to correlate only valence electrons.
  • DF-MP2: set DF true and Aux <name> for density-fitting.
  • For CCSD(T), add the triples correction automatically by using task: CCSD(T) ....

ECP Calculations

ECP Calculation — Iodine Atom (LANL2DZ)

task: RHF STO-3G

GEOMETRY
  I  0.0  0.0  0.0
END

BASIS
  Library STO-3G
  Ecp     lanl2dz
END

Notes

  • The Ecp field in the BASIS section is the supported way to attach an ECP library to a calculation.
  • Available ECP libraries: LANL2DZ, Stuttgart (SDD), and others.
  • ECPs replace core electrons with an effective potential, reducing the number of basis functions for heavy elements.
  • The ECP contribution is added to the core Hamiltonian automatically.

Usage

BASIS
  Library def2-TZVP
  Ecp lanl2dz
END

The basis set Library specifies the valence basis; Ecp specifies the effective core potential. Both are required for ECP calculations.

Implicit Solvent Examples

Water with C-PCM

task: SCF RHF/STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model           cpcm
  Dielectric      78.3553
  Surface         swig
  Lebedev         110
END

This runs an RHF/STO-3G energy with C‑PCM water. The default surface is SWIG with 110 Lebedev points per atom.

Water with IEF-PCM (tabulated solvent)

task: SCF RHF/6-31G*

MOLECULE
  Charge        0
  Multiplicity  1
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model           iefpcm
  Solvent         water
END

The SOLVATION section activates the solvent. The dielectric constant (78.3553) is loaded automatically from the SMD parameter table for water.

Methanol with SS(V)PE and ISWIG surface

task: SCF RHF/6-31G*

MOLECULE
  Charge        0
  Multiplicity  1
END

GEOMETRY
  C   0.049272   0.074722   0.000000
  O   0.049272   1.509864   0.000000
  H  -0.447572  -0.303266   0.891288
  H  -0.447572  -0.303266  -0.891288
  H   1.089478  -0.252237   0.000000
  H  -0.438081   1.909086  -0.755708
END

SOLVATION
  Model           ssvpe
  Solvent         methanol
  Surface         iswig
  Lebedev         194
END

Uses the ISWIG (erf-based) surface for a smoother cavity, with a finer 194-point Lebedev grid.

SMD for Aqueous Solvation

task: SCF B3LYP/6-31+G**

MOLECULE
  Charge        0
  Multiplicity  1
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

BASIS
  Library 6-31+G**
END

SOLVATION
  Model           smd
  Solvent         water
  Surface         swig
  Lebedev         110
END

SMD uses IEF-PCM electrostatics with SMD-parametrized radii and adds a density-independent CDS free energy.

Geometry Optimization in Solvent

task: OPT RHF/6-31G*

MOLECULE
  Charge        0
  Multiplicity  1
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model           iefpcm
  Solvent         water
END

OPT
  Algorithm  berny
  Coord      tric
  MaxCycle   100
END

Geometry optimizations with solvent recompute the cavity at each step (the cavity is a function of geometry). Analytical gradients include the full PCM contribution.

Frequency Analysis in Solvent

task: FREQ RHF/6-31G*

MOLECULE
  Charge        0
  Multiplicity  1
END

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SOLVATION
  Model           cpcm
  Dielectric      78.3553
  Surface         swig
  Lebedev         110
END

FREQ
  Hessian      analytical
  Temperature  298.15
  Pressure     1.0
END

Harmonic frequencies with implicit solvent. The analytical Hessian includes the PCM curvature (hess_nuc + hess_solver). The electron–cavity integral curvature (hess_qv) is currently approximated; finite-difference Hessians (freq=(numerical)) give the full solvent response at higher computational cost.

ddCOSMO Energy

task: SCF RHF/STO-3G

MOLECULE
  Charge        0
  Multiplicity  1
END

GEOMETRY
  H   0.000000   0.000000   0.000000
  H   0.000000   0.000000   1.400000
END

SOLVATION
  Model           ddcosmo
  Dielectric      78.3553
END

ddCOSMO uses a domain-decomposition solver with spherical-harmonic expansion (lmax = 6 by default). The analytical gradient is available but the analytical Hessian is not yet implemented for ddCOSMO/ddPCM.

Output: Solvent Block

When solvent is active, the output header includes a solvent summary:

  Solvent Settings
  --------------------------------------------------
  Model              : C-PCM
  Solvent            : water
  Dielectric         : 78.3553
  Surface            : SWIG
  Lebedev points     : 110
  VDW scale          : 1.000
  Probe radius       : 0.000 Å

Known Limitations

FeatureStatus
Analytical Hessian with C-PCM / COSMO / IEF-PCM / SS(V)PE✓ RHF + UHF (CPHF solvent response included)
Analytical Hessian with ddCOSMO / ddPCM✗ (use freq=(numerical))
Analytical Hessian with ROHF✗ (no ROHF Hessian in SCF crate)
grad_qv (electron–cavity integral gradient)✓ (analytical via integral crate)
hess_qv (electron–cavity integral Hessian)✗ (finite-difference only)
SMD CDS analytical gradient✗ (numerical CDS gradient)
TD-DFT with solvent

Checkpointing

Save and Restart from Checkpoint

task: RHF 6-31G*

GEOMETRY
  O   0.000000   0.000000   0.117369
  H   0.756950   0.000000  -0.469476
  H  -0.756950   0.000000  -0.469476
END

SCF
  Save     true
  MaxCycle 100
END

Restart

To restart the SCF from the saved density in a follow-up job, set Restart true:

SCF
  Restart true
  MaxCycle 100
END

Scratch Directory

By default the checkpoint file is placed next to the input file (myjob.oqd for myjob.inp). Set OPENQUANTUM_SCRATCH to redirect it to a dedicated scratch directory (recommended on HPC systems with high-performance parallel filesystems):

export OPENQUANTUM_SCRATCH=/scratch/$USER/$SLURM_JOB_ID
mkdir -p $OPENQUANTUM_SCRATCH

oquantum myjob.inp

The scratch directory is always printed at the start of each run:

  Scratch directory: /scratch/user/12345345

CONTROL Checkpoints

Every section also writes a richer binary checkpoint (default extension .oqw) through the CONTROL section. This file captures the final geometry, molecular orbitals (coefficients and energies), an optional Hessian (for frequency runs), SCF convergence info, and basis-set info. Use CheckpointName to choose the file name and ReadCheckpoint to restart a later job from it (see Multi-Section Jobs).

CONTROL
  WriteCheckpoint  True
  CheckpointName   water_opt.oqw
END

Notes

  • The SCF Save/Restart keywords manage a lightweight scratch density used to warm-start an SCF within a single run.
  • The CONTROL checkpoint (.oqw) is a self-describing record of the final state, suitable for restarting geometry and orbitals across jobs.
  • Save true writes the SCF scratch checkpoint after convergence.
  • Restart true reads the initial guess from the scratch checkpoint file.
  • The scratch directory also holds other temporary files.

Multi-Section (Multi-Job) Calculations

A single input file can define several jobs that run in sequence using JOB N blocks. A top-level MOLECULE section supplies charge/multiplicity/units defaults shared by all jobs. Each job has its own task: line and sections.

Later jobs can restart from a prior job's checkpoint using a RESTART section:

  • Geometry FromJob=N — start from job N's final geometry.
  • Orbitals FromJob=N — warm-start the SCF from job N's molecular orbitals.
title: Water - Opt then high-accuracy single point

MOLECULE
  Charge        0
  Multiplicity  1
  Units         Angstrom
END

JOB 1
  task: RHF STO-3G Optimize

  CONTROL
    PrintLevel       Normal
    WriteCheckpoint  True
    CheckpointName   water_opt.oqw
  END

  OPT
    Algorithm   Berny
    MaxIter     300
    Convergence Tight

    Frozen
      Bond   1 2
      Angle  2 1 3
    END
  END

  GEOMETRY
    O   0.000000   0.000000   0.117790
    H   0.000000   0.755450  -0.471160
    H   0.000000  -0.755450  -0.471160
  END
END

JOB 2
  task: RHF 6-31G* SinglePoint

  CONTROL
    PrintLevel       Normal
    ReadCheckpoint   True
    WriteCheckpoint  True
    CheckpointName   water_sp.oqw
  END

  Restart
    Geometry   FromJob=1
    Orbitals   FromJob=1
  END
END

Frozen coordinates

Inside an OPT section, a Frozen block holds the listed internal coordinates fixed at their starting values during the optimization:

OPT
  Frozen
    Bond      1 7
    Angle     2 1 7
    Dihedral  1 2 3 4
  END
END

Atom indices are 1-based. The optimizer measures each coordinate at the input geometry and enforces it as a hard constraint.

Notes

  • Each job writes its own checkpoint (see CONTROL).
  • A job that omits GEOMETRY must restart geometry from a prior job's checkpoint.
  • The checkpoint stores only the latest section's data per file.

Energy Summary

=== Energy Summary ===
Total Energy:              -1.116717501234 Hartree
Electronic Energy:         -1.830717501234 Hartree
Nuclear Repulsion Energy:   0.714000000000 Hartree

SCF Converged: Yes
Iterations: 10
Final ΔP (RMS): 1.00e-10

Fields

FieldDescription
Total EnergyTotal HF energy (electronic + nuclear)
Electronic EnergyExpectation value of electronic Hamiltonian
Nuclear Repulsion EnergyClassical Coulomb repulsion between nuclei
SCF ConvergedWhether SCF reached convergence criteria
IterationsNumber of SCF cycles
Final ΔP (RMS)Root-mean-square density matrix change

Notes

  • All energies in Hartree (1 Hartree = 27.211386245988 eV)
  • Nuclear repulsion is computed from geometry and atomic numbers
  • For UHF, separate α/β electronic energies are printed
  • For correlated methods (MP2, CCSD(T)), correlation energy is shown separately

Orbital Energies

=== Orbital Energies ===
    MO   Energy (Hartree)  Occupancy
 ------------------------------------
     1      -0.5782013560          2 (HOMO)
     2       0.6714142857          0 (LUMO)

HOMO-LUMO Gap: 1.249616 Hartree (34.0044 eV)

Fields

FieldDescription
MOMolecular orbital index
Energy (Hartree)Orbital energy in Hartree
Occupancy2 (doubly occupied), 1 (singly occupied), 0 (virtual)

Notes

  • HOMO = Highest Occupied Molecular Orbital
  • LUMO = Lowest Unoccupied Molecular Orbital
  • For UHF, separate α and β orbital energy tables are printed
  • At QC-SCF convergence, pseudocanonicalization produces canonical-like orbital energies required for post-HF (MP2, CCSD(T))
  • For correlated methods, canonical orbital energies from the HF reference are used

UHF Spin Information

Spin Information:
  N(alpha): 2
  N(beta):  1
  <S²>:     0.750000 (ideal: 0.750000)

Fields

FieldDescription
N(alpha)Number of α electrons
N(beta)Number of β electrons
⟨S²⟩Expectation value of spin-squared operator
idealIdeal value for pure spin state: S(S+1)

Spin Contamination

For a pure spin state, ⟨S²⟩ = S(S+1) where S = (N_α - N_β)/2.

MultiplicitySIdeal ⟨S²⟩
Singlet (1)00.0
Doublet (2)1/20.75
Triplet (3)12.0
Quartet (4)3/23.75

Significant deviation from the ideal value indicates spin contamination (the determinant is not a pure spin eigenfunction). OpenQuantum reports ⟨S²⟩ for every UHF calculation.

Notes

  • RHF/ROHF always have ⟨S²⟩ = ideal value (spin-pure)
  • UHF may show spin contamination, especially for stretched bonds or transition metals
  • ROHF is spin-pure but has a more complex Fock matrix construction

Mulliken Population Analysis

=== Mulliken Population Analysis ===
  Atom Symbol   Population       Charge
 ----------------------------------------
     1      H     1.000000     0.000000
     2      H     1.000000     0.000000
 ----------------------------------------
  Total            2.000000     0.000000

Fields

FieldDescription
AtomAtom index (1-based)
SymbolElement symbol
PopulationMulliken electron population on atom
ChargeNuclear charge - population

Formula

The Mulliken population for atom A is:

where the sum over μ runs over basis functions centered on atom A.

The atomic charge is:

Notes

  • Mulliken populations are basis-set dependent and can be unreliable for large/diffuse basis sets
  • Total population equals total number of electrons
  • Total charge equals molecular charge
  • For UHF, separate α and β populations are available
  • Mulliken analysis is printed by default for all calculations

Frequency Analysis Output

=== Harmonic Frequencies ===
 Mode   Frequency (cm⁻¹)   Reduced Mass (amu)   IR Intensity (km/mol)
 ----   ----------------   -------------------   --------------------
    1        1645.82               1.0823              45.23
    2        3825.39               1.0321               2.10
    3        3942.56               1.0456              18.67

Zero-Point Energy:            0.05895 Hartree
Thermal Correction (E):       0.06123 Hartree
Thermal Correction (H):       0.06217 Hartree
Thermal Correction (G):       0.04188 Hartree
Entropy:                      0.04432 Hartree/K

Fields

FieldDescription
ModeNormal mode index
Frequency (cm⁻¹)Harmonic vibrational frequency
Reduced Mass (amu)Effective mass for the normal mode
IR Intensity (km/mol)Infrared absorption intensity

Thermochemistry

QuantityDescription
Zero-Point Energy½ Σ hνᵢ (all real modes)
Thermal Correction (E)Vibrational + rotational + translational energy correction
Thermal Correction (H)E + RT
Thermal Correction (G)H - TS
EntropyS_trans + S_rot + S_vib

Frequency Scaling

Use the Scale keyword in the FREQ section to apply a scaling factor (e.g., Scale 0.9854 for B3LYP/6-31G*).

Imaginary Frequencies

Imaginary frequencies are printed as negative values:

 Frequencies (cm⁻¹):  -1247.3   1652.1   3825.4

A single imaginary frequency indicates a transition state. Multiple imaginary frequencies indicate a higher-order saddle point.

Symmetry Number

The symmetry number σ is auto-detected from point group:

Point Groupσ
C₁1
Cₙn
Dₙ2n
T_d12
O_h24
C∞ᵥ1
D∞ₕ2

Override with SymmetryNumber N in the FREQ section.

Error Types

OpenQuantum provides comprehensive error handling with contextual information:

Error Types

Error TypeDescription
ParseErrorInput parsing errors with line numbers
BasisErrorBasis set loading/parsing errors
ScfErrorSCF convergence and calculation errors
LinalgErrorLinear algebra errors with condition numbers
IoErrorFile I/O errors with file paths
NumericalErrorNumerical issues (NaN, Inf, singularity)

Error Hierarchy

All errors implement the std::error::Error trait and provide:

  • Human-readable description
  • Source error chain (when applicable)
  • Contextual information (line numbers, file paths, condition numbers)

Example Error Messages

Failed to read file '/path/to/input.xyz': No such file or directory

Invalid syntax at line 3: Unknown element symbol: Xx

SCF failed to converge after 100 iterations (ΔP = 1.23e-05)

Matrix is singular or nearly singular (condition number: 1.23e+15).
The matrix is ill-conditioned during symmetric orthogonalization.
Possible causes: (1) Linear dependence in basis set, (2) Atoms too close together

Common Errors and Solutions

ErrorLikely CauseSolution
ParseError: Invalid syntax at line NTypo in input fileCheck line N for syntax errors
BasisError: Basis set not foundTypo in basis name or missing basisCheck basis name spelling; see available basis sets
ScfError: failed to convergeDifficult convergenceIncrease MaxCycle, add Shift, try XQC/YQC
LinalgError: singular matrixLinear dependenceUse smaller basis, check for duplicate atoms
NumericalError: NaN/InfNumerical overflowCheck geometry, reduce step size

Debugging Tips

  1. Enable trace output for DIIS/BFGS:

    OPENQ_DIIS_TRACE=1 oquantum input.inp
    OPENQ_BFGS_TRACE=1 oquantum input.inp
    
  2. Check geometry for:

    • Atoms too close together (< 0.5 Å)
    • Linear dependencies in basis
    • Incorrect coordinates
  3. Try alternative SCF methods:

    • XQC for DIIS + QC fallback
    • YQC for SD → DIIS → QC chain
    • QC true for full QC-SCF

Workspace Structure

OpenQuantum is a multi-crate Cargo workspace of 11 crates:

crates/
├── common/       # Core data types (Molecule, BasisSet, ScfResult), error types, linalg
├── basis/        # Basis set loading, normalization, ECP parsing, .obs embedded files
├── integral/     # One- and two-electron integrals (MD, SP fast paths, Rys quadrature), ECP, gradients, Hessians
├── symmetry/     # Point group detection, character tables, irrep assignment
├── dft/          # Kohn–Sham DFT: exchange-correlation functionals, grid integration, dispersion
├── solvent/      # Implicit solvent models: PCM-family, ddCOSMO/ddPCM, SMD
├── iooq/         # Input file parsing (section-based format)
├── scf/          # RHF/UHF/ROHF + RKS/UKS solvers, DIIS, Fock builder, CPHF, analytic gradients/Hessians
├── posthf/       # MP2 and CCSD(T) correlation energies
├── geometry/     # BFGS/RFO/IC optimization, IRC, NEB, harmonic frequencies, thermochemistry
└── driver/       # Binary entry point (oquantum), pipeline dispatch, checkpoint

Dependency Graph (acyclic)

common (root)
  ├─ basis
  │    └─ integral ────────────────────────────────────┐
  ├─ symmetry ─────────────────────────────────────────┤
  ├─ dft ──────────────────────────────────────────────┤
  ├─ solvent (depends on common, dft, integral) ───────┤
  ├─ iooq ─────────────────────────────────────────────┤
  ├─ geometry ─────────────────────────────────────────┤
  │                                                     ▼
  └─ scf ── posthf ── driver ──────────────────────────┘

Crate Descriptions

CrateRoleKey Exports
commonRoot crate: error types, linalg, shared data typesMolecule, Atom, BasisSet, Shell, Primitive, ScfOptions, ScfResult, OneElectronIntegrals, IntegralProvider, ReactionField, CoordinateUnit, OpenQuantumError
basisBasis set loading & storage, normalization, ECP parsingload_basis_set, ecp::load_ecp_library, cartesian_to_pure_tmatrix
integral1e/2e integrals, ECP & gradient integrals, ERI Hessianscompute_one_electron_integrals, TwoElectronIntegrals, DirectScfIntegrals, shell_quartet_eri, shell_quartet_eri_hessian, ecp::build_ecp_matrix_from_molecule
symmetryPoint group detection, symmetry operationsdetect_symmetry, PointGroup, SymmetryInfo
dftKohn–Sham DFT: functionals, grid, XC integration, dispersionFunctionals, functional, FunctionalSpec, MolecularGrid, GridLevel, integrate_xc, build_xc_matrix, build_unrestricted_xc_matrices, dispersion_energy, DispersionModel
solventImplicit solvation: PCM, ddCOSMO/ddPCM, SMD, gradients, HessiansPcmSolver, DdSolver, SmdCds, build_surface, pcm_matrices, pcm_gradient, pcm_hessian, ddcosmo_gradient
scfRHF/UHF/ROHF/RKS/UKS solvers, DIIS, Fock builder, output, checkpoint, CPHF, analytic gradients/Hessiansrhf_scf, uhf_scf, rohf_scf, rks_scf, uks_scf, rks_scf_range_separated, rks_scf_with_reaction_field, uks_scf_with_reaction_field, DiisAccelerator, checkpoint::{save,load}
posthfMP2 and CCSD(T) correlation energymp2_correlation_energy, ccsd_energy, ccsdt_energy
iooqInput file parsing (section-based format)Route, Method, RunType, parse_molecule, Route::parse
geometryBFGS optimization, Berny RFO, GDIIS/GEDIIS, harmonic frequencies, IRC, NEBoptimize, OptimizationResult, frequencies, frequencies_from_hessian, FreqResult
driverBinary entrypoint, pipeline dispatch, checkpointprepare_scf, run_pipeline

Commands

ActionCommand
Build allcargo build --release
All testscargo test
Single cratecargo test -p <name>
Run inputcargo run --release --package oquantum -- <input_file>
Documentationcargo doc --no-deps

Note: cargo run requires --package oquantum (or -p oquantum) because the workspace has multiple crates. The binary's name is oquantum.

Crate Dependency Graph

The diagrams below are derived from the current production Rust module layout in crates/*/src. They are intended to be updated whenever crate/module boundaries change. Test-only modules are omitted for readability.

Crate Dependency Graph

flowchart LR
   common[common]
   basis[basis]
   integral[integral]
   dft[dft]
   solvent[solvent]
   symmetry[symmetry]
   iooq[iooq]
   scf[scf]
   posthf[posthf]
   geometry[geometry]
   driver[driver]

   common --> basis
   common --> integral
   common --> dft
   common --> symmetry
   common --> iooq
   common --> geometry
   common --> scf
   common --> posthf

   basis --> integral
   integral --> scf
   dft --> solvent
   integral --> solvent
   dft --> scf
   integral --> posthf

   symmetry --> scf
   solvent --> scf

   scf --> driver
   posthf --> driver
   iooq --> driver
   symmetry --> driver
   geometry --> driver
   dft --> driver
   solvent --> driver
   basis --> driver
   integral --> driver

Dependency Rules

  • common is the root crate — all other crates depend on it
  • basisintegral (integrals need basis set data)
  • integralscf (SCF needs integrals)
  • dftscf (SCF builds the Kohn–Sham Fock matrix via XC integration)
  • dft + integralsolvent (solvent needs DFT grid + integral evaluation for cavity)
  • solventscf (solvent-coupled SCF uses ReactionField trait)
  • symmetryscf (SCF uses symmetry for orbital labeling)
  • integralposthf (MP2/CC need integrals)
  • All crates → driver (binary links everything)
  • No cycles in the dependency graph

Module & Submodule Map

This page maps the internal module layout of the workspace crates, following the modern Rust module convention (foo.rs declares the module, foo/ holds its submodules).

dft Crate

The dft crate provides Kohn–Sham DFT ingredients. Functional definitions, grid construction, and XC integration are kept separate so new rungs can be added without touching the SCF driver.

ModuleRole
functionalsExchange-correlation functional implementations by rung (LDA, GGA, meta-GGA, hybrid, range-separated). Forward-mode autodiff (7-variable dual numbers) for exact analytic derivatives
gridMolecular quadrature grid: Becke partition, Mura–Knowles radial scheme, Lebedev–Laikov angular grids, Stratmann–Scuseria compact cell function
integrateAO evaluation on grid batches, XC energy/potential accumulation, shell-pair screening
dispersionEmpirical dispersion corrections: D2 (Grimme 2006), D3 zero-damping, D4 charge-scaled
typesFunctionalSpec, FunctionalValue, Rung, ExactExchangeModel, DensityPoint, GridLevel, DftError
Public SymbolDescription
FunctionalsEnum of all supported functionals
functional()Returns FunctionalSpec for a given functional name
MolecularGridAtom-centered grid builder and storage
integrate_xc()Returns XC energy, grid electron count, and diagnostics
build_xc_matrix()Builds the AO XC potential matrix for RKS
build_unrestricted_xc_matrices()Builds spin-resolved XC matrices for UKS
dispersion_energy()Dispersion correction for a given functional

solvent Crate

The solvent crate implements implicit continuum solvation models. It couples into SCF via the ReactionField trait in common::types.

ModuleRole
surfaceCavity surface construction: SWIG (polynomial switching) and ISWIG (erf-based) discretizations; S and D matrix assembly
pcmPcmSolver: PCM-family models (C-PCM, COSMO, IEF-PCM, SS(V)PE); K·q = R·v linear system solve; caching for gradient/Hessian reuse
ddcosmoDdSolver: domain-decomposition COSMO/PCM with real spherical-harmonic expansion (l=0..6) on atomic spheres
ddcosmo_gradddcosmo_gradient(): analytic gradient for ddCOSMO/ddPCM via adjoint-Lagrangian formulation
gradientpcm_gradient(): three-term analytic PCM gradient (grad_nuc, grad_solver, grad_qv)
hessianpcm_hessian(): three-term analytic PCM Hessian (hess_nuc, hess_solver, hess_qv) with CPHF solvent response
smdSmdCds: SMD cavity-dispersion-solvent-structure term with geometry-dependent atomic surface tensions
smd_dataSmdDescriptor: Abraham-style solvent descriptors (ϕ, ψ, β, α, γ, ε, n) for 179 solvents
solventsstatic_dielectric(): dielectric constant lookup for named solvents
spherical_harmonicsReal spherical harmonic evaluation for ddCOSMO/ddPCM
Public SymbolDescription
PcmSolverMain PCM reaction-field operator; response()fock_contribution()
DdSolverDomain-decomposition reaction-field solver
SmdCdsSMD non-electrostatic CDS correction
build_surface()SWIG/ISWIG cavity surface construction
pcm_matrices()S (Coulomb) and D (dielectric response) matrix assembly
pcm_gradient()Full analytic PCM nuclear gradient
pcm_hessian()Full analytic PCM nuclear Hessian
ddcosmo_gradient()Analytic ddCOSMO/ddPCM gradient

geometry Crate

The geometry crate hosts every optimization, transition-state, and frequency backend. Key public symbols are re-exported from geometry::lib.

Commands Reference

Performance Considerations

License

NOT DECIDED YET

Copyright (c) 2026 Le Nhan Pham

Contributing

We welcome contributions to OpenQuantum! This document provides guidelines for contributing to the project.

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a new branch for your feature or fix
  4. Make your changes
  5. Run tests and ensure they pass
  6. Submit a pull request

Development Setup

git clone https://github.com/lenhanpham/OpenQuantum
cd OpenQuantum
cargo build --release
cargo test

Code Style

  • Follow Rust standard style (run cargo fmt)
  • Use cargo clippy to catch common issues
  • Write documentation for public APIs
  • Add tests for new functionality

Pull Request Guidelines

  • Keep PRs focused on a single feature or fix
  • Include a clear description of the changes
  • Reference any related issues
  • Ensure all tests pass
  • Update documentation if needed

Testing

# Run all tests
cargo test

# Run tests for a specific crate
cargo test -p integral

# Run with specific features
cargo test --features <feature>

Reporting Issues

  • Use GitHub Issues for bug reports and feature requests
  • Include a minimal reproducible example for bugs
  • Specify the OpenQuantum version and platform

Code of Conduct

Be respectful and constructive in all interactions. We follow the Rust Code of Conduct.