Spherical averaging of occupied orbitals on atoms

For my localization scheme, I need to get MO coefficients for the full molecule, and for atomic fragments. The problem is that for the atomic fragments like carbon, oxygen, …, the occupied p orbitals are not spherically averaged. In the code DIRAC, one can specify fractional electron number in those orbitals (like 2 electrons in 6 spin-orbitals for carbon) to get this spherical averaging. It is called “Open shell SCF calculation using Average-of-Configuration”. Basically, instead of optimizing the energy for a single open-shell state, it optimizes the energy for a limited set of open-shell states.
Is there anything like this in psi4 ?


Just to revive this question. In PYSCF, they also have the option to set fractional occupation to conserve spherical symmetry.

Is there anything like this in Psi4 ?

There is the option to set fractional occupation. A similar concept is used for the SAD guess. I never used to keyword, but there are examples in https://github.com/psi4/psi4/tree/master/samples/frac (sample dir is also in your psi4 installation)

Ok, I saw it but though it was only for UHF, while I also want to consider RHF.
I will give it a try !

As expected, the fractional occupation option is disabled for restricted calculations:

import psi4

psi4.set_options({'basis': 'sto-3g',
               'reference': 'rhf',
               'frac_occ': [3,4,5]})

C 0. 0. 0.
symmetry c1""")

psi4.energy('scf', return_wfn=True)

I can read in the output:
Fractional occupation disabled.

So I’m not sure how to enforce the spherical symmetry.

Hi all,

I am reopening this question, i.e. is there any way to get fractional occupation to have spherical symmetry of atomic densities (using Restricted-HF). As @hokru said, this is possible with UHF but the function is disabled in RHF.
I guess it should be too much of a problem to add it in the restricted case as well ?

Problem is that when I do calculations on atoms, I get MO coefficients (well, should be called orthonormal AO coefficients I guess as it is for a single atom) that are not unique and I can get really different results depending on which architecture my code is running.