Different "SCF" and "Reference" energies for a CCSD calculation?

Hi all,

This is my first post here, so I think it is well-written and all, but apologies in advance if that is not the case. I have also been reading a bit the manual and forum and not found anyone encountering this problem before? So, here it goes.

I am running some small CCSD(T) calculations with an aug-cc-pVDZ basis set to get a correction for some interaction energies by taking the difference of the CCSD(T) and MP2 correlation energies with some “small” basis set and then add that to my MP2/CBS energies. I think that is fairly standard, but just to explain what I am trying to do.

I encountered the following issue: my MP2 energies from the MP2 calculation do not match the MP2 energies from the CCSD(T) calculation. This led me to look into the output a bit more carefully, and I have noticed that it prints two different sets of energies for the CC calculation: an “SCF energy” and a “Reference energy” that are slightly different. (or in some cases not so slightly…)

Just to showcase the “problem” in the forum, I have run some calculations on the water dimer.

Psi4 version:

         Psi4: An Open-Source Ab Initio Electronic Structure Package
                               Psi4 1.7 release

                         Git: Rev {} zzzzzzz

Input file:

memory 200000 mb

molecule dimer {
0 1
O  1.327706  0.106852  0.000000
H  1.612645 -0.413154  0.767232
H  1.612645 -0.413154 -0.767232
--
0 1
O -1.550676 -0.120030 -0.000000
H -0.587091  0.053367 -0.000000
H -1.954502  0.759303 -0.000000
units angstrom
no_reorient
}

set globals {
    basis          aug-cc-pvdz
    guess          sad
    scf_type       df
    freeze_core    true
    reference      rhf
}

# define dimer
dimer = dimer.extract_subsets([1,2])
psi4.IO.set_default_namespace('dimer')
Edim = energy('method',molecule=dimer)

Where ‘method’ is either mp2 or ccsd(t).

The input looks weird, but my bigger picture input basically does the calculation of both the dimer and the monomers, so that is why I use this perhaps too convoluted input structure.

For my ‘mp2’ calculations I obtain the following energies:

  @DF-RHF Final Energy:  -152.08641653209526


[more output]

        -----------------------------------------------------------
         ==================> DF-MP2 Energies <====================
        -----------------------------------------------------------
         Reference Energy          =    -152.0864165320952566 [Eh]
         Singles Energy            =      -0.0000000000000000 [Eh]
         Same-Spin Energy          =      -0.1136800413218990 [Eh]
         Opposite-Spin Energy      =      -0.3298954078288628 [Eh]
         Correlation Energy        =      -0.4435754491507619 [Eh]
         Total Energy              =    -152.5299919812460132 [Eh]
        -----------------------------------------------------------

So the SCF energy and the “Reference Energy” printed at the end are the same. Great!

When I run the ‘ccsd(t)’ calculations I obtain the following:

  @DF-RHF Final Energy:  -152.08641653209514

[more output]

            **************************
            *                        *
            *        CCENERGY        *
            *                        *
            **************************

    Nuclear Rep. energy (wfn)     =   36.636568219379491
    SCF energy          (wfn)     = -152.086416532095143
    Reference energy    (file100) = -152.086456453401240

[more output]


    SCF energy       (wfn)                    = -152.086416532095143
    Reference energy (file100)                = -152.086456453401240

    Opposite-spin MP2 correlation energy      =   -0.330005655604294
    Same-spin MP2 correlation energy          =   -0.113586726584186
    Singles MP2 correlation energy            =   -0.000000000000000
    MP2 correlation energy                    =   -0.443592382188480
      * MP2 total energy                      = -152.530048835589724

    Opposite-spin CCSD correlation energy     =   -0.358014535663327
    Same-spin CCSD correlation energy         =   -0.100495579966179
    Singles CCSD correlation energy           =    0.000000000000000
    CCSD correlation energy                   =   -0.458510115629506
      * CCSD total energy                     = -152.544966569030748

