Multiconfigurational Quantum Chemistry

PyQED now exposes two multiconfigurational orbital optimizers:

  • pyqed.qchem.CASSCF for the lightweight first-order native path

  • pyqed.qchem.COCASCI for the original CASCI + constrained-optimization implementation

from pyqed.qchem import CASSCF, Molecule

mol = Molecule(atom='Li 0 0 0; H 0 0 1.6', unit='angstrom', basis='sto-3g')
mol.build(driver='gbasis')

mf = mol.RHF().run()
mc = CASSCF(mf, ncas=2, nelecas=2).run()

print(mc.e_tot)

The first-order CASSCF implementation is intentionally simple:

  • it reuses the existing native CASCI solver

  • it builds a generalized Fock matrix from CASCI RDMs

  • it updates orbitals with a diagonal-preconditioned first-order step

  • it keeps pyqed.qchem.COCASCI available for the original workflow

You can also pass an explicit starting orbital guess when you want to relax a perturbed or localized active-space reference:

mc = CASSCF(mf, ncas=2, nelecas=2).run(mo_coeff=mo_guess)

Current scope

  • restricted references

  • state-specific optimization

  • diagonal-preconditioned orbital rotations with a short backtracking search

The first-order implementation lives in pyqed.qchem.mcscf.native_casscf.CASSCF and the original constrained optimizer lives in pyqed.qchem.mcscf.casscf.COCASCI. The orbital helper functions live in pyqed.qchem.mcscf.orbopt.