Possible error in CIS notebook in psi4numpy tutorial

In psi4numpy’s tutorial for CIS seems to have an error.

\langle ^{1}\psi_{a}^{r} | H- E_0 | ^{1}\psi_{b}^{s}\rangle = (\epsilon_{r}- \epsilon_{a}) \delta_{rs} \delta_{ab}\ \ - \ \ <rb|sa> \ + \ 2<rb|as>

The formula used from Szabo and Ostlund, to calculate matrix elements of the Hamiltonian has MO indices (a,b… for occupied MOs and r,s… virtual MOs) but after spin blocking the entire notebook deals with the entire N electrons in terms of Spin-Orbitals. Also, the given formula that is being used, is for spin-adapted configuration state functions.

The excitation combinations that are generated in the notebook are between all occupied electron and virtual orbitals without accounting for spin. If I am not wrong the implementation below also accounts for
singles like a → r’ (where ’ denotes beta spin), which I think shouldn’t be considered.

Am I missing anything else here?

# Create instance of MintsHelper class
mints = psi4.core.MintsHelper(scf_wfn.basisset())

# Get basis and orbital information
nbf = mints.nbf()          # Number of basis functions
nalpha = scf_wfn.nalpha()  # Number of alpha electrons
nbeta = scf_wfn.nbeta()    # Number of beta electrons
nocc = nalpha + nbeta      # Total number of electrons
nso = 2 * nbf              # Total number of spin orbitals
nvirt = nso - nocc         # Number of virtual orbitals

# Build the possible excitations, collect indices into a list
excitations = []
for i in range(nocc):
    for a in range(nocc, nso):
        excitations.append((i, a))

I think you’re trying to say “the CIS tutorial allows for excitations that don’t preserve S_z and is between determinants and uses spin orbitals, but Szabo and Ostlund’s doesn’t allow for excitations that preserve S_z and is between CSF’s and uses spatial orbitals.” Correct on all counts, but none of that indicates an error.

Oh, let me put it this way, the current version in the tutorial considers both singlet and triplet states, while Szabo doesn’t. May be it appropriate to mention that ?

If you want to make a pull request to mention it, go ahead.