3.3 Electronic structure: Exchange, correlation (incl. DFT+U), and excited states

A key choice required in every electronic structure calculation is the treatment of the required electronic structure: Exchange, correlation, and potentially quasiparticle energies, e.g., after a GW correction.

We here summarize the general options available regarding the choice of the electronic structure method. In addition, an important question is which electrons in the structure are treated at which level. For most practical purposes, FHI-aims treats all electrons in an equivalent way, but for some special cases, frozen-core treatments may be useful: at present, one may compute the correlation energy of only the valence but not the core electrons in second-order Møller-Plessett (MP2) perturbation theory.

For any method requiring the two-electron Coulomb operator explicitly (these include hybrid functionals, Hartree-Fock, MP2 or RPA perturbation theory, GW corrections, etc.) we note that an auxiliary basis is required to expand the Coulomb matrix (four basis functions O(N4) matrix elements) into a two-center Coulomb matrix, leading instead to O(N3) additional overlap matrix elements. The choice of this auxiliary basis (“product basis”) is described in more detail in Sec. 3.25 and Ref. [257].

A note on “post-s.c.f” RPA-based methods

The algorithms for post-DFT methodologies as implemented in FHI-aims are detailed in Ref. [257]. Here we only briefly recapitulate the key ingredients behind the increasingly popular “RPA and beyond” methods as implemented in FHI-aims. The standard RPA total energy is computed as follows:

EtotRPA=EtotDFTExcDFT+ExEX+EcRPA. (3.2)

EtotDFT is a pre-computed self-consistent DFT total energy obtained from LDA, GGA, or hybrid functional calculations. ExcDFT is the corresponding exchange-correlation contribution. ExEX and EcRPA are the exact-exchange energy, and the RPA non-local correlation evaluated using the pre-determined Kohn-Sham or generalized Kohn-Sham eigenorbitals and eigenenergies.

Recently, several correction schemes to RPA have been proposed. FHI-aims currently provides the (renormalized) single excitation (SE) correction [259] and the second-order screened exchange (SOSEX) correction [118]. The renormalized SE (rSE) and SOSEX corrections can be combined. The combined scheme is called “renormalized 2nd-order perturbation theory” (rPT2) [258],

EtotrPT2=EtotRPA+EcSOSEX+EcrSE. (3.3)

The “RPA+SE”, “RPA+rSE”, and “RPA+SOSEX” total energies can be computed similarly by combining the corresponding terms.

A note on “DFT plus U”

In the DFT method with local or semi-local approximations of the XC-functional, (LDA, GGA, etc.) strongly correlated systems like transition metal oxides are poorly described. The “DFT plus U” method offers an ad hoc correction for strongly correlated systems at negligible computation cost [12].

The present implementation of “DFT plus U” in FHI-aims should be considered experimental, and is not complete in some respects. Please keep this in mind when using the method. That said, it should give physically sensible results. Simply take some care when using it, and please give us feedback if the method works for you (obviously, also if it does not for some reason).

  • DFT+U total energies can be obtained in combination with any functional (typically LDA or GGA), by simply adding appropriate plus_u tags to the corresponding species.

  • Total energy gradients (“forces”) are not provided.

  • The implementation does not yet offer self-consistent determination of the U parameter, so this needs to be supplied by hand.

  • Finally, the orbitals on which we project are the somewhat extended free-atom like orbitals, defined with the usual cutoff potential of the remaining calculation. While somewhat arbitrary, it would be useful to be able to project onto more localized orbitals, but this option is not implemented yet.

Tags for general section of control.in:

 

Tag: cut_coulomb_short_range(control.in)

Usage: cut_coulomb_short_range flag
Purpose: Applies the cut-Coulomb operator to the short-range Coulomb potential used for the HF exchange. The keyword can be used for any screened or range-separated hybrid functional. This keyword helps to keep the results reasonably converged for sparse k-grids. However, when analytical stress is computed, the stress tensor term related to the cut-Coulomb operator is currently not implemented.
Default: .true. for any range-separated hybrid or exx_lr_approximation. Otherwise: .false.

 

Tag: exx_lr_approximation(control.in)

Usage: exx_lr_approximation omega
Purpose: Approximates the long-range Coulomb potential in exact exchange calculations, e.g., needed for hybrid density functionals, to reduce computational overhead (runtime and memory). Instead of using the bare long-range Coulomb potential a first-order Taylor expansion of the HSE screening function is used. The resulting extended screening function has a similar spatial extend as the HSE screening function. See more details in Ref. [174].
omega is the screening parameter of the HSE screening function. A value with good cost-accuracy ration seem to be ω=0.11 Bohr-1, but requires further testing. The unit of omega needs to be specified via hse_unit. For range-separated hybrid functionals, omega is overwritten by the corresponding range-separation parameter.

 

Tag: frozen_core(control.in)

Usage: frozen_core first_orbital
Purpose: Allows to compute the MP2 correlation energy without the contribution arising from low-lying occupied orbitals.
first_orbital is the integer number of the first molecular orbital that is included in the computation of the MP2 correlation energy.

