How to run wB97X-D3BJ or wB97X-D4?

Hi,

I am curious about how to turn off the vv10 calculations in wB97X-v, and replace the vv10 with D3BJ or D4, as described in this paper
https://onlinelibrary.wiley.com/doi/10.1002/jcc.26411

if this is possible, we have much more flexibility. We can even manually implement the wB97X-3c method by using wB97X-V method + turning-off VV10 + customized D4 parameters + the customized vDZP basis.

Thank you,

Hi, not sure but could you not use NL_VV_C, NL_VV_B, and NL_VV_SCALE REMs to turn off VV10 if the NL_CORRELATION or USE_RVV10 REMs do not work in your use case?

Another workaround is that SCF_FINAL_PRINT = TRUE will print energy components after the SCF convergence, and will give you the nonlocal correlation (= VV10) energy. That won’t give you the efficiency that you want (because VV10 is still computed), but could work as a hack to implement this and get the energies.

Just to keep a record here for future reference. For wB97X-D3(BJ), the following combination of rem variables works (double-checked with ORCA results):

method wB97X-V
nl_vv_scale = 0  ! turn off the VV10 entirely
dft_d  d3_bj
dft_d3_s6  100000 ! s6 = 1.0000
dft_d3_s8  26410   ! s8 = 0.2641
dft_d3_a1  0           ! a1 = 0.0000
dft_d3_a2  549590 ! a2 = 5.4959

To follow up: The -D4 parameters for all supported functionals can be found here: dftd4/assets/parameters.toml at main · dftd4/dftd4 · GitHub

For wB97X-D4, the following seems to work:

method wB97X-V
nl_vv_scale = 0 
dft_d  d4  
dft_d4_s6 100000000
dft_d4_s8  50930000
dft_d4_s9 100000000
dft_d4_a1   6620000
dft_d4_a2 544870000

The dispersion energy matches ORCA’s wB97X-D4. Note that s6 and s9 are 1.0 by default with the “d4.bj-eeq-atm” model, as noted on the linked site.

Well, the way to turn off VV10 in “method = wB97X-V” is to replace it by rem “exchange = gen” with “$xc_functional” section as described in manual:
https://manual.q-chem.com/latest/sect_userxc.html

Here are more details:

$rem
exchange = gen   ! customized DFT in xc_functional section
omega = 300        ! range separation parameter
lrc_dft = true         ! wB97X-V is a long-range-corrected functional
hfk_sr_coef = 16700000        ! coefficient of HF exchange in short range, with 1/100000000
hfk_lr_coef = 100000000       ! coefficient of HF exchange in long range, with 1/100000000
$end

$xc_functional
X wB97X-V 1.0
C wB97X-V 1.0
$end
method = wB97X-V
nl_vv_scale = 0

actually works and might be easier to set.