I have been performing CISD calculations with PySCF and I have a query surrounding the occupation of the orbitals. Here, the occupancies are calculated from the eigenvalues of the 1-electron restricted density matrix.
Taking the hydrogen fluoride molecule as an example, this is how the calculation is set up:
import numpy as np
from numpy import linalg as LA
from pyscf import gto, scf, lib, ci
lib.num_threads(1)
geometry = '''
H 0.0 0.0 0.0
F 0.0 0.0 1.1
'''
molecule = gto.Mole()
molecule.atom = geometry
molecule.basis = '3-21g'
molecule.build()
occupied_space = [occ for occ in range(int(molecule.nelectron * .5))]
print(occupied_space)
mf = scf.RHF(molecule)
mf.scf()
my_ci = ci.CISD(mf=mf,
frozen=None,
mo_coeff=None,
mo_occ=None)
my_ci.kernel()
rdm1 = my_ci.make_rdm1()
evals = LA.eigvalsh(rdm1)[::-1]
print(evals)
When the CISD argument frozen = None
is set, the following eigenvalues are obtained:
[1.99994686e+00 1.99455156e+00 1.99008540e+00 1.99008540e+00
1.96069255e+00 3.79033668e-02 9.52687575e-03 9.52687575e-03
5.33169546e-03 1.84641520e-03 5.03007156e-04]
This shows clear non-integer occupation of all the occupied/core orbitals.
If one sets frozen = [0, 1, 2, 3]
; the eigenvalues/occupancies are:
[2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00
1.99475055e+00 4.28307558e-03 7.83866124e-04 1.23523177e-04
4.09351267e-05 1.78677364e-05 1.79726837e-07]
This shows that the HOMO is allowed to relax, smearing occupation into the virtual orbitals.
The really confusing part is when frozen = [1, 2, 3, 4]
; which yields the following eigenvalues:
[2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00
1.99998097e+00 7.30194999e-06 4.82147944e-06 3.45239124e-06
3.45239124e-06 9.06692496e-12 1.69884163e-12]
Here, the HOMO (orbital 4, which should be frozen) has non-integer occupation, and the first unfrozen occupied orbital (orbital 0) retains complete integer occupation.
My question has two components. What is causing the occupation smearing in this CISD calculation (as this is not a DFT calculation), and why is the HOMO relaxing when frozen = [1, 2, 3, 4]
?