This keyword applies only to the calculation of the MP2 correlation energy (if requested). It does not imply a frozen-core treatment anywhere else.

In a nutshell, this is a simple way to exclude the large contribution from certain core electrons to the MP2 correlation energy. This contribution is mostly systematic, and therefore tends to cancel in energy differences. However, it is also the hardest to compute unless specialized basis sets are invoked that “know” about core correlation; it may thus be the source of a large systematic error that also cancels if excluded from the beginning. For consistency between different calculations, the number of excluded “core” orbitals must be readjusted between calculations with different numbers of atoms.

 

Tag: frozen_core_postscf(control.in)

Usage: frozen_core_postscf valence_shell_number
Purpose: Alternative way to specify the valence shells in the frozen-core algorithm for MP2, RPA and rPT2 methods. This keyword is valid for elements from H (1) to Rn (86).
valence_shell_number is the number of valence shells which are taken into account in the frozen-core MP2, RPA or rPT2 calculations.

Compared to the keyword frozen_core, frozen_core_postscf is more friendly, especially for large systems, as you don’t need to count by hand which is the first valence orbital in the frozen-core algorithm.

For example, valence_shell_number=2 means that at most two outer shells are taken as valence shells in the frozen-core calculations:

element core shells valence shells
H, He 1s
Li-Ne 1s2s2p
Na-Ar 1s 2s2p3s3p
K-Kr 1s2s2p 3s3p3d4s4p

 

Tag: hybrid_xc_coeff(control.in)

Usage: hybrid_xc_coeff value
Purpose: If set, will modify the (Hartree-Fock) exact exchange mixing parameter in a given hybrid XC functional. No effect if specified with a simple LDA / GGA type functional.
value is a real number (usually between zero and one) that specifies the degree of exact exchange admixture.

If (and only if) a hybrid functional is specified using the xc keyword, hybrid_xc_coeff allows to change the Hartree-Fock mixing parameter to a different, given value. For example, the mixing parameter in pbe0 could be specified away from its literature value, α=0.25. No effect for xc functionals that do not have any Hartree-Fock exchange admixed in the first place.

Obviously, this option is only useful for test purposes and does change the definition of any functional away from its literature value. Handle with care.

 

Tag: hse_unit(control.in)

Usage: hse_unit character
Purpose: Required clarification of units for the hse06 xc functional.
value is a character, either ’a’ or ’A’ (for Å-1) or ’b’ or ’B’ (for [bohr radius]-1).

The hse06 functional comes with a screening parameter ω which must be specified explicitly (see the xc keyword for a detailed explanation). Unfortunately, different codes and authors appear to have adopted different conventions for ω – either Å-1 or [bohr radius]-1. To avoid any possible confusion when using HSE06 in FHI-aims, we therefore only run hse06 if the unit has been explicitly specified, using the above keyword. We apologize for the inconvenience, but the risk of an innocent misunderstanding is rather high in the present case.

 

Tag: lc_dielectric_constant(control.in)

Usage: lc_dielectric_constant value
Purpose: If set, will modify the amount of exact exchange in the hybrid XC functional LC-ωPBEh.

value is a real number (larger or equal to one) that specifies the degree of exact exchange admixture in the long-range part. default=1.0

 

Tag: plus_u_petukhov_mixing(control.in)

Usage: plus_u_petukhov_mixing mixing_factor
Purpose: Experimental—only for DFT+U. Allows to fix the mixing factor between AMF and FLL contribution of the double counting correction [248].
mixing_factor is a floating point value, specifying the mixing ratio between 0.0 and 1.0. A value of 0.0 selects the Around Mean Field (AMF) contribution. A value of 1.0 selects the Fully Localized Limit (FLL). If unspecified, the value is determined self-consistently according to Ref. [248].

There are two common schemes for dealing with the double counting problem in DFT+U: The AMF method assumes that the effect of the DFT+U term on the actual occupations remains small, so that the occupations can be assumed to be equal within each shell for the purpose of the double counting correction. The FLL method, on the other hand, assums a maximal effect of the DFT+U term on the occupation numbers, handling double counting correctly in the case that all orbitals with in the shell are either fully occupied or empty. The self consistent mixing of both limits improves the handling of the intermediate range (see Ref. [248]).

 

Tag: qpe_calc(control.in)

Usage: qpe_calc selfenergy-type
Purpose: If set, specifies which self-energy should be used for a quasiparticle correction of single-particle eigenvalues.
selfenergy-type is a keyword (string) which specifies the selfenergy approximation used.

Note that quasiparticle corrections (GW, MP2) are currently possible only for cluster geometries (no periodic boundary conditions).

