3.20 C6/R6 corrections for long-range van der Waals interactions

The correction improves the description of van der Waals (vdW) interactions in DFT. It is based on the leading-order C6/R6 term for the interaction energy between two atoms. Both energy and analytic forces are implemented.

Two flavors of the correction are implemented:

(1) The C6 coefficients and vdW radii are obtained directly from Hirshfeld partitioning of the DFT electron density. This scheme only requires a single damping parameter, which is fitted to binding energies of small organic molecules and hardwired in the code for PBE, PBE0, revPBE, AM05, BLYP and B3LYP functionals. For more information and citation see Ref. [295]. Both cluster and periodic cases are implemented.

(2) The empirical C6 coefficients and vdW radii must be specified directly. This scheme is coded for maintaining compatibility with empirical C6 approaches. In actual applications, the usage of scheme (1) is advised, since it is significantly more accurate and less empirical.

Tags for general section of control.in:

 

Tag: vdw_convergence_threshold(control.in)

Usage: vdw_convergence_threshold value
Purpose: When using the vdW correction based on Hirshfeld partitioning of the electron density (as described in Tkatchenko and Scheffler 2009, Ref. [295]) in a periodic system, this sets the energy convergence threshold for the supercell sum over the TS components.
value: A small positive number (in eV). Default: For unit cells with less than 100 atoms: 10-6 eV. For structures with unit cell sizes above 100 atoms, the default is adjusted to natoms108 eV.

Note that the vdw part of the forces may be separately converged to (if set) sc_accuracy_forces.

 

Tag: vdw_correction_hirshfeld(control.in)

Usage: vdw_correction_hirshfeld
Purpose: Enables the vdW correction based on Hirshfeld partitioning of the electron density (as described in Tkatchenko and Scheffler 2009, Ref. [295]). If this keyword is set in a periodic calculation, the sum over atom pairs is done over successively larger supercells, until the energy is converged to the level set by sc_accuracy_etot or vdw_convergence_threshold and the forces (if requested) are converged to within sc_accuracy_forces.
No other input required.

This method is commonly referred to as the Tkatchenko-Scheffler method. The procedure is as follows. First, the normal self-consistency cycle is completed for a semilocal or hybrid density functional, most commonly PBE or PBE0. Second, the resulting self-consistent electron density is used to create interatomic (pairwise) C6 coefficients. A simple pairwise van der Waals term is then added once to the self-consistent total energy from the preceding semilocal or hybrid functional. In other words, the Tkatchenko-Scheffler method is normally employed as a post-processing term in a non-self-consistent way, not during the self-consistency cycle. Since it needs to be combined with a different density functional, you would normally use it like this (example for “PBE+vdW”):

  xc pbe
  vdw_correction_hirshfeld

Three more caveats: (1) Do not use this method together with the local-density approximation (LDA) unless you know exactly what you are doing. The LDA already contains a spurious interaction term that will lead to very strange results if added to a pairwise van der Waals term. (2) Do not simply apply this method to a metallic system unless you know what you are doing. (3) This is also not the (very different) functional commonly known as the Langreth-Lundqvist or vdw-DF functional. [76] FHI-aims contains at least two implementations of vdw-DF for those who are interested, but either implementation is much slower than the Tkatchenko-Scheffler pairwise interatomic sum.

 

Tag: vdw_correction_hirshfeld_sc(control.in)

Usage: vdw_correction_hirshfeld_sc
Purpose: Enables the self-consistent version of the vdW correction based on Hirshfeld partitioning of the electron density (see Tkatchenko and Scheffler 2009, Ref. [295]). In a periodic calculation, the energy is converged with the same criteria of the a posteriori approach: vdw_correction_hirshfeld.

This flag adds the Tkatchenko-Scheffler vdW functional as a part of the given exchange-correlation (XC) functional. In a self-consistent scheme, the contribution of the vdW potential, vvdW[n(𝐫)]=δEvdW[n(𝐫)]/δn(𝐫), is added to the XC potential to form the total effective potential in the Kohn-Sham equations. As a result, the van der Waals interatomic contributions affect the total electron density and are computed at each self-consistent cycle, until convergence is reached. In this way, it is possible to evaluate the effects of vdW interactions on the electron density and electronic properties, going beyond the vdW a posteriori correction of the total DFT energy.

Note: Do not use this self-consistent flag during a relaxation. The self-consistent forces are not implemented (yet) for the Tkatchenko-Scheffler vdW functional and this will lead to inconsistency errors.

 

Tag: vdw_ts(control.in)

Usage: vdw_ts [option=value…]

Alternative implementation of the TS method via the Libmbd library [138] that provides some extra features compared to the vdw_correction_hirshfeld and vdw_correction_hirshfeld_sc implementations. The main difference is the use of the Ewald summation to sum the 1/R6 sum in the periodic case, which makes the use of the vdw_convergence_threshold keyword obsolete. Furthermore, forces and stress are available also in the self-consistent case. This implementation does not honor the vdw_pair_ignore and hirshfeld_param keywords.

  • self_consistent=<logical> [default: .false.] turns on self-consistency as explained under vdw_correction_hirshfeld_sc.

  • vdw_params_kind=<string> [default: "ts"] specifies the set of free-atom vdW parameters (α0, C6, RvdW) used. "ts" uses the original set of parameters, "tssurf" uses values from the so-called vdWsurf approach [267] for some of the elements. The used parameters are listed here.

 

Tag: vdw_correction(control.in)

Usage: vdw_correction
Purpose: Enables the empirical C6/R6 correction with the C6 coefficients and vdW radii specified by the user.

The user needs to specify the interaction parameters for all atomic pairs in the system (i.e. for CNOH, there are 10 atomic pairs). This is done by putting “vdw_pairs N”, where N is the number of pairs. This should be followed by N lines of “vdw_coeff atomi atomj C6ij Rij0 d”, where C6ij is the C6 coefficient for the interaction between atomi and atomj, Rij0 is the corresponding vdW radius and d is the damping function parameter. A choice d=20 is suggested for all atomic pairs. An example for C-C interaction is: “vdw_coeff C C 30.00 5.59 20.0”.

 

Tag: vdw_pair_ignore(control.in)

Usage: vdw_pair_ignore species1 species2
Purpose: excludes the interaction between species1 and species2 from any C6-correction, eg. such that metallic slabs are not affected internally by introducing C6-interactions. Does not apply to the vdw_ts keyword.

Subtags for species tag in control.in:

 

species sub-tag: hirshfeld_param(control.in)

Usage: hirshfeld_param C6 alpha R0
Default: the values outlined in Ref. [295]
Purpose: To explicitly allow setting the parameters for the Tkatchenko-Scheffler van der Waals correction. Does not apply to the vdw_ts keyword.