Thermochemical analysis with DF-CCSD(T)?

I was wondering if it is possible to use freq() in combination with DF-CCSD(T). I tried but it doesn’t seem to be working. I am aware of the gradient implementation and I was wondering if the gradient implementation can be used by the hessian() module to compute the corrections (with numerical hessian) or something of that style. Anyway, any insight into this is welcome.

Based on other comments I read, @bozkaya is the first person to ask.

Thanks.

For others’ reference, the error message I get when I tried frequencies by finite difference of energies on 1.2rc2 was:

Traceback (most recent call last):
  File "/Users/jonathonmisiewicz/psi4/objdir2/stage/usr/local/psi4/bin/psi4", line 264, in <module>
    exec(content)
  File "<string>", line 36, in <module>
  File "/Users/jonathonmisiewicz/psi4/objdir2/stage/usr/local/psi4/lib/psi4/driver/driver.py", line 1774, in frequency
    H, wfn = hessian(lowername, return_wfn=True, molecule=molecule, **kwargs)
  File "/Users/jonathonmisiewicz/psi4/objdir2/stage/usr/local/psi4/lib/psi4/driver/driver.py", line 1595, in hessian
    E, wfn = energy(lowername, return_wfn=True, molecule=moleculeclone, **kwargs)
  File "/Users/jonathonmisiewicz/psi4/objdir2/stage/usr/local/psi4/lib/psi4/driver/driver.py", line 492, in energy
    wfn = procedures['energy'][lowername](lowername, molecule=molecule, **kwargs)
  File "/Users/jonathonmisiewicz/psi4/objdir2/stage/usr/local/psi4/lib/psi4/driver/procrouting/proc.py", line 858, in select_ccsd_t_
    return func(name, **kwargs)
  File "/Users/jonathonmisiewicz/psi4/objdir2/stage/usr/local/psi4/lib/psi4/driver/procrouting/proc.py", line 1608, in run_dfocc
    "RIFIT", core.get_global_option("BASIS"))
  File "/Users/jonathonmisiewicz/psi4/objdir2/stage/usr/local/psi4/lib/psi4/driver/p4util/python_helpers.py", line 99, in pybuild_basis
    psibasis = core.BasisSet.construct_from_pydict(mol, basisdict, puream)

RuntimeError: 
Fatal Error: CoordEntry::basisset: Basisset not set for O and type of DF_BASIS_CC
Error occurred in file: /Users/jonathonmisiewicz/psi4/psi4/src/psi4/libmints/coordentry.cc on line: 134

What bothers me is that based on where the error occurred, this bug isn’t deep in the heavy lifting of doing DF-CCSD(T) but just figuring out what the basis set is… And if we can complete a computation for a single energy, doing it for multiple energies shouldn’t be a problem.

I’ve been meaning to look into the density fitting code anyways, so unless somebody else can spot the problem right away, I’ll investigate this further.

This is weird, even explicitly setting df_basis_cc doesn’t help. I can reproduce your error with

molecule {
o
h 1 1.0
h 1 1.0 2 104.5
}
set {
basis cc-pvdz
cc_type df
df_basis_cc cc-pvdz-ri
}
set dfocc {
df_basis_cc cc-pvdz-ri
}
frequency(‘ccsd(t)’)

Oddly enough, if I add symmetry c1 to the molecule group, this input runs without any issues.

Huh. Thanks for report and investigation. Sounds like it should be a proper GH issue.

I have tried the following input and it works for me.

molecule {
o
h 1 1.0
h 1 1.0 2 104.5
symmetry c1
}
set {
basis cc-pvdz
cc_type df
scf_type df
df_basis_cc cc-pvdz-ri
df_basis_scf cc-pvdz-jkfit
}
freq(‘ccsd(t)’)

Since DFOCC module does not use point grup symmetry one should explicitly turn it off for opt and freq jobs. Otherwise, findif or optking try to use symmetry and it leads some discrepancy in different modules.

Further, I think you have to set “scf_type df” option since DFOCC assumes that both references and correlation energies are density-fitted.

Best regards, @jrf @deprince @loriab

Issue filed. Looks like a pointer mess-up, to me.

Issue solved, btw. Coming soon to a conda update psi4 -c psi4/label/dev near you.