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]
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:
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.
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.
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
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
The interface implements a single unnamed method; 'method' keyword not necessary
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