After the normal self-consistency cycle for a given exchange-correlation functional (set using the xc keyword) is complete, qpe_calc can be used to specify a perturbative quasiparticle correction to be applied as a post-processing step. Valid self-energy options selfenergy-type are:

  • gw : Perturbative G0W0-type self-energy, where both the Green’s function G0 and the screened Coulomb interaction W0 are computed only once, based on the self-consistent DFT or Hartree-Fock ground state eigenvalues and eigenfunctions.

  • ev_scgw Perturbative G0W0-type self-energy, where self-energy is evaluated with partial self-consistency in the eigenvalues. The eigenvalues are iterated in G and W. Molecular orbitals are kept unchanged from the preliminary calculation. This scheme is often abbreviated as evGW in literature. For true self-consistent GW, see the sc_self_energy further below.

  • ev_scgw0 Perturbative G0W0-type self-energy, where self-energy is evaluated with partial self-consistency in the eigenvalues. The eigenvalues are iterated only in G, but not in W. Molecular orbitals are kept unchanged from the preliminary calculation as in ev_scgw. This scheme is often abbreviated as evGW0 in literature. For true self-consistent GW, see the sc_self_energy further below.

  • mp2 : Perturbative MP2-type self-energy, based on the self-consistent DFT or Hartree-Fock ground state eigenvalues and eigenfunctions.

For more details on different GW flavors (G0W0, partially and fully-selfconsistent schemes) see review article [107].

 

Tag: sc_self_energy(control.in)

Usage: sc_self_energy self-consistent-scheme
Purpose: If set, specifies the scheme adopted for the self-consistent calculation of the many-body self-energy.
selfenergy-type is a keyword (string) which specified the self-consistent approach used in the calculation.

Note that self-consistent GW calculation (sc-GW, sc-GW0) are currently possible only for cluster geometries (no periodic boundary conditions).

After the normal self-consistency cycle for a given exchange-correlation functional (set using the xc keyword) is complete, sc_self_energy can be used to specify a self-consistent scheme for the calculation of the GW self-energy. The output consists of the total energy calculated from the Galitskii-Migdal formula, an output file (spectrum_sc.dat for spin unpolarized, spectrum_sc_up.dat and spectrum_sc_do.dat for spin up and down respectively in the case of spin polarized calculation) containing the spectral function calculated from the self-consistent Green’s function. At the end of the calculation, the output include the dipole moment evaluated from the self-consistent density.

Currently implemented self-consistent methods are:

  • scgw : Calculate the Green’s function by solving until full self-consistency the Dyson’s equation by using a self-energy in the GW approximation.

  • scgw0 : Solve self-consistently the Dyson’s equation with the self-energy in the GW0 approximation. Differently from fully self-consistent GW, in this case the screened Coulomb interaction is kept fixed at the RPA level.

 

Tag: scgw_mix_param(control.in)

Usage: scgw_mix_param α
Purpose: Define the linear mixing coefficient α, for the mixing of the Green function at each iteration of the self-consistent GW calculation. This keyword only produces an effect if sc_self_energy is set.

 

Tag: scgw_it_limit(control.in)

Usage: scgw_it_limit N
Purpose: Set the maximum number N of iteration of the Dyson equation in a self-consistent GW calculation. The default value is set to N=30. This keyword only produces an effect if sc_self_energy is set.

 

Tag: scgw_print_all_spectrum(control.in)

Usage: scgw_print_all_spectrum
Purpose: Enables the print out of the spectral function each iteration of the self-consistent GW calculation. The spectrum is printed to the file sp_ImG<N>.dat, where <N> is number of iteration of the Dyson equation. This keyword only produces an effect if sc_self_energy is set.

 

Tag: rpa_along_ac_path(control.in)

Usage: rpa_along_ac_path rpa_along_ac_path_grid
Purpose: Calculate the RPA-approximated potentials along the adiabatic-connection path.
rpa_along_ac_path_grid is the number of potentials you want to sampling along the adiabatic-connection path.

The standard RPA method is a adiabatic-connection advanced DFT method, which integrates the contribution along the adiabatic-connection path analytically. This keyword rpa_along_ac_path allows you to unpack the adiabatic-connection path in the RPA approximation in detail.

 

Tag: printout_dft_components(control.in)

Usage: printout_dft_component given_dft_method
Purpose: Evaluate the XC contributions of a given DFT method based on SCF converged KS (or HF) orbitals.
given_dft_method is the name of the DFT method you want to investigate. At present, only two GGA methods (PBE and BLYP) are avaiable.

This keyword printout_dft_components is repeatable in the contril.in allowing to inspect several DFT methods in one task.

 

Tag: scs_mp2_parameters(control.in)

Usage: scs_mp2_parameters pT pS
Purpose: For MP2 correlation energies, allows to perform spin-component scaled MP2.
pT is the scaling parameter for the spin-up-spin-up (triplet) contribution.
pS is the scaling parameter for the spin-up-spin-down (singlet) contribution.

The MP2 correlation energy (total_energy_method mp2 or xc mp2) can be separated into a sum of triplet (spin-up-spin-up) and singlet (spin-up-spin-down) two-electron terms:

Ecorr,MP2=ET+ES. (3.4)

Grimme [115] pointed out that empirical scaling factors pT and pS can be introduced and fitted to improve the accuracy of MP2 results compared to quantum-chemical benchmark methods:

