Interface dispersion3

Advanced empirical dispersion correction for DFT developed by S.Grimme - the DFT-D3 method.[1,2] Includes modification of the D3 correction for semiempirical methods[3] designed for use with the H4 hydrogen bonding correction. The interface implements also alternative damping functions that make it possible to calculate an empirical replacement of the dispersion terms in DFT-SAPT.[4]

Damping functions

The dispersion3 interface implements multiple damping functions – both the zero and Becke-Johnson damping parametrized by Grimme but also more recent extensions published by others:

D3 dispersion for DFT in small basis

It was found that the DZVP-DFT basis exhibits very small basis set superposition error and that DFT-D3 calculations in this basis set are as accurate as calculations in a triple-zeta basis.[9] The D3 correction with various damping functions was reparametrized for this basis and the parameters are provided in Cuby and automatically applied when this basis set is used.

More specifically, the default parameters in Cuby are these obtained in the final parametrization without the 3-body term. The 3-body correction should be used in larger systems; this setup offerrs the best overall accuracy. It is recommended to use the OP, BJ or CSO damping functions, the zero damping performs somewhat worse.

In the paper [9], parameters for B-LYP, B3-LYP, PBE, PBE0 and TPSS were reported. Parameters for additional functionals may be available in Cuby; these are obtained using exactly the same procedure as described in the paper but the testing is left to the user. So far, no other functional beats B-LYP and B3-LYP.

MP2-D and SCS-MP2D

Cuby can be used for performing dispersion-corrected MP2 calculations with the MP2D and SCS-MP2D methods.[10,11] The input, including the parameters, is available below in Examples 3 to 5.

Parameters

Cuby contains a database of methods for which D3 parameters are available, and assigns these parameters automatically by default. The parameters for DFT with zero and BJ damping were taken from the website of Stefan Grimme and from the source of the dftd3 program available therein. The other parameters come from the respective publications.

The parameters can be divided into following sets:

Method Damping Basis sets Functionals
DFT zero def2-QZVP b1b95, b1lyp, b1p86, b2gpplyp, b2plyp, b3lyp, b3p86, b3pw91, b971, b972, b97d, b98, bhlyp, blyp, bmk, bop, bp86, bpbe, camb3lyp, dsdblyp, hcth120, hcth407, hiss, hse03, hse06, lcwhpbe, lcwpbe, m05, m052x, m06, m062x, m06hf, m06l, m08hx, m11l, mn15l, mpw1b95, mpw1kcis, mpw1lyp, mpw1pw91, mpw2plyp, mpwb1k, mpwkcis1k, mpwlyp, mpwpw91, n12, o3lyp, olyp, opbe, otpss, pbe, pbe0, pbe1kcis, pbe38, pbeh1pbe, pbehpbe, pbesol, pkzb, ptpss, pw1pw, pw6b95, pw91p86, pwb6k, pwpb95, revpbe, revpbe0, revpbe38, revssb, revtpss, revtpss0, revtpssh, rpbe, rpw86pbe, scan, ssb, thcth, thcthhyb, tpss, tpss0, tpss1kcis, tpssh, wb97x, x3lyp, xlyp
TZVPP blyp, bp, b97d, revpbe, pbe, tpss, b3lyp, pbe0, pw6b95, tpss0, b2plyp
DZVP-DFT [9] blyp, b3lyp, pbe, pbe0, tpss, bp86, b97d
B/J def2-QZVP b1b95, b1lyp, b1p86, b2gpplyp, b2plyp, b3lyp, b3p86, b3pw91, b971, b972, b97d, b98, bhlyp, blyp, bmk, bop, bp86, bpbe, bp, camb3lyp, dsdblyp, dsdpbeb95, dsdpbep86, hcth120, hcth407, hiss, hse03, hse06, lcwhpbe, lcwpbe, m11, mn12l, mn12sx, mn15, mpw1b95, mpw1kcis, mpw1pw91, mpw2plyp, mpwb1k, mpwkcis1k, mpwlyp, mpwpw91, n12sx, o3lyp, olyp, opbe, otpss, pbe, pbe0, pbe1kcis, pbe38, pbeh1pbe, pbehpbe, pbesol, ptpss, pw6b95, pw91, pwb6k, pwpb95, revpbe, revpbe0, revpbe38, revssb, revtpss, revtpss0, revtpssh, rpbe, rpw86pbe, scan, sogga11x, ssb, thcth, thcthhyb, tpss, tpss0, tpss1kcis, tpssh, x3lyp, xlyp
DZVP-DFT [9] blyp, b3lyp, pbe, pbe0, tpss, bp86, b97d
CSO [5] def2-QZVPa blyp, b3lyp, bp86, pbe0, pbe, pw6b95, tpss, b2plyp
DZVP-DFT [9] blyp, b3lyp, pbe, pbe0, tpss, bp86, b97d
OP [6] def2-QZVPa blyp, b3lyp, b97d, b97h, revpbe, revpbe0, tpss, tpssh, ms2, ms2h
DZVP-DFT [9] blyp, b3lyp, pbe, pbe0, tpss, bp86, b97d
HF zero, B/J def2-QZVP
AM1, PM3, PM6, RM1, OM3
SCC-DFTB

