# Density Functional Theory DFT-D, DFT-D2 and DFT-D3

I was looking for a reasonable explanation of the Grimme's dispersion correction methods but his papers are written in a very difficult language. Does anyone could explain me the differences between these three methods?

• S. Grimme, "Accurate description of van der Waals complexes by density functional theory including empirical corrections", J. Comput. Chem. 25 (2004) 1463-1473.
• S. Grimme, "Semiempirical GGA‐type density functional constructed with a long‐range dispersion correction", J. Comput. Chem. 27 (2006) 1787-1799.
• S. Grimme, J. Antony, S. Ehrlich and H. Krieg, "A consistent and accurate ab initio parametrization of density functional dispersion correction (DFT-D) for the 94 elements H-Pu", J. Chem. Phys. 132 (2010) 154104.
• This question might be better fit on the new Materials Modeling SE May 18 '20 at 0:39

Empirical dispersion accounts for the fact that Density Functional Theory systematically underestimates Van der Waals interactions. DFT-D and DFT-D2 are very simple. DFT-D3 is a bit more complex.

DFT-D and DFT-D2 both consist of a pairwise -1/r^6 attraction, like a Lennard-Jones attraction, scaled by a parameter C6 and a damping function which prevents the energy from going to -∞ at r=0. The distance parameter r0 is just the sum of the covalent radii of the interacting pair of atoms. The energy parameter C6 is the geometric mean of the two element-wise C6 parameters. Importantly, neither C6 or r0 depend on anything but the pair of elements involved. That makes DFT-D and DFT-D2 very easy to implement.

The following code implements the DFT-D2 energy as used in the wB97X-D functional ("Long-range corrected hybrid density functionals with damped atom–atom dispersion corrections", Chai & Head-Gordon, 2008). DFT-D and variants use other choices of damping function but are otherwise the same. Parameters C6 and covalent radii are available in "Semiempirical GGA-type density functional constructed with a long-range dispersion correction", Grimme, 2006. Currently both of these papers are available as PDFs on Google Scholar. You can get the parameters c6_coefficients and covalent_radii there.

def dftd2_wB97XD(r, ai, aj):
r6 = r**6
c6 = sqrt(c6_coefficients[ai] * c6_coefficients[aj])

• Thank you for the wondeful explanation! I am confused about this line in the above code though, where the C6 term is calculated - c6 = sqrt(c6_coefficients[ai] * c6_coefficients[aj])**0.5. It looks like the square root is being taken twice here (unless I'm incorrect in assuming **0.5 is an exponentiation to the 1/2 power). Is this a typo, or is there some reason a double square root would be needed? Aug 11 at 19:30