van der Waals corrections

This page gives a description of how to invoke and manipulate C6-based vdW corrections, The vdw_potential is invoked in the setup phase of the input, and then later in that section can be reconfigured. The code implements two different C6-based vdW corrections, which the user should cite according to which is selected:

  • DFT-D2 vdW correction due to: Stefan Grimme, J. Comput. Chem. 27, 1787 (2006).
  • ULG vdW correction due to: H. Kim, J.M. Choi, W.A. Goddard III, J. Phys. Chem. Lett. 3, 360 (2012).

Selection of one of these using the vdw_potential in the setup phase automatically invokes the published C6 parameters in the calculation, provided that the atom types in the input are properly identified (ie., the code can parse the elements name). The code also enables the user to manipulate these parameters, to set values for missing elements types (e.g., D2 parameters stop at Xe), or to modify the literature-provided C6-correction values to their needs, through the input file.

Important notes:

  • The default units for the vdW input is RYDBERG ATOMIC UNITS (Rydberg and Bohr).
    – Apologies, but had to make a choice, and it was simply easier to implement that way.
    • Angstrom to bohr: 1.8897265
    • Grimme C6 parameters, J/mol to Ry: 0.76176 x 10-6
    • ULG, Kim et al. C6 parameters, kcal/mol to Ry: 0.0031864
  • The range cutoff for the C6-interaction is also limited by an interaction distance which determined by the interaction of the atomic basis sets (typically ~10 A). Longer-range C6 interactions than these are discarded, but are presumably neglibible at that point.

Current requirements for use of the vdW C6-corrections (as of version 2.65):

  • The vdw_potential must be specified in the setup phase
  • The vdW correction can be used with any functional, BUT:
    NB: the C6-based parameters are specifically tuned for PBE in the literature and in this implementation.
  • Element symbols MUST be used as atom type aliases in the description of the atomic positions.
    This is needed so that the code can associate the correct element parameters with the correct atom type.
  • Any data must be in RYDBERG ATOMIC UNITS (Rydberg and Bohr).

Input options

The input of vdW parameters is in three sections:
first, a global control section (within which the keywords must come in a strict order);
second, an atomic parameter input section (with which one modifies 1-atom vdW parameters, in any order); third, a pairwise parameter input section (with which one modifies pairwise parameters, in any order).
One could, in principle, use this input section to reconfigure the entire parameter set for a vdW calculation. However, the form is limited to a single C6-correction method (D2, or ULG, but not mixed) in a calculation.

vdw_data - the section MUST begin with this keyword [vdwff] - C6-correction type for this input, to check consistency with QM input      vdwtype - vdwtype MUST be "DFT-D2" or "ULG" (contrast to setup phase input) [sfactor] - override default scaling factor for vdW correction      sfactor - functional-dependent scaling factor, shound be: 0 < sfactor < 1 [dfactor] - override default damping function parameter      dfactor - vdW-method-dependent parameter for damping 1/R6 divergence [rcutoff] - override default range cutoff for C6-interactions      rcutoff - range (in Bohr) beyond which to ignore vdW corrections
[vdw_coefficients] - keyword required to input atomic C6-parameters      - read in sequence of atomic vdW paramaters, any nunber of, in any order ... [[atomc6|c6atom]] - enter atomic C6 energy parameter      type_alias c6_type - atom type alias, and c6 energy parameter (Ry) [[atomr0|r0atom]] - enter atomic R0 range parameter      type_alias r0_type - atom type alias, and r0 value (Angstrom) [[atomff|ffatom]] - enter both atomic vdW parameters, the c6 value and the range      type_alias c6_type r0_type - as above ...
[vdw_2c] - keyword required to input pair-wise C6-parameters (ends atomic input)      - read in sequence of pairwise vdW interations, any number of, and in any order ... [[pairc6|c6pair]] - enter the pairwise C6 value      typ1_alias typ2_alias c6_pair - as above [[pairff|ffpair]] - enter both atomic vdW parameters, the range and C6 value      typ1_alias typ2_alias c6_pair r0_pair - as above [[zeroff|ffzero]] - turn off vdW interaction between specified atom types      typ1_alias typ2_alias...
end_vdw - required, to specify end of input of vdw parameters

Details

This section allows to modify/set the atomic parameters (if the literature values are not desired, or if the value is not provided in literature), and also to modify interaction parameters. The DFT-D2 and ULG methods have specified dfferent means to evaluate atomic pair cross terms, and the code uses their published procedure to construct a default vdW specification. However, if the user modifies the atomic parameters, these input values will be used instead to recompute a new default pair interation. This is why all the atomic parameters must be input before any pairwise parameters in this section. After the atomic parameters are finalized, the user can then modify the pair-interaction parameters (or turn the pair C6-interaction off entirely).

Example

The following illustrates how to invoke and manipulate the ULG C6-corrections, with just the relevant excerpts from a full input file. Examine the setup phase section to identify where in the setup phase these appear.

  ... functional  PBE vdw_potential  ULG   ... atom file   Ni = Ni_p0.atm atom file    C = C_long.atm   ... vdw_data vdwff  ULG vdw_coefficients atomc6   Ni  60.0 vdw_2c zeroff - just keeping the Ni-C pair, turning off Ni-Ni   Ni  Ni end_vdw  ... 

One component is necessary to invoke the C6-corrections: that one selects the PBE functional and then uses the vdw_potential keyword to specify which form of C6-correction to use. In this example, the ULG of Kim and Goddard is specified. In the vdw_data section that appears later in the setup, one can manipulate the correction, and potentially override the default parameters of the specified approach. The first part after the vdw_coefficients keyword uses the atomc6 keyword to modify the Ni atomic C6 energy parameter, setting it to 60.0 Rydberg. The second part after the vdw_2c keyword modifies the final mixed pair potentials, here using the zeroff keyword to turn off the correction for Ni-Ni atom pairs. Note that the name "Ni" is taken from the aliases used to define the atoms earlier in the setup where the atom files are specified, i.e. Ni = Ni_p0.atm defines the atom "Ni" as being associated with the data in the atom file "Ni_p0.atm". This entire vdw_data section is optional, if it does not appear, the code will use the internal default values.

Troubleshooting

Not much can go wrong inexplicably. The input parser will tell you if the syntax is wrong, and how. Later, the code will echo what it is using for the vdW correction, so you can see what happened. The only real challenge is ensuring the units are converted crrectly.Having trouble getting units right?Before attempting to specify a modified parameter set, attempt a test benchmark with this vdW configuration section to input the literature values, with the conversion factors installed. If correctly input, the manually-configured run should give the same results as a default vdW run (which uses internal tables populated from literature).