For open-shell systems (spin_multiplicity > 1) with scf_type="restricted", the SCF solver dispatches to ROHF. The native ROHF builder requires n_atomic_orbitals == n_molecular_orbitals. When a basis set is linearly dependent on a given geometry, the solver drops basis functions so n_MO < n_AO, and ROHF fails:
RuntimeError: ROHF build requires number of atomic orbitals to equal number of molecular orbitals!
To Reproduce
Execute the following:
from qdk_chemistry.algorithms import create
from qdk_chemistry.data import Structure
XYZ = """13
o-benzosemiquinone
O 3.7321 1.3450 0.0000
O 2.0000 0.3450 0.0000
C 3.7321 0.3450 0.0000
C 2.8660 -0.1550 0.0000
C 4.5981 -0.1550 0.0000
C 2.8660 -1.1550 0.0000
C 4.5981 -1.1550 0.0000
C 3.7321 -1.6550 0.0000
H 5.1350 0.1550 0.0000
H 2.3291 -1.4650 0.0000
H 5.1350 -1.4650 0.0000
H 3.7321 -2.2750 0.0000
H 4.2690 1.6550 0.0000
"""
structure = Structure.from_xyz(XYZ)
solver = create("scf_solver")
solver.settings().set("scf_type", "restricted") # -> ROHF for multiplicity > 1
solver.settings().set("enable_gdm", False)
energy, wfn = solver.run(structure, 0, 2, "def2-tzvp") # raises RuntimeError
Output is as follows:
File "<stdin>", line 1, in <module>
energy, wfn = solver.run(structure, 0, 2, "def2-tzvp") # raises RuntimeError
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/qdk_chemistry/algorithms/registry.py", line 91, in run
return self._algo.run(*args, **kwargs)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
RuntimeError: ROHF build requires number of atomic orbitals to equal number of molecular orbitals!
Expected behavior
ROHF should handle n_MO < n_AO the same way RHF/UHF do (operate in the reduced MO space after linear-dependency removal), rather than asserting n_AO == n_MO.
System:
- OS: Linux 6.17.0-1011-azure (Linux-6.17.0-1011-azure-x86_64-with-glibc2.38)
- System: x86_64
- Code Version (qdk_chemistry): 2.0.0+local
- Python: 3.13.1
For open-shell systems (spin_multiplicity > 1) with scf_type="restricted", the SCF solver dispatches to ROHF. The native ROHF builder requires n_atomic_orbitals == n_molecular_orbitals. When a basis set is linearly dependent on a given geometry, the solver drops basis functions so n_MO < n_AO, and ROHF fails:
RuntimeError: ROHF build requires number of atomic orbitals to equal number of molecular orbitals!To Reproduce
Execute the following:
Output is as follows:
Expected behavior
ROHF should handle n_MO < n_AO the same way RHF/UHF do (operate in the reduced MO space after linear-dependency removal), rather than asserting n_AO == n_MO.
System: