# Density Functional (XC)¶

The starting point for the XC functional is usually the result for the homogeneous electron gas, after which the so called non-local or generalized gradient approximation (GGA) can be added.

## XC functionals¶

The density functional approximation is controlled by the XC key.

Three classes of XC functionals are supported: LDA, GGA, meta-GGA, and range-separated hybrid functionals. There is also the option to add an empirical dispersion correction. The only ingredient of the LDA energy density is the (local) density, the GGA depends additionally on the gradient of the density, and the meta-GGA has an extra dependency on the kinetic energy density. The range-separated hybrids are explained below in the section Range-Separated Hybrids.

In principle you may specify different functionals to be used for the *potential,* which determines the self-consistent charge density, and for the *energy* expression that is used to evaluate the (XC part of the) energy of the charge density. The *energy* functional is used for the nuclear gradients (geometry optimization), too. To be consistent, one should generally apply the same functional to evaluate the potential and energy respectively. Two reasons, however, may lead one to do otherwise:

- The evaluation of the GGA part (especially for meta-GGAs) in the
*potential*is rather time-consuming. The effect of the GGA term in the potential on the self-consistent charge density is often not very large. From the point of view of computational efficiency it may, therefore, be attractive to solve the SCF equations at the LDA level (i.e. not including GGA terms in the potential), and to apply the full expression, including GGA terms, to the energy evaluation*a posteriori*: post-SCF. - A particular XC functional may have only an implementation for the potential, but not for the energy (or vice versa). This is a rather special case, intended primarily for fundamental research of Density Functional Theory, rather than for run-of-the-mill production runs.

All subkeys of `XC`

are optional and may occur twice in the data block: if one wants to specify different functionals for potential and energy evaluations respectively, see above.

```
XC
{LDA {Apply} LDA {Stoll}}
{GGA {Apply} GGA}
{DiracGGA GGA}
{MetaGGA {Apply} GGA}
{Dispersion {s6scaling} {RSCALE=r0scaling} {Grimme3} {BJDAMP} {PAR1=par1} {PAR2=par2} {PAR3=par3} {PAR4=par4}}
{Model [LB94|TB-mBJ|KTB-mBJ|JTS-MTB-MBJ|GLLB-SC|BGLLB-VWN|BGLLB-LYP]}
{SpinOrbitMagnetization [None|NonCollinear|CollinearX|CollinearY|CollinearZ]}
{LibXC {Functional}}
End
```

The common use is to specify either an LDA or a (meta)GGA line. (Technically it is possible to have an LDA line *and* a GGA line, in which case the LDA part of the GGA functional (if applicable) is replaced by what is specified by the LDA line.)

`Apply`

- States whether the functional defined on the pertaining line will be used self-consistently (in the SCF-potential), or only post-SCF, i.e. to evaluate the XC energy corresponding to the charge density. The value of apply must be
**SCF**or**POSTSCF**. (**default=SCF**)

### LDA/GGA/metaGGA¶

`LDA`

Defines the LDA part of the XC functional and can be any of the following:

**Xonly**: The pure-exchange electron gas formula. Technically this is identical to the Xalpha form with a value 2/3 for the X-alpha parameter.**Xalpha**: the scaled (parameterized) exchange-only formula. When this option is used you may (optionally) specify the X-alpha*parameter*by typing a numerical value after the string Xalpha (**Default: 0.7**).**VWN**: the parameterization of electron gas data given by Vosko, Wilk and Nusair (ref [1], formula version V). Among the available LDA options this is the more advanced one, including correlation effects to a fair extent.**Stoll**: For the VWN or GL variety of the LDA form you may include Stoll’s correction [2] by typing Stoll on the same line, after the main LDA specification. You must not use Stoll’s correction in combination with the Xonly or the Xalpha form for the Local Density functional.

`GGA`

Specifies the GGA part of the XC Functional. It uses derivatives (gradients) of the charge density. Separate choices can be made for the GGA exchange correction and the GGA correlation correction respectively. Both specifications must be typed (if at all) on the same line, after the GGA subkey.

For the exchange part the options are:

