Hi,
I’ve calculated a stretched water molecule at CASSCF(4,4)/def2-TZVP level, using PSI4, PySCF, ORCA, etc. CASSCF energies (-75.9350695 a.u.) from various programs match excellently.
However, if the density fitting (RI-JK using def2-universal-jkfit as auxbasis) is turned on, the result of PSI4 is slightly different from others:
PySCF, ORCA: -75.9350735 a.u.
PSI4: -75.9350878 a.u.
While there are some numerical thresholds, none of them should give fifth decimal place errors.
Are you sure that these programs are using the same auxiliary basis? I can easily see a disagreement there on the fifth decimal place.
Because CASSCF is variational in all parameters, it’s possible to do a correctness test on the Psi4 energy: check that the dipole that Psi4 reports matches the dipole moment from finite difference of energies. I can run these checks later, but I can’t do that right now.
If anybody else would be willing to take this (see here for an example of finite difference dipoles), I’d appreciate it.
I’ve run the test I described earlier and can confirm that the Psi code is correct, given our starting integrals. I strongly suspect that this disagreement is about the basis sets not being the same.
Many thanks! I believe that PSI4 CASSCF code is correct. For the auxiliary basis set, we can find the following strings in the PSI4 output
atoms 1 entry O line 318 file /home/jxzou/software/psi4/share/psi4/basis/def2-universal-jkfit.gbs
atoms 2-3 entry H line 18 file /home/jxzou/software/psi4/share/psi4/basis/def2-universal-jkfit.gbs
And I check the auxbasis data in def2-universal-jkfit.gbs, they are identical. Instead, I just found that if density fitting is also turned on, in the SCF section
scf_type df
df_basis_scf def2-universal-jkfit
for comparison, my previous input here was
scf_type pk
then the DF-CASSCF energy is as expected (-75.9350735 a.u.).
This means that, the scf_type pk will affect the mcscf_type df, making the CASSCF energy is neither equal to conventional CASSCF energy, nor equal to DF-CASSCF energy. But ideally, I think we might expect that mcscf_type df would be independent on scf_type pk.
Thank you! Currently I can use this workaround: explicitly specify
scf_type df
df_basis_scf cc-pvdz-jkfit # using cc-pvdz-jkfit just as an example
between the SCF section and the DF-CASSCF section. And in DF-CASSCF section I would specify mcscf_type and df_basis_mcscf. Then the result is as expected.