ESCS,MP2=pTET+pSES. (3.5)

For example, pT=1/3 and pS=6/5 are employed to obtain the reaction energies of Table I in Ref. [115].

 

Tag: total_energy_method(control.in)

Usage: total_energy_method type
Purpose: If set, specifies an exchange-correlation method for post-processing only, after the scf cycle is complete.
type is a keyword (string) which specifies the chosen post-processing exchange-correlation method.

After the regular scf cycle is complete for a given exchange-correlation method as given by the xc tag, the resulting Kohn-Sham orbitals and eigenvalues are used to recalculate only the exchange-correlation energy, and only once (i.e., perturbative post-processing).

All LDA, GGA and meta-GGA DFT functionals listed under xc can be used with total_energy_method, including those implemented through LibXC and dfauto; See the relevant section of xc options for more detail. Hybrid-DFT functionals are also available, with the exception of range-separated or long-range corrected approaches.

Other valid post-processing options type are:

  • C6_coef : Molecular C6 dispersion coefficients at the MP2 / RPA level will be calculated after the s.c.f. calculation. (This functionality is somewhat experimental, be sure to check for consistency.)

  • hf or HF: Calculate Hartree-Fock exchange on the given orbitals.

  • ll_vdwdf : The nonlocal part of correlation energy is calculated using the van der Waals density functional proposed by M. Dion et al. [76] and the total correlation energy will be re-evaluated as proposed in their paper. For details about additional Tags needed for the calculation, please visit Sec. 3.24. Note that an alternative implementation by the Helsinki group is available as well, the present keyword is not your only option.

  • mp2 : The correlation energy is calculated in second-order Møller-Plesset perturbation theory (MP2), with Hartree-Fock added for the exchange part. Note added in March 2016: A periodic implementation of MP2 is available but, at the time of writing, computationally extremely expensive. If you decide to use it, please keep in mind that the periodic version is included here as a matter of protocol but is not yet optimized to be fully usable in production calculations.

  • pbe_vdw, revpbe_vdw, or nlcorr : Evaluates the non-local van der Waals density functional (vdW-DF) proposed by M. Dion et al. [76] with the methodology of Sec. 3.24.2. (pbe_vdw uses PBE exchange, revpbe_vdw uses revpbe exchange, nlcorr calculates only the nonlocal correlation term.) Crucially, this is not the Tkatchenko-Scheffler correction [295] or any other simpler dispersion correction. If you are looking for Tkatchenko-Scheffler, please use the keyword vdw_correction_hirshfeld instead. In contrast, the present, non-local vdW-DF implementation will be very slow compared to any of the other dispersion corrections implemented in FHI-aims.

  • ppRPA : The full particle-particle RPA correlation energy will be calculated.

  • ppRPA_dir : The direct particle-particle RPA correlation energy will be calculated.

  • dppRPA+SOSEX : The SOSEX approximation to the direct particle-particle RPA correlation energy will be calculated. In case of any difficulty please contact "bundesha@gmail.com".

  • rpa : The RPA total energy as defined in Eq. (3.2) will be calculated. When this option is specified, the SE and rSE corrections to RPA are also evaluated. The total enegies computed with the RPA, RPA+SE, and RPA+rSE schemes are listed in items ‘‘RPA total energy’’, ‘‘PRA+SE total energy’’, and ‘‘RPA+rSE (full) total energy’’ respectively in the output file.

  • rpa+2ox : Just RPA plus second-order exchange (not screened). Likely only useful for testing / benchmarking, use rpt2 for completeness.

  • rpa+sosex : Just RPA plus second-order screened exchange. Likely only useful for testing / benchmarking, use rpt2 for completeness.

  • rpt2 : The rPT2 total energy as defined in Eq. (3.3) will be calculated. When this option is specified, the “RPA+SOSEX” total energy without the rSE correction will also be printed out in the output file.

  • xyg3 : “XYG3” double-hybrid functional[330], which is defined only for a self-consistent B3LYP reference, i.e., xc b3lyp is mandatory. Note that double-hybrid functionals include MP2 components. When using the tier basis sets, you must use a counterpoise correction of energy differences to get reliable results.

  • xdh-pbe0 : “xDH-PBE0” double-hybrid functional[326], which is defined only for a self-consistent PBE0 reference, i.e., xc pbe0 is mandatory. Note that double-hybrid functionals include MP2 components. When using the tier basis sets, you must use a counterpoise correction of energy differences to get reliable results.

  • lh_b86bpbe0_erfcor : Local hybrid functional that is under development. Do not use at this time. It does not yet produce converged numbers with standard basis sets.
    Syntax:
    xc lh_b86bpbe0_erfcor c

    EXC=EXGGA+σf(ρσ,ρσ)[εX,σHF(𝐫)εX,σGGA(𝐫)]𝑑𝐫+ECGGA (3.6)

    where:

    f(ρσ,ρσ)=erf(cρσεX,σGGA) (3.7)
    • GGA is b86bpbe0

    • c is a variable that can be fitted (usually 0.2)

  • lh_b86bpbe0_erfs : Local hybrid functional that is under development. Do not use at this time. It does not yet produce converged numbers with standard basis sets.
    Syntax:
    xc lh_b86bpbe0_erfs c

    EXC=EXGGA+σf(ρσ,ρσ)[εX,σHF(𝐫)εX,σGGA(𝐫)]𝑑𝐫+ECGGA (3.8)

    where:

    f(ρσ,ρσ)=erf(c|ρσ|ρσ43) (3.9)
    • GGA is b86bpbe0

    • c is a variable that can be fitted (usually 0.3)