**Becke**: the gradient correction proposed in 1988 by Becke [3]**PW86x**: the correction advocated in 1986 by Perdew-Wang [4]**PW91x**: the exchange correction proposed in 1991 by Perdew-Wang [5]**mPWx**: the modified PW91 exchange correction proposed in 1998 by Adamo-Barone [27]**PBEx**: the exchange correction proposed in 1996 by Perdew-Burke-Ernzerhof [12]**HTBSx**: the HTBS exchange functional [43]**RPBEx**: the revised PBE exchange correction proposed in 1999 by Hammer-Hansen-Norskov [13]**revPBEx**: the revised PBE exchange correction proposed in 1998 by Zhang-Yang [28]**mPBEx**: the modified PBE exchange correction proposed in 2002 by Adamo-Barone [29]**OPTX**: the OPTX exchange correction proposed in 2001 by Handy-Cohen [30]

For the correlation part the options are:

**Perdew**: the correlation term presented in 1986 by Perdew [6]**PBEc**: the correlation term presented in 1996 by Perdew-Burke-Ernzerhof [12]**PW91c**: the correlation correction of Perdew-Wang (1991), see [5], [8], [9]**LYP**: the Lee-Yang-Parr 1988 correlation correction [7]

Some GGA options define the exchange and correlation parts in one stroke. These are:

**BP86**: this is equivalent to**Becke**+**Perdew**together**PW91**: this is equivalent to**pw91x**+**pw91c**together**mPW**: this is equivalent to**mPWx**+**pw91c**together**PBE**: this is equivalent to**PBEx**+**PBEc**together**HTBS**: this is equivalent to**HTBSx**+**PBEc**together**RPBE**: this is equivalent to**RPBEx**+**PBEc**together**revPBE**: this is equivalent to**revPBEx**+**PBEc**together**mPBE**: this is equivalent to**mPBEx**+**PBEc**together**BLYP**: this is equivalent to**Becke**(exchange) +**LYP**(correlation)**OLYP**: this is equivalent to**OPTX**(exchange) +**LYP**(correlation)**OPBE**: this is equivalent to**OPTX**(exchange) +**PBEc**(correlation) [31]

`DiracGGA`

(Expert option!) This key handles which XC functional is used during the Dirac calculations of the reference atoms. A string is expected which is not restricted to names of GGAs but can be LDA-like functionals, too.

**Note**: In some cases using a GGA functional leads to slow convergence of matrix elements of the kinetic energy operator w. r. t. the`Accuracy`

parameter. Then one can use the LDA potential for the calculation of the reference atom instead.

`MetaGGA`

Key to select the evaluation of a meta-GGA. A byproduct of this option is that the bonding energies of all known functionals are printed (using the same density). Meta-GGA calculations can be time consuming, especially when active during the SCF.

Self consistency of the meta-GGA is implemented as suggested by Neuman, Nobes, and Handy.[11]

The available functionals of this type are:

**TPSS**: The 2003 meta-GGA [15]**M06L**: The meta-GGA as developed by the Minesota group [16]**revTPSS**: The 2009 revised meta-GGA [26]

Note: For Meta-GGA XC functionals, it is recommended to use

`small`

or`none`

frozen core (the frozen orbitals are computed using LDA and not the selected Meta-GGA)

### Dispersion Correction¶

In BAND parameters for *Grimme3* and *Grimme3 BJDAMP* can be used according to version 3.1 (Rev. 1) of the coefficients, published on the Bonn website.

`DISPERSION Grimme3 BJDAMP {PAR1=par1 PAR2=par2 PAR3=par3 PAR4=par4}`

If this key is present a dispersion correction (DFT-D3-BJ) by Grimme [42] will be added to the total bonding energy, gradient and second derivatives, where applicable. Parametrizations are implemented e.g. for B3LYP, TPSS, BP86, BLYP, PBE, PBEsol [14] , and RPBE. It has four parameters. One can override these using

*PAR1=.. PAR2=..*, etc. In the table the relation is shown between the parameters and the real parameters in the dispersion correction.variable variable on Bonn website PAR1 s6 PAR2 a1 PAR3 s8 PAR4 a2 `DISPERSION Grimme3 {PAR1=par1 PAR2=par2 PAR3=par3}`

If this key is present a dispersion correction (DFT-D3) by Grimme [41] will be added to the total bonding energy, gradient and second derivatives, where applicable. Parametrizations are available e.g. for B3LYP, TPSS, BP86, BLYP, revPBE, PBE, PBEsol [14], and RPBE, and will be automatically set if one of these functionals is used. For all other functionals, PBE-D3 parameters are used as default. You can explicitly specify the three parameters.