a These methods were parametrized with even larger basis set but we list them under def2-QZVP (which is large enough for parctical use) for compatibility with zero and BJ damping

D3 dispersion for DFT-SAPT

The D3 dispersion can be used as computationally efficient replacement for the dispersion terms in DFT-SAPT.[4] In this case, the damping function is different than the one used in DFT-D. The following input performs such a calculation using the recommended parameters:

job: interaction
interface: dispersion3
d3_damping: TT
d3_hybridization: fixed
d3_a1: -0.436
d3_a2: 4.757
d3_s8: 0.869

References

  1. Grimme, S.; Antony, J.; Ehrlich, S.; Krieg, H. J. Chem. Phys. 2010, 132 (15), 154104.
  2. Grimme, S.; Ehrlich, S.; Goerigk, L. J. Comput. Chem. 2011, 32 (7), 1456-1465.
  3. Řezáč, J.; Hobza, P. J. Chem. Theory Comput. 2012, 8 (1), 141-151.
  4. Sedlak, R.; Řezáč, J. J. Chem. Theory Comput. 2017, 13 (4), 1638.
  5. Schröder, H.; Creon, A.; Schwabe, T. J. Chem. Theory Comput. 2015, 11 (7), 3163-3170.
  6. Witte, J.; Mardirossian, N.; Neaton, J. B.; Head-Gordon, M. J. Chem. Theory Comput. 2017, 13 (5), 2043-2052.
  7. Tang, K. T.; Toennies, J. P. J. Chem. Phys. 1984, 80, 3726
  8. Hesselmann, A. J. Phys. Chem. A 2011, 115, 11321-11330
  9. Hostaš J; Řezáč, J. J. Chem. Theory Comput. 2017, 13 (8), pp 3575-3585
  10. Řezáč, J.; Greenwell, C.; Beran, G. J. O.; J. Chem. Theory Comput. 2018, 14 (9), 4711-4721.
  11. Greenwell, C.; Řezáč, J.; Beran, G. J. O.; Phys. Chem. Chem. Phys. 2022, 24 (6), 3695-3712.

Methods and capabilities

The interface implements a single unnamed method; 'method' keyword not necessary

Keywords used

Keywords specific for this interface:

Other keywords used by this interface:

Examples

The following examples, along with all other files needed to run them, can be found in the directory cuby4/interfaces/dispersion3/examples

#===============================================================================
# Dispersion3 example 1: DFT-D3 with automatic setup
#===============================================================================

# The dispersion3 interafce identifies the basis set and functional used
# by the parent calculation and if this combination is found in its parameter
# database, the appropriate parameters are used automatically.

# Interaction energy calculation
job: interaction

# Methane dimer from the internal database
geometry: A24:methane_dimer

# DFT calculation setup
interface: turbomole
method: dft
functional: b-lyp
basisset: def2-QZVP # This is the recommended basis set for DFT-D3)

# Adding the dispersion correction as a modifier (no further setup needed)
modifiers: dispersion3
#===============================================================================
# Dispersion3 example 2: Manual setup of parameters
#===============================================================================

# This example yields a result identical to the one of example 1 but the
# parameters for the dispersion correction are eneterd manually

# Interaction energy calculation
job: interaction

# Methane dimer from the internal database
geometry: A24:methane_dimer

# DFT calculation setup
interface: turbomole
method: dft
functional: b-lyp
basisset: def2-QZVP # This is the recommended basis set for DFT-D3)

# Adding the dispersion correction as a modifier
modifiers: dispersion3

#-------------------------------------------------------------------------------
# Dispersion3 correction setup - in a separate block
#-------------------------------------------------------------------------------
modifier_dispersion3:
  # Damping function:
  d3_damping: bj
  # Damping function parameters
  d3_a1: 0.4298
  d3_a2: 4.2359
  # Third parameter: scaling of the C8 term
  d3_s8: 2.6996
  # Other parameters set to default values
 
#===============================================================================
# Dispersion3 example 3: MP2D calculation
#===============================================================================