Note that some of the correlation methods available here are only supported for cluster geometries at this time. Note also that when advanced correlation methods (e.g. rpa, rpt2, xyg3, xdh-pbe0 and mp2) are used for binding energy calculations, a counterpoise correction should always be performed with the default NAO basis sets in FHI-aims to get reliable results, since the basis set superposition error (BSSE) for these correlation methods is significant. For these advanced correlation methods, the sequence of NAO valence-correlation consistent basis sets (NAO-VCC-nZ[327]) is a better choice, which reduces the basis set incompleteness error, including BSSE, with increasing the basis size, and especially enables to approach the completeness-basis-set limit with the aid of extrapolation scheme.

 

Tag: use_2d_corr(control.in)

Usage: use_2d_corr bool
Purpose: Specifies whether to use the efficient 2D distribution of the MO based three index arrays where possible. Otherwise, stick to the old 1D distribution in all cases.
Default: .true.

 

Tag: xc(control.in)

Usage: xc xc-type [value]
Purpose: Specifies the exchange-correlation approach used for self-consistent DFT / Hartree-Fock. See also xc_pre.
Default: pw-lda
xc-type is a keyword (string) which specifies the chosen exchange-correlation functional.
value is a real parameter needed only for some functionals (e.g., hse06).

FHI-aims provides a wide range of current exchange-correlation options, ranging from local-density and generalized-gradient approximations (LDAs and GGAs) via hybrid functionals and Hartree-Fock to two-electron treatments of the correlated many-body system, such as second-order Møller-Plesset (MP2) theory and the random-phase approximation (RPA).

Implementations of exchange-correlation functionals are either available via the LibXC library [194] or, otherwise, as functionals that are implemented internally in FHI-aims in some form. Both options are covered below.

