Saturday, March 23, 2013

DFT-D, DFT-D2 and DFT-D3: Density functional dispersion correction

Dispersion-corrected DFT, such as B3LYP-D3, are not new functionals but a mix of conventional functionals and an add-on energy term.  For example, B3LYP-D3 denotes a calculation with the usual B3LYP functional plus a D3 dispersion correction energy term.  The dispersion correction energy term is a relatively simply function of interatomic distances and contain adjustable parameters that are fitted to conformational and interaction energies computed using CCSD(T)/CBS.  The fitting is done for a given functional. DFT-D and DFT-D2 energy corrections consider all pairs of atoms while DFT-D3 also consider triplets of atoms to account for three-body effects.

Because the dispersion correction is an add-on term it does not directly alter the wavefunction or any other molecular property.  However, geometry optimizations with dispersion correction will lead to a different geometry than without because the dispersion correction contributes to the forces acting on the atoms.

Dispersion corrections can lead to significant improvements in accuracy and the computational cost associated with dispersion corrections are negligible, so if your favorite code supports dispersion corrections for your functional of choice there is little reason not to use it.

Similar (but not identical) dispersion corrections have also been developed for semi-empirical methods such as PM6, usually in combinations with analogous add-on energy terms to improve hydrogen bonding, e.g. PM6-DH+ and PM6-DH2.

Further reading:
A consistent and accurate ab initio parametrization of density functional dispersion correction (DFT-D) for the 94 elements H-Pu
Dispersion corrections and bio-molecular structure and reactivity

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 

2 comments:

Unknown said...

In GAMESS you can add the dispersion correction to your RHF or DFT run by including

$DFT DC=.T. IDCVER=1 $END

for DFT-D (RHF-D)

$DFT DC=.T. IDCVER=2 $END

for DFT-D2 (RHF-D2)

$DFT DC=.T. IDCVER=3 $END

for DFT-D3 (RHF-D3)

Jan Jensen said...

Thanks. Similar tips for other programs are most welcome