variable variable on Bonn website PAR1 s6 PAR2 sr,6 PAR3 s8

`Dispersion {s6scaling RSCALE=r0scaling}`

- If the DISPERSION keyword is present a dispersion correction will be added to the total bonding energy, where applicable. By default the correction of Grimme is applied.[32] The term is added to the bonding energies of all printed functionals, here the LDA and a couple of GGAs are meant. The global scaling factor, with which the correction is added, depends on the XC functional used for SCF but it can be modified using the
*s6scaling*parameter. The following scaling factors are used (with the XC functional in parentheses): 1.20 (BLYP), 1.05 (BP), 0.75 (PBE), 1.05 (B3LYP). In all other cases a factor 1.0 is used unless modified via the s6scaling parameter. The van der Waals radii, used in this implementation, are hard-coded. However, it is possible to modify the global scaling parameter for them using the*RSCALE=r0scaling*argument. The default value is 1.1 as proposed by Grimme.[32]

### Model Potentials¶

`Model`

Some functionals give only a potential and have no energy expression. We call such functionals model potentials. In BAND the following model potentials are available:

- LB94
- With this model the asymptotically correct potential of van Leeuwen and Baerends is invoked.[10]
- TB-mBJ
This model potential can be used to correct for the band gap problem with GGAs for bulk systems.[44] This potential depends on a c-factor for which there is a density dependent automatic expression. However you can override the automatic value by specifying XC%TB_mBJCFactor cfac. In principle: the bigger the value the larger the gap.