# Interaction energy calculation using the MP2D method - a correction that
# subtracts the "bad" dispersion from MP2 and adds better one.

# The correction is combined with extrapolation to complete basis set limit.

# The example uses ethene dimer from the A24 data set, the interaction energies
# (in kcal/mol) are:
# CCSD(T)/CBS  -1.09
# MP2/CBS      -1.30
# MP2D/CBS     -1.12

job: interaction
geometry: A24:14

# MP2/CBS calculation
interface: extrapolate_cbs
extrapolate_cbs_correction: no
calculation_common:
  interface: psi4
  method: mp2
  charge: 0
calculation_mp2_small:
  basisset: aug-cc-pVTZ
  basisset_zeta: 3
calculation_mp2_large:
  basisset: aug-cc-pVQZ
  basisset_zeta: 4

# The MP2D correction:
# The mixer interface is used to remove the UCHF and add the CKS dispersion
modifiers: mixer
modifier_mixer:
  mixer_weight_a: 1.0
  mixer_weight_b: -1.0
  
  calculation_common:
    interface: dispersion3
    d3_s6: 1.0
    d3_damping: tt
    d3_hybridization: grimme_mod
    d3_3body: false
    development:
      d3_double_damping4: yes
      d3_double_damping_r: 0.72
      d3_double_damping_w: 0.20
    d3_s8: 1.187
  calculation_a: # CKS
    d3_a1: 0.944
    d3_a2: 0.480
  calculation_b: # UCHF
    d3_data_patch: mp2d_uchf_c6.yaml
    d3_a1: 0.944
    d3_a2: 0.480
  

#===============================================================================
# Dispersion3 example 4: MP2D geometry optimization
#===============================================================================

# Geometry optimization using MP2D. Only optimization-specific setup is
# described in detail.

job: optimize
geometry: A24:14

interface: psi4
method: mp2
# Rather small basis is used to make the example run faster, for high-quality
# results, it is recommended to use larger basis.
basisset: cc-pVTZ

# The MP2D correction
modifiers: mixer
modifier_mixer:
  mixer_weight_a: 1.0
  mixer_weight_b: -1.0
  
  calculation_common:
    interface: dispersion3
    d3_s6: 1.0
    d3_damping: tt
    # Analytical gradient of the continuous valence is not implemented,
    # using fixed integer valence introduces no appreciable error:
    d3_hybridization: fixed
    d3_3body: false
    development:
      d3_double_damping4: yes
      d3_double_damping_r: 0.72
      d3_double_damping_w: 0.20
    d3_s8: 1.187
  calculation_a: # CKS
    d3_a1: 0.944
    d3_a2: 0.480
  calculation_b: # UCHF
    d3_data_patch: mp2d_uchf_c6.yaml
    d3_a1: 0.944
    d3_a2: 0.480
  

#===============================================================================
# Dispersion3 example 5: SCS-MP2D calculation
#===============================================================================

# Interaction energy calculation using the SCS-MP2D method - a correction that
# subtracts the "bad" dispersion from MP2 and adds better one, combined with
# spin component scaling of the MP2 correlation.

# For more information, see https://doi.org/10.1039/D1CP04922D

job: interaction
bsse_correction: yes # Here we use counterpoise correction for BSSE
geometry: A24:14 # The example uses ethene dimer from the A24 data set

interface: psi4
method: mp2
basisset: aug-cc-pVQZ
charge: 0

# SCS-MP2D spin component scaling, the coefficients are:
# 'other spin': 0.8263
# 'same spin': 0.9004
replace_energy_with_expression: scf_energy + correlation_mp2_os * 0.8263 + correlation_mp2_ss * 0.9004

# The MP2D correction:
# The mixer interface is used to remove the UCHF and add the CKS dispersion
modifiers: mixer
modifier_mixer:
  mixer_weight_a: 1.0
  mixer_weight_b: -1.0
  # The final weight is the average of the SCS coefficients:
  mixer_weight_b_expression: "-0.5 * (0.8263 + 0.9004)"
  
  calculation_common:
    interface: dispersion3
    d3_s6: 1.0
    d3_damping: tt
    d3_hybridization: grimme_mod
    d3_3body: false
    development:
      d3_double_damping4: yes
      d3_double_damping_r: 0.8254
      d3_double_damping_w: 0.1198
  calculation_a: # CKS
    d3_s8: 1.2092
    d3_a1: 1.5359
    d3_a2: -0.7595
    d3_s6: 1.0
  calculation_b: # UCHF
    d3_data_patch: mp2d_uchf_c6.yaml
    d3_s8: 1.2092
    d3_a1: 1.5359
    d3_a2: -0.7595
    d3_s6: 1.0