3.22 / 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 / term for the interaction energy between two atoms. Both energy and analytic forces are implemented.
Two flavors of the correction are implemented:
(1) The 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. [311]. Both cluster and periodic cases are implemented.
(2) The empirical coefficients and vdW radii must be specified directly. This scheme is coded for maintaining compatibility with empirical 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. [311]) 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
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. [311]). 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) 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. [81] 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. [311]). 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, , 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_correction_hirshfeld_alkali(control.in)
Usage: vdw_correction_hirshfeld_alkali
Purpose: Enables the version of the vdW correction based on Hirshfeld partitioning of the electron density (see Tkatchenko and Scheffler 2009, Ref. [311])
with the updated vdW radii for alkali metal atoms as given in Ref. [96]
and as benchmarked in Ref. [286].
The vdW radii for the alkali Cs, Rb, K, Na (and Li) in the original Tkatchenko-Scheffler method, vdw_correction_hirshfeld, are too low and drastically overbind these elements. This has been shown for Cs in Ref. [175] (see Figures S7 and S8 in the supporting information of that reference). The vdw_correction_hirshfeld_alkali parameterization is now the default for alkali species, and the code will stop when the original version is requested for a structure containing alkali atoms. A broader benchmark is provided in Ref. [286]. The original version is still available for comparison when the override_vdw_correction_hirshfeld_alkali keyword is set.
Importantly, vdw_correction_hirshfeld_alkali leaves the parameters for all other elements unchanged compared to the original (2009) Tkatchenko-Scheffler method, i.e., it is fully compatible with any other non-alkali containing calculations based on the Tkatchenko-Scheffler method.
Tag: override_vdw_correction_hirshfeld_alkali(control.in)
Usage: override_vdw_correction_hirshfeld_alkali
Purpose: Overrides the default behavior and allows the use of the original vdW correction for alkali species.
Tag: vdw_correction_hirshfeld_AP2018(control.in)
Usage: vdw_correction_hirshfeld_AP2018
Purpose: An updated version of the vdW correction based on
Hirshfeld partitioning of the electron density (see Tkatchenko and
Scheffler 2009, Ref. [311]). Van der Waals radii are updated
for all atoms, using the values derived in Ref. [96]
and benchmarked in Ref. [286].
This keyword applies updated vdW radii and interatomic van der Waals distances
for all elements to the original Tkatchenko-Scheffler method,
vdw_correction_hirshfeld. Unlike the keyword
vdw_correction_hirshfeld_alkali, the
vdw_correction_hirshfeld_AP2018 approach will also
change total energies and forces for other, non-alkali containing
compounds.
The approach is benchmarked and described in full in Ref. [286].
Alternative implementation of the Tkatchenko-Scheffler (TS) dispersion energy term [311] via the Libmbd library [146] that provides some extra features compared to the vdw_correction_hirshfeld and vdw_correction_hirshfeld_sc implementations.
Note that this keyword requires the options listed below on the same line and as key=value pairs, e.g.
-
•
vdw_ts
(default settings) -
•
vdw_ts vdw_params_kind="ts"
(default, but stated explicitly) -
•
vdw_ts vdw_params_kind="tssurf"
(uses the parameters associated with the vdW approach [281])
See below for definitions of all options. Multiple concurrent options should be specified on the same single line.
The main difference to vdw_correction_hirshfeld and vdw_correction_hirshfeld_sc is the use of the Ewald summation to sum the 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.
- •
Tag: vdw_correction(control.in)
Usage: vdw_correction
Purpose: Enables the empirical / correction with the 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 ”, where is the number of pairs. This should be followed by lines of “vdw_coeff atomi atomj ”, where is the coefficient for the interaction between atomi and atomj, is the corresponding vdW radius and is the damping function parameter. A choice =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. [311]
Purpose: To explicitly allow setting the parameters for the Tkatchenko-Scheffler van der Waals correction.
Does not apply to the vdw_ts keyword.