**KTB-mBJ**/**JTS-mTB-mBJ**are variations of**TB-mBJ**. The formula for C contains three parameters: A,B, and E. The logic is as followspotential A B E TB-mBJ[44] -0.012 1.023 0.5 KTB-mBJ[54] 0.267 0.656 1.0 JTS-mTB-mBJ[55] 0.4 1.0 0.5 The three parameters (A,B, and E) can be user-defined set as follows:

XC Model TB_mBJ TB_mBJAFactor valA TB_mBJBFactor valB TB_mBJEFactor valE End

- GLLB-SC
- This functional uses a model for the exchange response potential (based on J. Krieger, Y. Li and G. Iafrate response potential [72]) from which the derivative discontinuity follows [49]. This is an accurate functional for band gap predictions and Electric Field Gradient calcualtions. It is also a fast method and a very good compromise between accuracy and computational cost. This functional is composed of the GLLB exchange response potential and the PBESOL exchange hole and the correlation potential [49].
- BGLLB-VWN
- This functional is a variation of the GLLB-SC functional using the B88 exchange hole potential and the VWN correlation potential. This functional gives good results for Group I-VII and II-VI semi conductors.
- BGLLB-LYP
- This functional is a variation of the GLLB-SC functional using the B88 exchange hole potential and the LYP correlation potential. This functional gives good results for large band gap insulators.

One can change the K parameter for the GLLB functionals with the `GLLBKParameter`

key:

```
XC
Model [GLLB-SC|BGLLB-VWN|BGLLB-LYP]
GLLBKParameter val
End
```

The default value is K=0.382 (value obtained from the electron gas model in the original publication).

### Non-Collinear Approach¶

`SpinOrbitMagnetization`

- (
**Default=CollinearZ**) Most XC functionals have as one ingredient the spin polarization. Normally the direction of the spin quantization axis is arbitrary and conveniently chosen to be the*z*-axis. However, in a spin-orbit calculation the direction matters, and it is arbitrary to put the z-component of the magnetization vector into the XC functional. It is also possible to plug the size of the magnetization vector into the XC functional. This is called the non-collinear approach. There is also the exotic option to choose the quantization axis along the*x*or*y*axis. To summarize, the value**NonCollinear**invokes the non-collinear method. The other three option**CollinearX**,**CollinearY**and**CollinearZ**causes either the x, y, or z component to be used as spin polarization for the XC functional.

### LibXC Library Integration¶

`LibXC functional`

LibXC is a library of approximate XC functionals, see Ref. [63]. The development version 3 of LibXC is used. See the LibXC website for the complete list of functionals: http://www.tddft.org/programs/Libxc.

The following functionals can be evaluated with LibXC (incomplete list):

**LDA:**LDA, PW92, TETER93**GGA:**AM05, BGCP, B97-GGA1, B97-K, BLYP, BP86, EDF1, GAM, HCTH-93, HCTH-120, HCTH-147, HCTH-407, HCTH-407P, HCTH-P14, PBEINT, HTBS, KT2, MOHLYP, MOHLYP2, MPBE, MPW, N12, OLYP, PBE, PBEINT, PBESOL, PW91, Q2D, SOGGA, SOGGA11, TH-FL, TH-FC, TH-FCFO, TH-FCO, TH1, TH2, TH3, TH4, VV10, XLYP, XPBE**MetaGGA:**B97M-V, M06-L, M11-L, MN12-L, MS0, MS1, MS2, MVS, PKZB, TPSS**Hybrids**(**only for non-periodic systems**): B1LYP, B1PW91, B1WC, B3LYP, B3LYP*, B3LYP5, B3LYP5, B3P86, B3PW91, B97, B97-1 B97-2, B97-3, BHANDH, BHANDHLYP, EDF2, MB3LYP-RC04, MPW1K, MPW1PW, MPW3LYP, MPW3PW, MPWLYP1M, O3LYP, OPBE, PBE0, PBE0-13, REVB3LYP, REVPBE, RPBE, SB98-1A, SB98-1B, SB98-1C, SB98-2A, SB98-2B, SB98-2C, SOGGA11-X, SSB, SSB-D, X3LYP**MetaHybrids**(**only for non-periodic systems**): B86B95, B88B95, BB1K, M05, M05-2X, M06, M06-2X, M06-HF, M08-HX, M08-SO, MPW1B95, MPWB1K, MS2H, MVSH, PW6B95, PW86B95, PWB6K, REVTPSSH, TPSSH, X1B95, XB1K**Range-separated**(**for periodic systems, only short range-separated functionals can be used**, see Range-separated hybrid functionals): CAM-B3LYP, CAMY-B3LYP, HJS-PBE, HJS-PBESOL, HJS-B97X, HSE03, HSE06, LRC_WPBE, LRC_WPBEH, LC-VV10, LCY-BLYP, LCY-PBE, M11, MN12-SX, N12-SX, TUNED-CAM-B3LYP, WB97, WB97X, WB97X-V

Example usage for the MVS functional:

XC LibXC MVS End

**Notes:****All electron basis sets should be used**(see`CORE NONE`

in section Basis set).- For periodic systems only short range-separated functionals can be used (see Range-separated hybrid functionals)
- In case of LibXC the output of the BAND calculation will give the reference for the used functional, see also the LibXC website http://www.tddft.org/programs/Libxc.
- Do not use any of the subkeys LDA, GGA, METAGGA, MODEL in combination with the subkey LIBXC.
- One can use the DISPERSION key icw LIBXC. For a selected number of functionals the optimized dispersion parameters will be used automatically, please check the output in that case.

### Range-separated hybrid functionals¶

Short range-separated hybrid functionals, like the **HSE03** functional [62], can be useful for prediction of more accurate band gaps compared to GGAs. These must be specified via the LibXC key

```
XC
LibXC functional {omega=value}
End
```

`functional`

- The functional to be used. (Incomplete) list of available functionals:
**HSE06**,**HSE03**,**HJS-B97X**,**HJS-PBE**and**HJS-PBESOL**(See the LibXC website for a complete list of available functionals). `omega`

*Optional*. You can optionally specify the switching parameter omega of the range-separated hybrid. Only possible for the**HSE03**and**HSE06**functionals (See [62]).

**Notes:**

- Hybrid functionals can only be used in combination with all-electron basis sets (see
`CORE NONE`

in section Basis set). - The Hartree-Fock exchange matrix is calculated through a procedure known as Resolution of the Identity (RI). See RIHartreeFock key.
- Regular hybrids (such as B3LYP) and long range-separated hybrids (such as CAM-B3LYP)
**cannot**be used in periodic boundary conditions calculations (they can only be used for non-periodic systems). - There is some confusion in the scientific literature about the value of the switching parameter \(\omega\) for the HSE functionals. In LibXC, and therefore in BAND, the HSE03 functional uses \(\omega=0.106066\) while the HSE06 functional uses \(\omega=0.11\).

**Usage example**:

```
XC
LibXC HSE06 omega=0.1
End
```

### Defaults and special cases¶

- If the
`XC`

key is not used, the program will apply only the Local Density Approximation (no GGA terms). The chosen LDA form is then VWN. - If only a GGA part is specified, omitting the
*LDA*subkey, the LDA part defaults to VWN, except when the LYP correlation correction is used: in that case the LDA default is Xonly: pure exchange. - The reason for this is that the LYP formulas assume the pure-exchange LDA form, while for instance the Perdew-86 correlation correction is a correction to a
*correlated*LDA form. The precise form of this correlated LDA form assumed in the Perdew-86 correlation correction is not available as an option in ADF but the VWN formulas are fairly close to it. - Be aware that typing only the subkey
*LDA*, without an argument, will activate the VWN form (also if LYP is specified in the GGA part).

## GGA+U¶

A special way to treat correlation is with so-called LDA+U, or GGA+U calculations. It is intended to solve the band gap problem of traditional DFT, the problem being an underestimation of band gaps for transition-metal complexes. A Hubbard like term is added to the normal Hamiltonian, to model on-site interactions. In its very simplest form it depends on only one parameter, U, and this is the way it has been implemented in BAND. The energy expression is equation (11) in the work of Cococcioni.[47] See also the review article [46].

```
HubbardU
Enabled [True | False]
LValue string
UValue string
PrintOccupations [True | False]
End
```

`HubbardU`

Type: Block Description: Options for Hubbard-corrected DFT calculations. `Enabled`

Type: Bool Default value: False Description: Whether or not to apply the Hubbard Hamiltonian `LValue`

Type: String Default value: Description: For each atom type specify the l value (0 - s orbitals, 1 - p orbitals, 2 - d orbitals). A negative value is interpreted as no l-value. `UValue`

Type: String Default value: Description: For each atom type specify the U value (in atomic units). A value of 0.0 is interpreted as no U. `PrintOccupations`

Type: Bool Default value: True Description: Whether or not to print the occupations during the SCF.

An example to apply LDA+U to the d-orbitals of NiO looks like:

```
...
Atoms
Ni 0.000 0.000 0.000
O 2.085 2.085 2.085
End
...
...
HubbardU
printOccupations true
Enabled true
uvalue 0.3 0.0
lvalue 2 -1
End
...
```

## OEP¶

(Expert options) When you are using a meta-GGA you are by default using a generalized Kohn-Sham method. However, it is possible to calculate a local potential, as is required for a strict Kohn-Sham calculation, via OEP, (see [67]).

The main options are controlled with the `MetaGGA`

subkey of the XC block if `OEP`

is present.

```
XC
[...]
MetaGGA GGA OEP {approximation} {Fit} {Potential}
[...]
End
```

`GGA`

- specifies the name of the used meta-GGA. In combination with OEP only
**PBE**,**TPSS**,**MVS**,**MS0**,**MS1**,**MS2**, and**SCAN**can be used! `approximation`

- (
**Default: KLI**) There are three flavors to approximate the OEP:**KLI**,**Slater**, and**ELP** `Fit`

- By adding the string
**Fit**on this line, one uses the fitted density instead of the exact density for the evaluation. `Potential`

- If not specified, only the tau-dependent part of the OEP is evaluated and used. By adding the string
**Potential**in addition the tau-independent part is added to the XC potential. (This is needed e.g. for plotting the ‘vxc’)

With the following subkeys of the `XC`

blockkey you have extra control over the iterative OEP evaluation:

`MGGAOEPMaxIter`

- (
**Default: 30**) defines the maximum number of cycles for the iterative OEP evaluation. `MGGAOEPConvergence`

- (
**Default: 1E-6**) defines convergence criterion for OEP evaluation. `MGGAOEPWaitIter`

- (
**Default: 0**) defines the number of SCF cycles with the regular meta-GGA before switching to the OEP scheme. `MGGAOEPMaxAbortIter`

- (
**Default: 0**) defines number of cycles for which the error is allowed to increase before the calculation is aborted. Here, zero means: do never abort. `MGGAOEPMaxErrorIncrease`

- (
**Default: 0.0**) defines the maximum rate of increasing error before the calculation is aborted. Here, zero means: do never abort.

An example for an OEP metaGGA calculation

```
XC
MetaGGA MVS OEP
End
```

Note that a very fine Becke grid is needed.

```
BeckeGrid
Quality USER
UserRadMulFactor 20.0
UserCoreL 11
UserInter1L 13
UserInter2L 21
UserExterL 31
UserExterLBoost 35
End
```

Note also: the gaps are typically not closer to experiment, and the calculations are more expensive. This option is mainly about academic interest.