Help on SCF convergence for a transition metal complex

Dear Psi4 developers and users,

I am trying to do a single-point DFT calculation on a high-spin Cr(III)(CO)4(furan)2 complex with SCAN functional where the geometry has been previously optimized by B3LYP. However, I am having trouble converging the SCF where the density RMS stops decreasing at some point and the energy jump between two values. I looked through some of the posts here and tried stuff like increasing the grid value and enabling damping (20%). Neither helped in my case. Since SCAN is a metaGGA functional, I cannot use SOSCF in Psi4 as well. Here are my SCF-related settings:

psi4.set_options({
    'reference': "uks",
    "puream": False,
    "DF_SCF_GUESS": False,
    "scf_type": "df",
    "basis": "lacvps",
    "dft_pruning_scheme": "none",
    "PRINT_MOS": False,
    "dft_spherical_points": 590,
    "dft_radial_points": 99,
    "maxiter": 100,
    "D_CONVERGENCE": 1e-5,
    "E_CONVERGENCE": 1e-5,
    "guess": "sad", })

I attached the xyz file, input script, and the output file below. I also attached the output file for the B3LYP calculation that worked. Any help or suggestions would be appreciated! Thanks!

Best,
Chenru
geo.txt (894 Bytes)
input.py (2.0 KB) output-b3lyp-sad.dat (26.9 KB) output-scan-sad.dat (16.5 KB)

The computation works fine for me if I don’t try reading in the orbitals from the previous computation. I’m a little surprised that reading in orbitals makes the convergence worse.

@jmisiewicz Interesting! Sorry that I attached the wrong output file. I tried a SCAN calculation with SAD as the initial guess but still failed (see below). Could you provide me you input and output file? Probably I just have some bad settings for the SCF. Thanks! BTW, I am using a Psi4 of version 1.4a2.dev723.output-scan-sad-guess.dat (15.6 KB)

You can read my version number and input file from the output file. crduan_reproduce.dat (13.0 KB)

We can’t even agree about the SAD guess energy. I tried repeating the computation on the current master, and I got (within a mH) my SAD guess energy and not yours. This is disturbing.

I installed the current Psi4 with conda and I don’t believe I changed anything related to the source code. All the test seems fine with psi4 --test. I tried to use the stable release (1.3.2) but found SCAN is not available there. I will try your version to see whether I can converge the calculation.

@jmisiewicz I found the issue. You were calculating charge=0 and spinmult=1, and my setup is charge=3, spinmult=4.

TMs are always fun. More Fock exchange favours usually the high-spin solution and here a GGA seems to have trouble converging to it. Sure this is supposed to be a high-spin complex?
You can try different guesses or turn off spin_averaging in the SAD to see if a different initial configuration helps.

Not sure if you can print anything about the guess that helps you identify individual orbital occupations.
There is work to be done to help users with difficult states.

Good catch about the multiplicity.

I unfortunately don’t have the time to debug this one much further.

SCAN is generally a problematic functional. rSCAN by Bartók and Yates is numerically better-behaved while reproducing similar results. You might try rSCAN instead.

Thanks all for your help. I am doing the calculations in a HTS manner and mostly want to make sure I did not do something routinely wrong to make this unconvergence happened. @susilehtola, I will try that! Do you know whether revTPSS and revM06-L are designed for the same purpose as revSCAN (i.e., numerically better-behaved while reproducing similar results)? Thanks!

IIRC no, they’re aimed for different purposes, but you should look up the original literature.

Careful mixing r and rev, they name different functionals!

SCAN is the only functional having real issues with the radial grid (or at least some implementations, e.g Turbomole’s). Eg. M06 is more sensitive to the spherical grid. TPSS is the least problematic.

I think, in your system, (meta)GGAs are just having problems describing the state you want. I see energy oscillations with TPSS and PBE that are an indication they jump between states. Level-shifting virtual orbital would help in that case, but psi4 does not have that yet. You can try MOM, though that’s not black-box.