So, the SCF energy (wfn) is the same one as I obtained before. However, the “Reference energy (file100)” is different. In this case it is not by a lot, by in my other calculations it seems a bit more important. The “MP2 total energy” printed in the CCSD(T) calculation is also different from the one obtained in the MP2 calculation.

I am not sure what is the problem, and I assume it has to do with the “file100” and the fact that that energy/wavefunction is taken as a reference for the MP2/CC calculations in the second case.

I also thought that maybe it is somehow related to the density fitting, but I am not sure, so I wanted to check.

Any help is greatly appreciated!!

Thanks in advance,

Carlos

So, I have checked a bit further and it seems that it has to do with the density-fitting.

If I take the same input as above and only change the scf_type to “pk” instead of “df” both MP2 and CCSD(T) calculations have the same SCF and Reference energies:

MP2 calculation:

  @RHF Final Energy:  -152.08645647881443

[...]

        -----------------------------------------------------------
         ==================> DF-MP2 Energies <====================
        -----------------------------------------------------------
         Reference Energy          =    -152.0864564788144264 [Eh]
         Singles Energy            =      -0.0000000000000000 [Eh]
         Same-Spin Energy          =      -0.1136846763977026 [Eh]
         Opposite-Spin Energy      =      -0.3299089302147452 [Eh]
         Correlation Energy        =      -0.4435936066124478 [Eh]
         Total Energy              =    -152.5300500854268648 [Eh]
        -----------------------------------------------------------


CCSD(T) calculation:

  @RHF Final Energy:  -152.08645647881428

[...]

            **************************
            *                        *
            *        CCENERGY        *
            *                        *
            **************************

    Nuclear Rep. energy (wfn)     =   36.636568219379491
    SCF energy          (wfn)     = -152.086456478814284
    Reference energy    (file100) = -152.086456478813659


[...]


    SCF energy       (wfn)                    = -152.086456478814284
    Reference energy (file100)                = -152.086456478813659

    Opposite-spin MP2 correlation energy      =   -0.330019193323689
    Same-spin MP2 correlation energy          =   -0.113591325354351
    Singles MP2 correlation energy            =   -0.000000000000000
    MP2 correlation energy                    =   -0.443610518678040
      * MP2 total energy                      = -152.530066997491701


I should have looked more closely into the manual at the SCF section (HF: Hartree–Fock Theory) but I probably missed whether it is mentioned in the CC section of the manual (CC: Coupled Cluster Theory).

In any case, I think I should repeat everything with the “pk” algorithm for the SCF, and hope that it will be fully consistent now. Although I assume the importance for the final interaction energies will be minor, I still would like it to be properly done!

Still, any insight is also appreciated.

Yes, the difference here is due to the CC code defaulting to conventional integrals rather than density fitted. A few comments:

  1. You can set density-fitting on for the CCSD(T) computations with cc_type df in your input options. The density-fitting errors are usually small and the code will be much faster.

  2. Psi4 can handle these focal-point extrapolations combining MP2 and CCSD(T) in an automated way. I’d really recommend doing the calculations with Psi4’s built in handling. The syntax looks like this:
    energy("mp2/aug-cc-pv[tq]z + d:ccsd(t)/aug-cc-pvdz")
    where the d: part indicates the basis you want to take the difference between CCSD(T) and MP2 in. Psi4 can also handle geometry optimizations with the focal-point extrapolations if you want that. Do make sure you’re consistent with the density fitting across SCF/MP2/CCSD(T). See also: Complete Basis Set in the manual.

Hi,

First of all, sorry for the late reply, and thanks so much for the answer. I have been running some more tests and indeed both df and pk provide very similar results in the end, specially for the deltaCC correction.

I did not know about point 2, which of course is much faster than doing all the separate calculations, although I guess I have learnt something in the process.

I will check the Complete Basis Set section to find out more about how to select which extrapolation formula to use, which I guess they can use different ones and different exponents, etc.

In any case, thanks for the help and clarification :grin: