SAPT(DFT) wB97X-V Error

Dear community,

I recently compiled the newest version of Psi4 on our cluster and I have to say that I really like your program and especially your manual.

I tried to run some SAPT(DFT) calculations using a ωB97X-V functional for a water dimer which resulted in an error. (Input and error see below). The same input using ωB97X-D works properly. Variations in the basis set did not changed the problem.

Further, I already have read that SAPT(DFT) calculations are under review:

Is there a possibility to fix this problem and running SAPT(DFT) calculations with meaningful results? Unfortunately, the change to another functional is not an option anymore, because a lot of work of me and other group members base of values from this functional.

I would highly appreciate any kind of help to solve this issue.

Best wishes,
Lars

Input:

molecule dimer {
 H      0.000000   0.000000   0.000000
 H      0.000000   0.000000   1.530090
 O      0.583801   0.000000   0.759932
--
 O     -0.952119   0.000000   3.219799
 H     -0.713083  -0.763921   3.749786
 H     -0.713083   0.763921   3.749786
  units angstrom
}

set {
    basis         6-31G
    e_convergence 1e-8
    d_convergence 1e-8
    sapt_dft_grac_shift_a 0.136
    sapt_dft_grac_shift_b 0.136
    SAPT_DFT_FUNCTIONAL WB97X-V

}

energy('sapt(dft)', molecule=dimer)

Error:

    Traceback (most recent call last):
  File "/home/LaUrban/psi4conda/bin/psi4", line 287, in <module>
    exec(content)
  File "<string>", line 36, in <module>
  File "/home/LaUrban/psi4conda/lib//python3.6/site-packages/psi4/driver/driver.py", line 556, in energy
    wfn = procedures['energy'][lowername](lowername, molecule=molecule, **kwargs)
  File "/home/LaUrban/psi4conda/lib//python3.6/site-packages/psi4/driver/procrouting/sapt/sapt_proc.py", line 252, in run_sapt_dft
    sapt_dft(dimer_wfn, wfn_A, wfn_B, sapt_jk=sapt_jk, data=data, print_header=False)
  File "/home/LaUrban/psi4conda/lib//python3.6/site-packages/psi4/driver/procrouting/sapt/sapt_proc.py", line 379, in sapt_dft
    Sinf=core.get_option("SAPT", "DO_IND_EXCH_SINF"))
  File "/home/LaUrban/psi4conda/lib//python3.6/site-packages/psi4/driver/procrouting/sapt/sapt_jk_terms.py", line 526, in induction
    cache, jk, w_B_MOA, w_A_MOB, 20, 1.e-6, sapt_jk_B=sapt_jk_B)
  File "/home/LaUrban/psi4conda/lib//python3.6/site-packages/psi4/driver/procrouting/sapt/sapt_jk_terms.py", line 669, in _sapt_cpscf_solve
    [rhsA, rhsB], hessian_vec, apply_precon, maxiter=maxiter, rcond=conv, printlvl=0, printer=pfunc)
  File "/home/LaUrban/psi4conda/lib//python3.6/site-packages/psi4/driver/p4util/solvers.py", line 108, in cg_solver
    Ax_vec = hx_function(x_vec, active_mask)
  File "/home/LaUrban/psi4conda/lib//python3.6/site-packages/psi4/driver/procrouting/sapt/sapt_jk_terms.py", line 616, in hessian_vec
    xA = cache["wfn_A"].cphf_Hx([x_vec[0]])[0]

RuntimeError:
Fatal Error: Vx: RKS cannot compute VV10 Vx contribution.
Error occurred in file: /scratch/psilocaluser/conda-builds/psi4-multiout_1551437385053/work/psi4/src/psi4/libfock/v.cc on line: 727
The most recent 5 function calls were:




Printing out the relevant lines from the Psithon --> Python processed input file:
    core.set_global_option("E_CONVERGENCE", 1e-8)
    core.set_global_option("D_CONVERGENCE", 1e-8)
    core.set_global_option("SAPT_DFT_GRAC_SHIFT_A", 0.136)
    core.set_global_option("SAPT_DFT_GRAC_SHIFT_B", 0.136)
    core.set_global_option("SAPT_DFT_FUNCTIONAL", "WB97X-V")
--> energy('sapt(dft)', molecule=dimer)

    Psi4 stopped on: Friday, 12 April 2019 04:56PM
    Psi4 wall time for execution: 0:04:21.21

*** Psi4 encountered an error. Buy a developer more coffee!
*** Resources and help at github.com/psi4/psi4.
  1. You said that “a lot of work of me and other group members base of values from this functional”. Just to be clear, does this mean that you’ve done SAPT(DFT) with ωB97X-V in previous versions of Psi? I assume not.
  2. My decidedly unexpert opinion based on the error message is that this is missing the same piece of integration grid technology that we need to get VV10 gradients. @hokru would know more.

Hello jmisiewicz,

Thank you very much for your reply.

No, I have not done.

We are actually working on a new force field. We use different QM methods with this functional and all of our recent parametrizations are based on values generated with ωB97X-V.

Best,
Lars

There is little reason why the good performance of wB97X-V should translate to SAPT(DFT), IMO.

And no, VV10-based functional are currently not possibly to use for CPHF calculations. Necessary derivatives are not implemented. The nuclear gradient is underway but will take some more time.

Not sure if VV10 functionals have been used for SAPT(DFT) at all, and what the impact of VV10 is.

Dear hokru,

Thank you very much for your reply. You said, “There is little reason why the good performance of wB97X-V should translate to SAPT(DFT), IMO.”. I hope I got your right, but this means to me, that it does not make sense to use this functional for SAPT(DFT). Why is this the case, especially as you said ωB97X-V shows some good performances in other methods?

Best wishes,
Lars

I think the requirements to perform well in SAPT(DFT) are different. Similar as one should not expect the same performance for ground and for excited states.

Though I dont know what you mean by ‘ωB97X-V shows some good performances in other methods’.
It works well for ground-state thermochemistry and structures, but no idea how it’s used ‘in other methods’.

In contrast to the alphabet soup of ordinary DFT, DFT-SAPT has stuck to a very few simple functionals (usually ~PBE0). Admittedly I haven’t read the DFT-SAPT literature in the last couple years, but I’d be surprised at a high-rung functional (like omega or dispersion) being used with SAPT.