The following choices for the xc-type option are currently available:

  • A broad range of functionals is available through the LibXC library [194], of which v6.1.0 is distributed with FHI-aims at the time of writing. The implementation covers spin paired and polarised calculations for LDA, GGA and meta-GGA approaches (excluding those meta-GGAs on the laplacian of the density), as well as hybrid DFT, in equivalence to functionality with canonical functionals (energy, forces and stress).

    • The general syntax is
      xc libxc <name>
      where e<name> is using the LibXC nomenclature (available at https://libxc.gitlab.io/functionals/), and exchange and correlation density functionals can be combined using a "+" sign.

    • As an example, the LibXC call for PBE would be
      xc libxc GGA_C_PBE+GGA_X_PBE.

  • Local-density approximation (different parameterizations):

    • pw-lda : Homogeneous electron gas based on Ceperley and Alder [54] as parameterized by Perdew and Wang 1992 [242]. Recommended LDA parameterization.

    • pz-lda : Homogeneous electron gas based on Ceperley and Alder [54], as parameterized by Perdew and Zunger 1981 [243].

    • vwn : LDA of Vosko, Wilk, and Nusair 1980 [308].

    • vwn-gauss : LDA of Vosko, Wilk, and Nusair 1980, but based on the random phase approximation [273]. Do not use this LDA unless for one specific reason: In the B3LYP implementation of the Gaussian code, this functional is allegedly used instead of the correct VWN functional. It is therefore now present in many reference results in the literature, and also available here for comparison.

  • Generalized-gradient approximations:

    • am05 : GGA functional designed to include surface effects in self-consistent density functional theory, according to Armiento and Mattsson [14]

    • blyp : The BLYP functional: Becke (1988) exchange [27] and Lee-Yang-Parr correlation [190].

    • pbe : GGA of Perdew, Burke and Ernzerhof 1997 [240].

    • pbeint : PBEint functional of Ref. [88]

    • pbesol : Modified PBE GGA according to Ref. [246].

    • rpbe : The RPBE modified PBE functional according to Ref. [125].

    • revpbe : The revPBE modified PBE GGA suggested in Ref. [329].

    • r48pbe : The mixed functional containing 0.52*pbe and 0.48*rpbe according to Ref. [228]

    • srp : The mixed functional containing a mix of RPBE and PBE according to Ref. [314] In this case, the additional option value is needed, representing the mixing ratio, mixing of RPBE. For example, a mixing of 0.48 is equivalent to R48PBE.

    • pw91_gga : GGA according to Perdew and Wang, usually referred to as “Perdew-Wang 1991 GGA”. This GGA is most accessibly described in References 26 and 27 of Ref. [241]. Note that the often mis-quoted reference [242] does not(!) describe the Perdew-Wang GGA but instead only the correlation part of the local-density approximation described above.

    • b86bbpe : Becke’s B86b exchange[28] plus PBE correlation[240].

  • Meta-generalized gradient approximations:

    • m06-l : Truhlar’s optimized meta-GGA of the “M06” suite of functionals. [331]

    • m11-l : Truhlar’s optimized range-separated local meta-GGA of the “M11” suite of functionals. [250]

    • revtpss : Meta-GGA revTPSS functional of Ref. [244, 245].

    • tpss : Meta-GGA TPSS functional of Ref. [293]

    • tpssloc : Meta-GGA TPSSloc functional, thanks to E. Fabiano and F. Della Sala. L.A. Constantin, E. Fabiano, F.Della Sala, Ref. [63].

    • scan or SCAN: “Strongly Constrained and Appropriately Normed Semilocal Density Functional,” i.e., the SCAN meta-GGA functional by Sun, Ruzsinszky, and Perdew [288]. Note that the in-house implementation of SCAN functional has been deprecated and the dfauto scan functional is currently provided in the FHI-aims. However, the old in-house SCAN functional can also be used by the keyword scan-deprecated.

  • Hartree-Fock and hybrid functionals (including non-local exchange): Please also see Secs. 3.25 and 3.26 for related keywords and technical hints.

    • b3lyp : “B3LYP” hybrid functional as allegedly implemented in the Gaussian code (i.e., using the RPA version of the Vosk-Wilk-Nusair local-density approximation, see Refs. [308, 273] for details). Note that this is therefore not exactly the same B3LYP as originally described by Becke in 1993.

    • hf : Hartree-Fock exchange only.

    • hse03 : Hybrid functional as used in Heyd, Scuseria and Ernzerhof [139, 140]. In this functional, 25 % of the exchange energy is split into a short-ranged, screened Hartree-Fock part, and a PBE GGA-like functional for the long-range part of exchange. The remaining 75 % exchange and full correlation energy are treated as in PBE. As clarified in Refs. [180, 140], two different screening parameters were used in the short-range exchange part and long-range exchange part of the original HSE functional, respectively:
      Screened Hartree-Fock exchange: ωHF=0.15/2
      Screened PBE-like exchange: ωPBE=0.15×21/3
      Following the notation of Ref. [180], the ’hse03’ functional in FHI-aims reproduces these original values exactly.

    • hse06 : Hybrid functional according to Heyd, Scuseria and Ernzerhof [139], following the naming convention suggested in Ref. [180]. In this case, the additional option value is needed, representing the single real, positive screening parameter omega (ω) as clarified in Ref. [180]. In this functional, 25 % of the exchange energy is split into a short-ranged, screened Hartree-Fock part, and a PBE GGA-like functional for the long-range part of exchange. The remaining 75 % exchange and full correlation energy are treated as in PBE.
      In the literature, the unit for ω is either Å-1 or (bohr radius)-1, depending on the code, authors, and their favorite convention. To avoid any confusion, a separate keyword hse_unit must be specified in control.in, specifying either Å-1 (’A’) or bohr-1 (’b’). The code will no longer run without this explicit clarification. A correct calling syntax example is therefore:
      xc hse06 0.11
      hse_unit bohr-111 1 The hse_unit flag reads only the first character. Thus this is equivalent to hse_unit b (case insensitive).
      or similar.
      A few comments on typical choices for ω in the earlier literature:
      The original value of 0.15 bohr-1 by Heyd, Scuseria and Ernzerhoff 2003 [139] was never true - see their 2006 erratum. In FHI-aims, the ’hse03’ functional implements their actual choice.
      Krukau, Vydrov, Izmaylov and Scuseria 2006 [180] clarify the distinction between ’hse03’ and ’hse06’ (in addition to the Erratum mentioned above). Their conclusion is that omega=0.11 bohr-1 is a reasonable choice.
      Vydrov, Heyd, Krukau and Scuseria in 2006 [236] appear to favor omega=0.25 bohr-1, but with a mixing parameter (keyword hybrid_xc_coeff) of 0.5 for the short-range exchange. (The default for hybrid_xc_coeff in FHI-aims is 0.25, i.e., only a quarter of HF-like exchange.)
      You get the idea. As much as we would like to, we can not specify a single omega parameter for hse06 by default – the choice is up to you. Apologies for the inconvenience.

    • pbe0 : PBE0 hybrid functional [3], mixing 75 % GGA exchange with 25 % Hartree-Fock exchange.

    • pbe0_prime : PBE0 hybrid functional [3], mixing 75 % GGA exchange with 25 % Hartree-Fock exchange, and using the extended range-separation function with ω=0.11 Bohr-1 [174]. For the use of the extended range-separation function for other hybrid functionals, please use the keyword exx_lr_approximation.

    • pbesol0 : Hybrid functional in analogy to PBE0 [3], except that the PBEsol [246] GGA functionals are used, mixing 75 % GGA exchange with 25 % Hartree-Fock exchange.

    • b86bpbe-25 : B86bPBE hybrid functional [28, 240], mixing 75 % GGA exchange with 25 % Hartree-Fock exchange.

    • b86bpbe-50 : B86bPBE hybrid functional [28, 240], mixing 50 % GGA exchange with 50 % Hartree-Fock exchange.

    • b86bpbe0 : B86bPBE hybrid functional [28, 240], defaults to mixing 75 % GGA exchange with 25 % Hartree-Fock exchange, but is intended to be set with hybrid_xc_coeff

    • lc_wpbeh : Range separated hybrid functional LC-ωPBEh using 100 % Hartree-Fock exchange in the long-range part and ωPBE [236] in the short-range part. The full correlation energy is treated as in PBE. The hse_unit must be specified as in hse06!
      Syntax:
      xc lc_wpbeh ω α

      ExcLC-ωPBEh=αExxSR+(1α)ExωPBESR+(1ϵ)ExxLR+(11ϵ)EωPBELR+EcPBE (3.10)
      • *

        ϵ can be the dielectric constant. The default value is 1. One might change this parameter with the keyword lc_dielectric_constant

      • *

        If α=0 the functional is also known as LC-ωPBE [102]

      • *

        α=1 would correspond to a PBE0 calcuation with 100 % Hartree-Fock exchange

    • kc_xc: Koopmans-complliant screend exchange [204]. For more details and example input for control.in, see 3.26.

  • Hybrid Meta-generalized gradient functionals (including non-local exchange): Please also see Secs. 3.25 and 3.26 for related keywords and technical hints. Currently the non-local exchange contribution is fixed in all implementations due to the parameterised nature of these density functionals.

    • m06 : Truhlar’s optimized hybrid meta-GGA of the “M06” suite of functionals; with 27% exact exchange. [333]

    • m06-2x : Truhlar’s optimized hybrid meta-GGA of the “M06” suite of functionals, with double contribution (54%) from the hartree-fock exact exchange. [333]

    • m06-hf : Truhlar’s optimized hybrid meta-GGA of the “M06” suite of functionals, with 100% exact exchage contribution. [332]

    • m08-hx : Truhlar’s optimized hybrid meta-GGA of the “M08” suite of functionals, with 52.23% contribution from the hartree-fock exact exchange. [334]

    • m08-so : Truhlar’s optimized hybrid meta-GGA of the “M08” suite of functionals, with 56.79% contribution from the hartree-fock exact exchange. [334]

    • m11 : Truhlar’s optimized range-separated local meta-GGA of the “M11” suite of functionals [249]. The range-separation variable is also hardcoded in this implementation with ω=0.25 bohr-1.

  • Alternative implementations of some XC functionals via the dfauto program [286]. These implementations are generated automatically from Maple definitions that are located in xc_dfauto/. The general syntax is xc dfauto <name> where <name> can be one of (case-insensitive):

    • dfauto pw-lda|pbe|pbe0|tpss : This is practically identical to specifying directly xc <name>, and essentially provides alternative implementations of those functionals for testing purposes.

    • dfauto scan : This is the meta-GGA functional SCAN [288].

    • dfauto rscan : This is a Revision of the meta-GGA functional SCAN (rSCAN) [23].

    • dfauto scan0 : This is the meta-GGA hybrid functional SCAN0 [149], which mixes SCAN with 25% of exact exchange.

  • Double-hybrid functionals (including non-local exchange and correlation): Double-hybrid functionals are emerging quickly in the last decade. “double-hybrid” here means that the exchange functional mixes LDA(and/or GGA) exchange with “Hartree-Fock like exact exchange”. Meanwhile, the correlation functional is composed of both conventional LDA(and/or GGA) correlation and second-order perturbation energy. Doubly-hybrid functionals are “semi-empirical”, generally including several empirical parameters determined by optimizing against one or several well-chosen databases. Double-hybrid functionals show a remarkable improvement over conventional (hybrid-)GGAs in the description of heats of formation, bond dissociation enthalpies, reaction barrier heights and weak interactions of the main group elements. Doulbe-hybrid functionals have become new leading actors in the field of computational chemistry.

    • xyg3 : Double-hybrid functional XYG3, containing 80.33% Hartree-Fock exchange and 32.11% second-order perturbation energy [328].

    • xdh-pbe0 : Double-hybrid functional xDH-PBE0, containing 83.51% Hartree-Fock exchange and 52.42% opposite-spin second-order perturbation correlation [326].

  • Some specific correlated methods: Only a subset. For many correlated methods that can be used as non-selfconsistent perturbative post-processing methods after an initial s.c.f. calculation, see the total_energy_method keyword. Most of these are not available for periodic geometries, or, if at all, in a very experimental state.

    • mp2 : Self-consistent Hartree-Fock, followed by a second-order Møller-Plesset perturbative addition of the correlation energy. Note that the frozen_core keyword can be used to specify if and which low-lying states should be excluded from the correlation energy. For spin-component scaled MP2 [115], see keyword scs_mp2_parameters.
      Note that when mp2 is used for binding energy calculations, a counterpoise correction should always be performed to get reliable results, since the basis set superposition error (BSSE) for these correlation methods is significant. Note added in March 2016: A periodic implementation of MP2 is available but, at the time of writing, computationally extremely expensive. If you decide to use it, please keep in mind that the periodic version is included here as a matter of protocol but is not yet optimized to be fully usable in production calculations.

    • screx : experimental! Self-consistent, screened Hartree-Fock exchange only. The Coulomb operator is screened as:

      1rr1ε(r,r)1rr (3.11)

      ε(r,r) is the non-local microscopic dielectric function, obtained in the ω0 frequency limit of the random-phase approximation (RPA). See Ref. [130] for details.

    • cohsex : experimental! Self-consistent screened exchange plus Coulomb-hole (COH) correlation. See Ref. [130] for details.

  • Method of non-local correlation using the “van der Waals density functional” (vdw-DF) as presented by Dion and coworkers in Ref. [76] or the second version of the vdw-DF functional (vdw-DF2) as presented by Lee and coworkers in Ref. [191]. As implemented here, the vdw-DF is provided for reference purposes but it is much more expensive than other dispersion corrections in FHI-aims. The following options are available – as mentioned, very slow:

    • pbe_vdw : the vdw-DF functional with pbe exchange

    • revpbe_vdw : the vdW-DF functional with revpbe exchange

    • vdw-df2 : the vdW-DF2 functional with PW86 exchange

    • beef-vdw : the generalized gradient BEEFvdW functional by Wellendorff and coworkers [313]. This implementation uses exchange and correlation from libxc.

    • beef2-vdw2 : the generalized gradient BEEFvdW functional by Wellendorff and coworkers [313]. This implementation uses only exchange from libxc.

    Note that these keywords are not the correction due to Tkatchenko and Scheffler 2009 [295]. To activate the Tkatchenko-Scheffler correction instead, use the vdw_correction_hirshfeld keyword. The functional by Dion et al. is a very different functional. To use the functional by Dion et al., please review the numerical options described in Sec. 3.24.2.

    A benchmark of options vdw-df2, beef-vdw, beef2-vdw2 (implemented and available), and mbeef2_vdw2 (implemented but disabled due to non-negligible errors in testing) is available in Ref. [155]

Note that our version of the Coulomb operator (which is the basis for Hartree-Fock exchange also in hybrid functionals, as well as MP2 theory) is based on an auxiliary basis in what is known as resolution of the identity (Refs. [41, 6, 302, 86] and others). While our default settings should be safe, you may wish to consult Sec. 3.25 for particulars regarding this auxiliary basis.

Note also that some different perturbative exchange-correlation treatments for post-processing (after a self-consistent DFT or HF calculation is complete) may be invoked using the tag total_energy_method. Likewise, perturbative postprocessing for single-quasiparticle energies through a self-energy formalism (e.g., GW) is reached by specifying the qpe_calc tag and its options.

Right now, the correlated beyond-hybrid and beyond-meta methods are not implemented on top of the HSE03 or HSE06 functionals.

 

Tag: explicit_xc(control.in)

Usage: explicit_xc flag
Purpose: Turns on the explicit calculation of the GGA functional with direct LibXC derivatives instead of calculating the matrix element by parts.
flag is a boolean variable, which can be set to .true. or .false..
Default: .false.

Calculating the GGA functional explicitly brings the lowest eigenvalues for the heavy atoms (Pb, Bi) calculated on light grids on par with their counterparts calculated on the logarithmic grid in the atomic solver, thus bringing the calculated analytical stress on the sparse grids closer to the numerical value.

The explicit calculation of potential makes use of the xc energy derivatives readily available in libxc, so it’s dependent on the libxc representation of the potential. The formula for the potential is given by:

𝐕𝐱𝐜α=fρα2[fσαΔρα+β(2fσαρβρβ+2fσασβσβ)ρα], (3.12)

where α and β are the spin indices, σα=|ρα|2, and f is the energy density of the GGA functional. Here we rely on the functional not depending on the cross-spin term ρρ.

Subtags for species tag in control.in:

 

species sub-tag: plus_u(control.in)

Usage: plus_u n l U
Purpose: Experimental—only for DFT+U. Adds a +U term to one specific shell of this species.
n the (integer) radial quantum number of the selected shell.
l is a character, specifying the angular momentum ( s, p, d, f, …) of the selected shell.
U the value of the U parameter, specified in eV.

This implementation of DFT+U is based directly on the basis functions available within FHI-aims. This option selects one specific atomic shell of this species and adds the a rotationally invariant term with the specified fixed prefactor U to the Hamiltonian. The implementation follows the prescription in Ref. [127], based on the dual occupation numbers. The double counting term is handled through the mixed term proposed by Petukhov (see plus_u_petukhov_mixing).