Quantum ESPRESSO Input

The input to the QuantumESPRESSO engine has a similar structure as the input to the pw.x executable, with some exceptions.

Note

In the input file there are two System blocks:

  • The AMS driver System block contains the atomic species, atomic positions, atomic masses (isotopes), and lattice vectors, just like for any other AMS calculation. On each atom line you can also specify for example QE.label=Fe1 (max 3 characters) to set the internal QE atom type for that atom. See the Examples and AMS Driver documentation.

  • The QuantumESPRESSO Engine System block contains keywords from the &SYSTEM namelist in the pw.x input file. For example, ecutwfc to set the plane-wave energy cutoff, as well as many other input options for magnetization, occupations, dispersion corrections, etc. This block is described in detail below.

Pseudopotentials

A library of pseudopotentials is included with the AMS Quantum ESPRESSO package. Simply specify the family and the functional in the input and the corresponding pseudopotential files will be used.

The pseudopotentials will also determine the exchange-correlation functional used, unless you manually set the DFT functional (input_dft) option.

Important

Use an energy cutoff that is large enough for your selected pseudopotentials!

Pseudopotentials
   Directory string
   Family [Dojo | GBRV | pslibrary-PAW | pslibrary-US | SG15 | SSSP-Efficiency | SSSP-Precision]
   Files
      Label string
      Path string
   End
   FullyRelativistic Yes/No
   Functional [BLYP | LDA | PBE | PBEsol | PW91]
End
Pseudopotentials
Type:

Block

Description:

Selects the pseudopotential to use for the atomic species.

Directory
Type:

String

Description:

This key is mutually exclusive with the Family and Files keywords. This key specifies a directory containing label.upf files. Example: .. code-block:: text System Atoms H 0 0 0 H 0 0 1 QE.Label=H1 H 0 0 2 QE.Label=H2 C 0 0 3 QE.Label=C1 End End This will look for the files H.upf, H1.upf, H2.upf, C1.upf. If H1.upf does not exist, H.upf will be used. If H2.upf does not exist, H.upf will be used. If C1.upf does not exist, C.upf will be used.

Family
Type:

Multiple Choice

Default value:

SSSP-Efficiency

Options:

[Dojo, GBRV, pslibrary-PAW, pslibrary-US, SG15, SSSP-Efficiency, SSSP-Precision]

GUI name:

Pseudopotential family

Description:

The pseudopotential family to use. Mutually exclusive with the Files and Directory keywords.

Files
Type:

Block

Recurring:

True

Description:

Selects the pseudopotentials to use for each atomic species. This key is mutually exclusive with the Family and Directory keywords.

Label
Type:

String

Description:

Label for an atom corresponding to the QE.Label, or to the element symbol if QE.Label is not set.

Path
Type:

String

Description:

Path to a .upf file to use as pseudopotential. Relative paths are relative to root of the pseudopotential library shipped with AMS. Prefix a path with ‘./’ to make it relative to the starting directory of your job.

FullyRelativistic
Type:

Bool

Default value:

No

GUI name:

Pseudopotential fully relativistic

Description:

Whether to use fully relativistic pseudopotentials (required for spin-orbit calculations).

Functional
Type:

Multiple Choice

Default value:

PBE

Options:

[BLYP, LDA, PBE, PBEsol, PW91]

GUI name:

Pseudopotential functional

Description:

Exchange-correlation functional that was used to generate the pseudopotential. Not all choices are valid for all pseudopotential families. This functional will also be used for the calculation, unless the input_dft option is set.

K-space and k-point sampling

The K_Points block corresponds to the K_POINTS card in the pw.x input.

Gamma-point (Γ-point) sampling (fast implementation, not compatible with all calculation types or postprocessing programs):

Engine QuantumEspresso
    K_Points gamma
    End
EndEngine

Gamma-point (Γ-point) sampling (slower implementation):

Engine QuantumEspresso
    K_Points automatic
        1 1 1 0 0 0
    End
EndEngine

Monkhorst-Pack 6 x 6 x 4 grid, shifted:

Engine QuantumEspresso
   K_Points automatic
     6 6 4 1 1 1
   End
EndEngine

Monkhorst-Pack 6 x 6 x 4 grid, unshifted:

Engine QuantumEspresso
   K_Points automatic
     6 6 4 0 0 0
   End
EndEngine

The output contains details about the generated k-point grid. For further information, see the pw.x documentation.

For DOS and band structure calculations, the main K_Points block specifies the k-points used during the self-consistent-field (SCF). The DOS and band structure sections for how to specify a different k-space sampling for the non-self-consistent parts of DOS and band structure calculations.

K_Points
Type:

Non-standard block

Description:

Specify the k-points to use. Available header values are: tpiba, automatic, crystal, gamma, tpiba_b, crystal_b, tpiba_c, crystal_c, and ams_kpath. See the examples and QE documentation for details. If omitted, only gamma is used. For most cases, automatic (which generates a Monkhorst-Pack grid) is recommended. Note: Gamma-point calculations are significantly faster using gamma than automatic, but may not be possible to use for all types of calculations or postprocessing programs.

Control block: dipole/electric field

Control
   dipfield Yes/No
   lelfield Yes/No
   tefield Yes/No
   verbosity [Minimal | Low | Default | Debug | Medium | High | Auto]
End
Control
Type:

Block

Description:

Keywords from the &CONTROL namelist in the QuantumEspresso input file.

dipfield
Type:

Bool

Default value:

No

GUI name:

Dipole field

Description:

If True (and tefield is True) a dipole correction is also added to the bare ionic potential - implements the recipe of L. Bengtsson, PRB 59, 12301 (1999). See keywords edir, emaxpos, eopreg for the form of the correction. Must be used ONLY in a slab geometry, for surface calculations, with the discontinuity FALLING IN THE EMPTY SPACE.

lelfield
Type:

Bool

Default value:

No

GUI name:

Homogeneous E-field

Description:

If True a homogeneous finite electric field described through the modern theory of the polarization is applied. This is different from setting tefield to True!

tefield
Type:

Bool

Default value:

No

GUI name:

Saw-like E-field

Description:

If True a saw-like potential simulating an electric field is added to the bare ionic potential. See keywords edir, eamp, emaxpos, eopreg for the form and size of the added potential.

verbosity
Type:

Multiple Choice

Default value:

Auto

Options:

[Minimal, Low, Default, Debug, Medium, High, Auto]

Description:

Currently two verbosity levels are implemented: ‘high’, ‘low’. ‘debug’ and ‘medium’ have the same effect as ‘high’, ‘default’ and ‘minimal’ as ‘low’. The Default (‘Auto’) is stablished by QE.

Electrons block: SCF convergence

Electrons
   conv_thr float
   diagonalization [Davidson | ConjugateGradient | PPCG | ParO | RMM-Davidson | RMM-ParO]
   electron_maxstep integer
   mixing_beta float
   mixing_mode [Plain | Thomas-Fermi | Local-Thomas-Fermi]
   mixing_ndim integer
   scf_must_converge Yes/No
End
Electrons
Type:

Block

Description:

Keywords from the &ELECTRONS namelist in the QuantumEspresso input file.

conv_thr
Type:

Float

Default value:

1e-06

Unit:

Rydberg

GUI name:

Convergence threshold

Description:

Convergence threshold for selfconsistency: estimated energy error < conv_thr. Note that conv_thr is extensive, like the total energy.

diagonalization
Type:

Multiple Choice

Default value:

Davidson

Options:

[Davidson, ConjugateGradient, PPCG, ParO, RMM-Davidson, RMM-ParO]

GUI name:

Diagonalization

Description:

Available options are: • Davidson: iterative diagonalization with overlap matrix. Fast, may in some rare cases fail. • ConjugateGradient: Conjugate-gradient-like band-by-band diagonalization. MUCH slower than Davidson but uses less memory and is (a little bit) more robust. • PPCG: PPCG iterative diagonalization • ParO: ParO iterative diagonalization • RMM-Davidson & RMM-ParO: RMM-DIIS iterative diagonalization. To stabilize the SCF loop RMM-DIIS is alternated with calls to Davidson or ParO solvers.

electron_maxstep
Type:

Integer

Default value:

100

GUI name:

Maximum # SCF iterations

Description:

Maximum number of iterations in a SCF step.

mixing_beta
Type:

Float

Default value:

0.3

GUI name:

Beta

Description:

Mixing factor for self-consistency. Note: the default value in the AMS interface (0.3) is smaller than the default value in pw.x (0.7)

mixing_mode
Type:

Multiple Choice

Default value:

Plain

Options:

[Plain, Thomas-Fermi, Local-Thomas-Fermi]

GUI name:

Mixing mode

Description:

Available options are: • Plain: charge density Broyden mixing • Thomas-Fermi: as above, with simple Thomas-Fermi screening (for highly homogeneous systems) • Local-Thomas-Fermi: as above, with local-density-dependent TF screening (for highly inhomogeneous systems)

mixing_ndim
Type:

Integer

Default value:

8

GUI name:

Dimension

Description:

Number of iterations used in mixing scheme. If you are tight with memory, you may reduce it to 4 or so.

scf_must_converge
Type:

Bool

Default value:

Yes

Description:

If .false. do not stop molecular dynamics or ionic relaxation when electron_maxstep is reached. Use with care. Important: When using the AMS interface, setting this to .true. will halt the entire AMS execution if the SCF fails; otherwise, AMS will try to continue using the unconverged results.

System block (in the QuantumESPRESSO engine)

Overview:

System
   assume_isolated [Auto | None | Martyna-Tuckerman | ESM | 2D]
   degauss float
   dftd3_threebody Yes/No
   dftd3_version [2 | 3 | 4 | 5 | 6]
   eamp float
   ecutfock float
   ecutrho float
   ecutvcut float
   ecutwfc float
   edir [x | y | z]
   emaxpos float
   eopreg float
   esm_bc [pbc | bc1 | bc2 | bc3]
   exx_fraction float
   exxdiv_treatment [gygi-baldereschi | vcut_spherical | vcut_ws | none]
   gcscf_conv_thr float
   gcscf_mu float
   input_dft string
   lgcscf Yes/No
   lspinorb Yes/No
   nbnd integer
   nosym Yes/No
   nqx1 integer
   nqx2 integer
   nqx3 integer
   nr1 integer
   nr1s integer
   nr2 integer
   nr2s integer
   nr3 integer
   nr3s integer
   nspin [None | Collinear | Non-Collinear]
   occupations [Smearing | Tetrahedra | Tetrahedra_lin | Tetrahedra_opt | Fixed]
   screening_parameter float
   smearing [Gaussian | Methfessel-Paxton | Marzari-Vanderbilt | Fermi-Dirac]
   starting_magnetization
      Label string
      Value float
   End
   tot_magnetization float
   vdw_corr [None | Grimme-D2 | Grimme-D3 | TS | MBD | XDM]
   x_gamma_extrapolation Yes/No
   xdm_a1 float
   xdm_a2 float
End

Cutoffs

System
   ecutrho float
   ecutwfc float
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

ecutrho
Type:

Float

Unit:

Rydberg

GUI name:

Charge density cutoff

Description:

Kinetic energy cutoff for charge density and potential. If this key is not specified and the Pseudopotential%Family recommends a ratio of ecutrho to ecutwfc, this recommended ratio will be used. If there is no recommended ratio, the default value is 4 x ecutwfc. For norm-conserving pseudopotential you should stick to the default value, you can reduce it by a little but it will introduce noise especially on forces and stress. If there are ultrasoft PP, a larger value than the default is often desirable (ecutrho = 8 to 12 times ecutwfc, typically). PAW datasets can often be used at 4 x ecutwfc, but it depends on the shape of augmentation charge: testing is mandatory. The use of gradient-corrected functional, especially in cells with vacuum, or for pseudopotential without non-linear core correction, usually requires an higher values of ecutrho to be accurately converged.

ecutwfc
Type:

Float

Default value:

40.0

Unit:

Rydberg

GUI name:

Wavefunction energy cutoff

Description:

Kinetic energy cutoff for wavefunctions.

Number of bands (nbnd)

System
   nbnd integer
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

nbnd
Type:

Integer

GUI name:

Number of bands

Description:

Number of electronic states (bands) to be calculated. Note that in spin-polarized calculations the number of k-point, not the number of bands per k-point, is doubled. Default: For an insulator, nbnd = number of valence bands (nbnd = # of electrons /2); for a metal, 20% more (minimum 4 more)

Fractional occupation, smearing

System
   degauss float
   occupations [Smearing | Tetrahedra | Tetrahedra_lin | Tetrahedra_opt | Fixed]
   smearing [Gaussian | Methfessel-Paxton | Marzari-Vanderbilt | Fermi-Dirac]
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

degauss
Type:

Float

Default value:

0.0

Unit:

Rydberg

GUI name:

Smearing width

Description:

Value of the gaussian spreading for Brillouin-zone integration in metals.

occupations
Type:

Multiple Choice

Default value:

Fixed

Options:

[Smearing, Tetrahedra, Tetrahedra_lin, Tetrahedra_opt, Fixed]

GUI name:

Occupations

Description:

Available options are: • Smearing: gaussian smearing for metals; see keywords smearing and degauss • Tetrahedra: Tetrahedron method, Bloechl’s version: P.E. Bloechl, PRB 49, 16223 (1994). Requires uniform grid of k-points, to be automatically generated (see block K_Points). Well suited for calculation of DOS, less so (because not variational) for force/optimization/dynamics calculations. • Tetrahedra_lin: Original linear tetrahedron method. To be used only as a reference; the optimized tetrahedron method is more efficient. • Tetrahedra_opt: optimized tetrahedron method, see M. Kawamura, PRB 89, 094515 (2014). Can be used for phonon calculations as well. • Fixed: for insulators with a gap.

smearing
Type:

Multiple Choice

Default value:

Gaussian

Options:

[Gaussian, Methfessel-Paxton, Marzari-Vanderbilt, Fermi-Dirac]

GUI name:

Smearing

Description:

Available options are: • Gaussian: ordinary Gaussian spreading • Methfessel-Paxton: first-order spreading (see PRB 40, 3616 (1989)) • Marzari-Vanderbilt: cold smearing (see PRL 82, 3296 (1999)) • Fermi-Dirac: smearing with Fermi-Dirac function

Magnetization, spin, spin-orbit

System
   lspinorb Yes/No
   nspin [None | Collinear | Non-Collinear]
   starting_magnetization
      Label string
      Value float
   End
   tot_magnetization float
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

lspinorb
Type:

Bool

Default value:

No

GUI name:

Spin-orbit

Description:

if .TRUE. the noncollinear code can use a pseudopotential with spin-orbit.

nspin
Type:

Multiple Choice

Default value:

None

Options:

[None, Collinear, Non-Collinear]

GUI name:

Magnetization

Description:

Available options are: • None: not spin-polarized • Collinear: LSDA with magnetization along z-axis • Non-Collinear: any magnetization (equivalent to setting the noncolin key to True)

starting_magnetization
Type:

Block

Recurring:

True

Description:

Starting spin polarization for an atomic type in a spin polarized (LSDA or noncollinear/spin-orbit) calculation. Allowed values range between -1 (all spins down for the valence electrons of atom type ‘i’) to 1 (all spins up). If you expect a nonzero magnetization in your ground state, you MUST either specify a nonzero value for at least one atomic type, or constrain the magnetization using keyword tot_magnetization for LSDA, constrained_magnetization for noncollinear/spin-orbit calculations. If you don’t, you will get a nonmagnetic (zero magnetization) state. In order to perform LSDA calculations for an antiferromagnetic state, define two different atomic species corresponding to sublattices of the same atomic type. Note: If you fix the magnetization with tot_magnetization, do not specify starting_magnetization. Note: In the noncollinear/spin-orbit case, starting with zero starting_magnetization on all atoms imposes time reversal symmetry. The magnetization is never calculated and is set to zero.

Label
Type:

String

Description:

Label for an atom corresponding to the QE.Label, or to the element symbol if QE.Label is not set.

Value
Type:

Float

Description:

Starting magnetization value.

tot_magnetization
Type:

Float

GUI name:

Fix total magnetization

Description:

Total majority spin charge minus minority spin charge. Used to impose a specific total electronic magnetization. If unspecified then tot_magnetization variable is ignored and the amount of electronic magnetization is determined during the self-consistent cycle.

Dispersion corrections

Tip

You can access Grimme’s D4 dispersion through an AMS engine addon.

System
   vdw_corr [None | Grimme-D2 | Grimme-D3 | TS | MBD | XDM]
   dftd3_version [2 | 3 | 4 | 5 | 6]
   dftd3_threebody Yes/No
   xdm_a1 float
   xdm_a2 float
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

vdw_corr
Type:

Multiple Choice

Default value:

None

Options:

[None, Grimme-D2, Grimme-D3, TS, MBD, XDM]

GUI name:

Dispersion correction

Description:

Type of Van der Waals correction. Allowed values: • Grimme-D2: Semiempirical Grimme’s DFT-D2, see S. Grimme, J. Comp. Chem. 27, 1787 (2006) [doi:10.1002/jcc.20495], and V. Barone et al., J. Comp. Chem. 30, 934 (2009) [doi:10.1002/jcc.21112]. • Grimme-D3: Semiempirical Grimme’s DFT-D3, see S. Grimme et al, J. Chem. Phys 132, 154104 (2010) [doi:10.1063/1.3382344]. • TS: Tkatchenko-Scheffler dispersion corrections with first-principle derived C6 coefficients, see A. Tkatchenko and M. Scheffler, PRL 102, 073005 (2009). • MBD: Many-body dispersion (MBD) correction to long-range interactions, see A. Ambrosetti, A. M. Reilly, R. A. DiStasio, A. Tkatchenko, J. Chem. Phys. 140 18A508 (2014). • XDM: Exchange-hole dipole-moment model, see A. D. Becke et al., J. Chem. Phys. 127, 154108 (2007) [doi:10.1063/1.2795701], and A. Otero de la Roza et al., J. Chem. Phys. 136, 174109 (2012) [doi:10.1063/1.4705760]. Note that non-local functionals (eg vdw-DF) are NOT specified here but using the input_dft keyword.

dftd3_version
Type:

Multiple Choice

Default value:

3

Options:

[2, 3, 4, 5, 6]

GUI name:

Version

Description:

Version of Grimme implementation of Grimme-D3: • 2: Original Grimme-D2 parametrization • 3: Grimme-D3 (zero damping) • 4: Grimme-D3 (BJ damping) • 5: Grimme-D3M (zero damping) • 6: Grimme-D3M (BJ damping) • NOTE: not all functionals are parametrized.

dftd3_threebody
Type:

Bool

Default value:

Yes

GUI name:

Use three-body terms

Description:

Turn three-body terms in Grimme-D3 on. If False two-body contributions only are computed, using two-body parameters of Grimme-D3. If dftd3_version is set to 2, three-body contribution is always disabled.

xdm_a1
Type:

Float

Default value:

0.6836

GUI name:

a1

Description:

Damping function parameter a1 (adimensional). It is NOT necessary to give a value if the functional is one of B86bPBE, PW86PBE, PBE, BLYP. For functionals in this list, the coefficients are given in: http://schooner.chem.dal.ca/wiki/XDM; A. Otero de la Roza, E. R. Johnson, J. Chem. Phys. 138, 204109 (2013) [doi:10.1063/1.4705760]

xdm_a2
Type:

Float

Default value:

1.5045

Unit:

Angstrom

GUI name:

a2

Description:

Damping function parameter a2 (Angstrom). It is NOT necessary to give a value if the functional is one of B86bPBE, PW86PBE, PBE, BLYP. For functionals in this list, the coefficients are given in: http://schooner.chem.dal.ca/wiki/XDM; A. Otero de la Roza, E. R. Johnson, J. Chem. Phys. 138, 204109 (2013) [doi:10.1063/1.4705760]

Example values for xdm_a1 and xdm_a2 (source: postsg/xdm.param)

# quantum espresso, new version
functional       a1    a2(ang)  MAPD nset
b86bpbe (PAW)  0.6512  1.4633   11.8  49
pw86pbe (PAW)  0.6836  1.5045   11.7  49
blyp    (PAW)  0.4502  1.6210   14.8  49
pbe     (PAW)  0.3275  2.7673   14.4  49
b86bpbe (NC)   0.7767  1.0937   12.4  49
pw86pbe (NC)   0.7825  1.2077   12.6  49
blyp    (NC)   0.6349  1.0486   11.2  49
pbe     (NC)   0.4283  2.4690   15.2  49

# quantum espresso, new version, hybrids
functional           a1    a2(ang)  MAPD nset
hse         (PAW)  0.3799  2.5862   10.5  49
pbe0        (PAW)  0.4616  2.2913    7.9  49
b3lyp       (PAW)  0.6092  1.3452    8.5  49
b86bpbe 10% (PAW)  0.6470  1.4911   10.1  49
b86bpbe 20% (PAW)  0.6303  1.5579    8.8  49
b86bpbe 30% (PAW)  0.6134  1.6290    7.8  49
b86bpbe 40% (PAW)  0.5976  1.7000    7.1  49
b86bpbe 50% (PAW)  0.5826  1.7718    6.9  49
blyp 10%    (PAW)  0.5637  1.4443   10.0  49
blyp 20%    (PAW)  0.5663  1.5258    8.8  49
blyp 30%    (PAW)  0.5174  1.7808    8.5  49
blyp 40%    (PAW)  0.4195  2.1999    8.6  49
bhahlyp     (PAW)  0.2998  2.6953    9.3  49
b3lyp       (NC)   0.6070  1.3862    7.4  49
pbe0        (NC)   0.4590  2.3581   11.1  49
hse         (NC)   0.4206  2.4989   11.9  49
b86bpbe 10% (NC)   0.7272  1.2674   10.8  49
b86bpbe 20% (NC)   0.6898  1.4072    9.6  49
b86bpbe 25% (NC)   0.6754  1.4651    9.2  49
b86bpbe 30% (NC)   0.6627  1.5181    9.0  49
b86bpbe 40% (NC)   0.6465  1.5981    8.9  49
b86bpbe 50% (NC)   0.6434  1.6405    9.1  49
blyp 10%    (NC)   0.5967  1.3653    8.6  49
blyp 20%    (NC)   0.5315  1.6669    7.8  49
blyp 30%    (NC)   0.4398  2.0623    8.1  49
blyp 40%    (NC)   0.3375  2.5011    9.1  49
bhahlyp     (NC)   0.2292  2.9698   10.4  49

DFT functional (input_dft)

System
   input_dft string
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

input_dft
Type:

String

GUI name:

Density functional

Description:

Exchange-correlation functional. Some valid values are • pbe • blyp • pbe0 • hse • revpbe • vdw-df-cx. See the documentation for more possible values. Overrides the value read from pseudopotential files.

New in version AMS2026: LibXC support

Common values for input_dft

These are suggested values for various functionals based on benchmarks and practical experience, including both native Quantum ESPRESSO and Libxc keywords. A red cross (❌) indicates that the setup should not be used, as it will return incorrect results even if the program runs without crashing.

Functional Name

Quantum ESPRESSO (Native)

Quantum ESPRESSO (Libxc, AMS2026+)

ADF Equivalent [1]

Input option ⇒

input_dft <key>

input_dft <key>

XC <key>

LDA

LDA_PZ

pz

XC-001L-012L-000I-000I-000I-000I

LDA=PW92

LDA_VWN

vwn-rpa

XC-001L-007L-000I-000I-000I-000I

LDA=VWN

GGA

PBE

pbe

XC-000I-000I-101L-130L-000I-000I

GGA=PBE

PBEsol

pbesol

XC-000I-000I-116L-133L-000I-000I

GGA=PBEsol

BLYP

blyp

XC-000I-000I-106L-131L-000I-000I

GGA=BLYP

PW91

pw91

XC-000I-000I-109L-134L-000I-000I

GGA=PW91

revPBE

revpbe

XC-000I-000I-110L-130L-000I-000I

GGA=revPBE

RPBE

rpbe

XC-000I-000I-117L-130L-000I-000I

GGA=RPBE

meta-GGA [2] [3]

TPSS

XC-000I-000I-000I-000I-202L-231L

MetaGGA=TPSS

revTPSS

XC-000I-000I-000I-000I-212L-241L

MetaGGA=revTPSS

SCAN

scan

XC-000I-000I-000I-000I-263L-267L

MetaGGA=SCAN

r2SCAN

r2scan

XC-000I-000I-000I-000I-497L-498L

LibXC=R2SCAN

M06-L

XC-000I-000I-000I-000I-203L-233L

MetaGGA=M06-L

Hybrids [4]

PBE0

pbe0

Hybrid=PBE0

B3LYP

b3lyp

Hybrid=B3LYP

Range Separated Hybrids [4]

HSE06

hse

LibXC=HSE06

Notes

All input_dft values

Valid values from QuantumESPRESSO (source QuantumESPRESSO-7.1: Modules/funct.f90)

To use a native QuantumESPRESSO functional, you can simply provide its corresponding short text string (e.g., 'pbe', 'b3lyp', or 'scan') directly to the input_dft option. You can find the complete list of supported native functional strings in the following source file:

Click to view the source code
  ! ------------------------------------------------------------------------
  ! "dft" is the exchange-correlation functional label, as set by the user,
  ! using either set_dft_from_name or set_dft_from_indices. It can contain
  ! either the short names or a series of the keywords listed below.
  ! All operations on names are case-insensitive.
  !
  !           short name       complete name       Short description
  !              "pz"    = "sla+pz"            = Perdew-Zunger LDA
  !              "bp"    = "b88+p86"           = Becke-Perdew grad.corr.
  !              "pw91"  = "sla+pw+ggx+ggc"    = PW91 (aka GGA)
  !              "blyp"  = "sla+b88+lyp+blyp"  = BLYP
  !              "pbe"   = "sla+pw+pbx+pbc"    = PBE
  !              "revpbe"= "sla+pw+revx+pbc"   = revPBE (Zhang-Yang)
  !              "rpbe"  = "sla+pw+hhnx+pbc"   = RPBE (Hammer-Hansen-Norskov)
  !              "pw86pbe" = "sla+pw+pw86+pbc" = PW86 exchange + PBE correlation
  !              "b86bpbe" = "sla+pw+b86b+pbc" = B86b exchange + PBE correlation
  !              "pbesol"= "sla+pw+psx+psc"    = PBEsol
  !              "q2d"   = "sla+pw+q2dx+q2dc"  = PBEQ2D
  !              "hcth"  = "nox+noc+hcth+hcth" = HCTH/120
  !              "olyp"  = "nox+lyp+optx+blyp" = OLYP
  !              "wc"    = "sla+pw+wcx+pbc"    = Wu-Cohen
  !              "sogga" = "sla+pw+sox+pbec"   = SOGGA
  !              "optbk88"="sla+pw+obk8+p86"   = optB88
  !              "optb86b"="sla+pw+ob86+p86"   = optB86
  !              "ev93"  = "sla+pw+evx+nogc"   = Engel-Vosko
  !              "tpss"  = "sla+pw+tpss+tpss"  = TPSS Meta-GGA
  !              "m06l"  = "nox+noc+m6lx+m6lc" = M06L Meta-GGA
  !              "tb09"  = "sla+pw+tb09+tb09"  = TB09 Meta-GGA
  !              "pbe0"  = "pb0x+pw+pb0x+pbc"  = PBE0
  !              "b86bx" = "pb0x+pw+b86x+pbc"  = B86bPBE hybrid
  !              "bhahlyp"="pb0x+pw+b88x+blyp" = Becke half-and-half LYP
  !              "hse"   = "sla+pw+hse+pbc"    = Heyd-Scuseria-Ernzerhof (HSE 06, see note below)
  !              "b3lyp"                        = B3LYP
  !              "b3lyp-v1r"                    = B3LYP-VWN1-RPA
  !              "x3lyp"                        = X3LYP
  !              "vwn-rpa" = VWN LDA using vwn1-rpa parametrization
  !              "gaupbe"= "sla+pw+gaup+pbc"   = Gau-PBE (also "gaup")
  !
  !              "vdw-df"       ="sla+pw+revx+vdw1"      = vdW-DF1
  !              "vdw-df2"      ="sla+pw+rw86+vdw2"      = vdW-DF2
  !              "vdw-df-c09"   ="sla+pw+c09x+vdw1"      = vdW-DF-C09
  !              "vdw-df2-c09"  ="sla+pw+c09x+vdw2"      = vdW-DF2-C09
  !              "vdw-df-obk8"  ="sla+pw+obk8+vdw1"      = vdW-DF-obk8 (optB88-vdW)
  !              "vdw-df-ob86"  ="sla+pw+ob86+vdw1"      = vdW-DF-ob86 (optB86b-vdW)
  !              "vdw-df2-b86r" ="sla+pw+b86r+vdw2"      = vdW-DF2-B86R (rev-vdw-df2)
  !              "vdw-df-cx"    ="sla+pw+cx13+vdW1"      = vdW-DF-cx
  !              "vdw-df-cx0"   ="sla+pw+cx13+vdW1+HF/4" = vdW-DF-cx-0
  !              "vdw-df2-0"    ="sla+pw+rw86+vdw2+HF/4" = vdW-DF2-0
  !              "vdw-df2-br0"  ="sla+pw+b86r+vdW2+HF/4" = vdW-DF2-b86r-0
  !              "vdw-df-c090"  ="sla+pw+c09x+vdw1+HF/4" = vdW-DF-C09-0
  !              "vdw-df3-opt1" ="sla+pw+w31x+w31c"      = vdW-DF3-opt1
  !              "vdw-df3-opt2" ="sla+pw+w32x+w32c"      = vdW-DF3-opt2
  !              "vdw-df-C6"    ="sla+pw+b86r+wc6"       = vdW-DF-C6
  !              "rvv10" = "sla+pw+rw86+pbc+vv10"        = rVV10
  !
  ! Any nonconflicting combination of the following keywords is acceptable:
  !
  ! Exchange:    "nox"    none                           iexch=0
  !              "sla"    Slater (alpha=2/3)             iexch=1 (default)
  !              "sl1"    Slater (alpha=1.0)             iexch=2
  !              "rxc"    Relativistic Slater            iexch=3
  !              "oep"    Optimized Effective Potential  iexch=4
  !              "hf"     Hartree-Fock                   iexch=5
  !              "pb0x"   (Slater*0.75+HF*0.25)          iexch=6 for PBE0 and vdW-DF-cx0 and vdW-DF2-0 etc
  !              "b3lp"   B3LYP(Slater*0.80+HF*0.20)     iexch=7
  !              "kzk"    Finite-size corrections        iexch=8
  !              "x3lp"   X3LYP(Slater*0.782+HF*0.218)   iexch=9
  !              "kli"    KLI aproximation for exx       iexch=10
  !
  ! Correlation: "noc"    none                           icorr=0
  !              "pz"     Perdew-Zunger                  icorr=1 (default)
  !              "vwn"    Vosko-Wilk-Nusair              icorr=2
  !              "lyp"    Lee-Yang-Parr                  icorr=3
  !              "pw"     Perdew-Wang                    icorr=4
  !              "wig"    Wigner                         icorr=5
  !              "hl"     Hedin-Lunqvist                 icorr=6
  !              "obz"    Ortiz-Ballone form for PZ      icorr=7
  !              "obw"    Ortiz-Ballone form for PW      icorr=8
  !              "gl"     Gunnarson-Lunqvist             icorr=9
  !              "kzk"    Finite-size corrections        icorr=10
  !              "vwn-rpa" Vosko-Wilk-Nusair, alt param  icorr=11
  !              "b3lp"   B3LYP (0.19*vwn+0.81*lyp)      icorr=12
  !              "b3lpv1r"  B3LYP-VWN-1-RPA
  !                         (0.19*vwn_rpa+0.81*lyp)      icorr=13
  !              "x3lp"   X3LYP (0.129*vwn_rpa+0.871*lyp)icorr=14
  !
  ! Gradient Correction on Exchange:
  !              "nogx"   none                           igcx =0 (default)
  !              "b88"    Becke88 (beta=0.0042)          igcx =1
  !              "ggx"    Perdew-Wang 91                 igcx =2
  !              "pbx"    Perdew-Burke-Ernzenhof exch    igcx =3
  !              "revx"   revised PBE by Zhang-Yang      igcx =4
  !              "hcth"   Cambridge exch, Handy et al    igcx =5
  !              "optx"   Handy's exchange functional    igcx =6
  !              "pb0x"   PBE0 (PBE exchange*0.75)       igcx =8
  !              "b3lp"   B3LYP (Becke88*0.72)           igcx =9
  !              "psx"    PBEsol exchange                igcx =10
  !              "wcx"    Wu-Cohen                       igcx =11
  !              "hse"    HSE screened exchange          igcx =12
  !              "rw86"   revised PW86                   igcx =13
  !              "pbe"    same as PBX, back-comp.        igcx =14
  !              "c09x"   Cooper 09                      igcx =16
  !              "sox"    sogga                          igcx =17
  !              "q2dx"   Q2D exchange grad corr         igcx =19
  !              "gaup"   Gau-PBE hybrid exchange        igcx =20
  !              "pw86"   Perdew-Wang (1986) exchange    igcx =21
  !              "b86b"   Becke (1986) exchange          igcx =22
  !              "obk8"   optB88  exchange               igcx =23
  !              "ob86"   optB86b exchange               igcx =24
  !              "evx"    Engel-Vosko exchange           igcx =25
  !              "b86r"   revised Becke (b86b)           igcx =26
  !              "cx13"   consistent exchange            igcx =27
  !              "x3lp"   X3LYP (Becke88*0.542 +
  !                              Perdew-Wang91*0.167)    igcx =28
  !              "cx0"    vdW-DF-cx+HF/4 (cx13-0)        igcx =29 
  !              "r860"   rPW86+HF/4 (rw86-0)            igcx =30 (for DF0)
  !              "cx0p"   vdW-DF-cx+HF/5 (cx13-0p)       igcx =31 
  !              "ahcx"   vdW-DF-cx based analytic hole  igcx =32 ! Launched vdW-DF-ahcx - PH
  !              "ahf2"   vdW-DF2 based analytic hole    igcx =33 ! Defined vdw-DF2-AH at 0.20 - PH
  !              "ahpb"   PBE based analytic hole        igcx =34 ! PBE-AH (rHJS-PBE) at 0.20 - PH
  !              "ahps"   PBE-sol based analytic hole    igcx =35 ! PBESOL-AH (rHJS-PBEsol) at 0.20 - PH
  !              "cx14"   Exporations                    igcx =36 reserved PH
  !              "cx15"   Exporations                    igcx =37 reserved PH
  !              "br0"    vdW-DF2-b86r+HF/4 (b86r-0)     igcx =38 
  !              "cx16"   Exporations                    igcx =39 reserved PH
  !              "c090"   vdW-DF-c09+HF/4 (c09-0)        igcx =40 
  !              "b86x"   B86b exchange * 0.75           igcx =41
  !              "b88x"   B88 exchange * 0.50            igcx =42
  !              "beex"   BEE exchange                   igcx =43 
  !              "hhnx"   Hammer-Hansen-Norskov          igcx =44
  !              "w31x"   vdW-DF3-opt1 exchange          igcx =45
  !              "w32x"   vdW-DF3-opt2 exchange          igcx =46
  !              "ahtr"   vdW-DF2-ahtr exchange          igcx =47 ! Test reserve called by vdW-DF2-ahtr - PH
  !              "ehpb"   HSE variant                    igcx =48 ! Reserved PH
  !              "hjpb"   HJS-type PBE cross check       igcx =49 ! Reserved PH
  !              "hjps"   HJS-type PBEsol crosscheck     igcx =50 ! Reserved PH
  !
  ! Gradient Correction on Correlation:
  !              "nogc"   none                           igcc =0 (default)
  !              "p86"    Perdew86                       igcc =1
  !              "ggc"    Perdew-Wang 91 corr.           igcc =2
  !              "blyp"   Lee-Yang-Parr                  igcc =3
  !              "pbc"    Perdew-Burke-Ernzenhof corr    igcc =4
  !              "hcth"   Cambridge corr, Handy et al    igcc =5
  !              "b3lp"   B3LYP (Lee-Yang-Parr*0.81)     igcc =7
  !              "psc"    PBEsol corr                    igcc =8
  !              "pbe"    same as PBX, back-comp.        igcc =9
  !              "q2dc"   Q2D correlation grad corr      igcc =12
  !              "x3lp"   X3LYP (Lee-Yang-Parr*0.871)    igcc =13
  !              "beec"   BEE correlation                igcc =14
  !
  ! Meta-GGA functionals
  !              "tpss"   TPSS Meta-GGA                  imeta=1
  !              "m6lx"   M06L Meta-GGA                  imeta=2
  !              "tb09"   TB09 Meta-GGA                  imeta=3
  !              "+meta"  activate MGGA even without MGGA-XC   imeta=4
  !              "scan"   SCAN Meta-GGA                  imeta=5
  !              "sca0"   SCAN0  Meta-GGA                imeta=6
  !              "r2scan" R2SCAN Meta-GGA                imeta=7
  !
  ! van der Waals functionals (nonlocal term only)
  !              "nonlc"  none                           inlc =0 (default)
  !--------------inlc = 1 to inlc = 25 reserved for vdW-DF--------------
  !              "vdw1"   vdW-DF1                        inlc =1
  !              "vdw2"   vdW-DF2                        inlc =2
  !              "w31c"   vdW-DF3-opt1                   inlc =3
  !              "w32c"   vdW-DF3-opt2                   inlc =4
  !              "wc6"    vdW-DF-C6                      inlc =5
  !---------------------------------------------------------------------
  !              "vv10"   rVV10                          inlc =26
  !
  ! Meta-GGA with van der Waals
  !              "rvv10-scan" rVV10 (with b=15.7) and scan inlc=26 (PRX 6, 041005 (2016))
  !
  ! Note: as a rule, all keywords should be unique, and should be different
  ! from the short name, but there are a few exceptions.
  !
  ! References:
  !              pz      J.P.Perdew and A.Zunger, PRB 23, 5048 (1981)
  !              vwn     S.H.Vosko, L.Wilk, M.Nusair, Can.J.Phys. 58,1200(1980)
  !              vwn1-rpa S.H.Vosko, L.Wilk, M.Nusair, Can.J.Phys. 58,1200(1980)
  !              wig     E.P.Wigner, Trans. Faraday Soc. 34, 67 (1938)
  !              hl      L.Hedin and B.I.Lundqvist, J. Phys. C4, 2064 (1971)
  !              gl      O.Gunnarsson and B.I.Lundqvist, PRB 13, 4274 (1976)
  !              pw      J.P.Perdew and Y.Wang, PRB 45, 13244 (1992)
  !              obpz    G.Ortiz and P.Ballone, PRB 50, 1391 (1994)
  !              obpw    as above
  !              b88     A.D.Becke, PRA 38, 3098 (1988)
  !              p86     J.P.Perdew, PRB 33, 8822 (1986)
  !              pw86    J.P.Perdew, PRB 33, 8800 (1986)
  !              b86b    A.D.Becke, J.Chem.Phys. 85, 7184 (1986)
  !              ob86    Klimes, Bowler, Michaelides, PRB 83, 195131 (2011)
  !              b86r    I. Hamada, Phys. Rev. B 89, 121103(R) (2014)
  !              w31x    D. Chakraborty, K. Berland, and T. Thonhauser, JCTC 16, 5893 (2020)
  !              w32x    D. Chakraborty, K. Berland, and T. Thonhauser, JCTC 16, 5893 (2020)
  !              pbe     J.P.Perdew, K.Burke, M.Ernzerhof, PRL 77, 3865 (1996)
  !              pw91    J.P.Perdew and Y. Wang, PRB 46, 6671 (1992)
  !              blyp    C.Lee, W.Yang, R.G.Parr, PRB 37, 785 (1988)
  !              hcth    Handy et al, JCP 109, 6264 (1998)
  !              olyp    Handy et al, JCP 116, 5411 (2002)
  !              revPBE  Zhang and Yang, PRL 80, 890 (1998)
  !              pbesol  J.P. Perdew et al., PRL 100, 136406 (2008)
  !              q2d     L. Chiodo et al., PRL 108, 126402 (2012)
  !              rw86    Eamonn D. Murray et al, J. Chem. Theory Comput. 5, 2754 (2009)
  !              wc      Z. Wu and R. E. Cohen, PRB 73, 235116 (2006)
  !              kzk     H.Kwee, S. Zhang, H. Krakauer, PRL 100, 126404 (2008)
  !              pbe0    J.P.Perdew, M. Ernzerhof, K.Burke, JCP 105, 9982 (1996)
  !              hse     Heyd, Scuseria, Ernzerhof, J. Chem. Phys. 118, 8207 (2003)
  !                      Heyd, Scuseria, Ernzerhof, J. Chem. Phys. 124, 219906 (2006).
  !              b3lyp   P.J. Stephens,F.J. Devlin,C.F. Chabalowski,M.J. Frisch
  !                      J.Phys.Chem 98, 11623 (1994)
  !              x3lyp   X. Xu, W.A Goddard III, PNAS 101, 2673 (2004)
  !              vdW-DF       M. Dion et al., PRL 92, 246401 (2004)
  !                           T. Thonhauser et al., PRL 115, 136402 (2015)
  !              vdW-DF2      Lee et al., Phys. Rev. B 82, 081101 (2010)
  !              rev-vdW-DF2  I. Hamada, Phys. Rev. B 89, 121103(R) (2014)
  !              vdW-DF-cx    K. Berland and P. Hyldgaard, PRB 89, 035412 (2014)
  !              vdW-DF-cx0   K. Berland, Y. Jiao, J.-H. Lee, T. Rangel, J. B. Neaton and P. Hyldgaard,
  !                           J. Chem. Phys. 146, 234106 (2017)
  !              vdW-DF-cx0p  Y. Jiao, E. Schröder and P. Hyldgaard, 
  !                           J. Chem. Phys. 148, 194115 (2018)
  !              vdW-DF-obk8  Klimes et al, J. Phys. Cond. Matter, 22, 022201 (2010)
  !              vdW-DF-ob86  Klimes et al, Phys. Rev. B, 83, 195131 (2011)
  !              vdW-DF3-opt1 D. Chakraborty, K. Berland, and T. Thonhauser, JCTC 16, 5893 (2020)
  !              vdW-DF3-opt2 D. Chakraborty, K. Berland, and T. Thonhauser, JCTC 16, 5893 (2020)
  !              vdW-DF-C6    K. Berland, D. Chakraborty, and T. Thonhauser, PRB 99, 195418 (2019)
  !              c09x    V. R. Cooper, Phys. Rev. B 81, 161104(R) (2010)
  !              tpss    J.Tao, J.P.Perdew, V.N.Staroverov, G.E. Scuseria,
  !                      PRL 91, 146401 (2003)
  !              tb09    F Tran and P Blaha, Phys.Rev.Lett. 102, 226401 (2009)
  !              scan    J Sun, A Ruzsinszky and J Perdew, PRL 115, 36402 (2015)
  !              scan0   K Hui and J-D. Chai, JCP 144, 44114 (2016)
  !              r2scan  J. W. Furness, A. D. Kaplan, J. Ning, J. P. Perdew,
  !                      and J. Sun, JPCL 11, 8208 (2020)
  !              sogga   Y. Zhao and D. G. Truhlar, JCP 128, 184109 (2008)
  !              m06l    Y. Zhao and D. G. Truhlar, JCP 125, 194101 (2006)
  !              gau-pbe J.-W. Song, K. Yamashita, K. Hirao JCP 135, 071103 (2011)
  !              rVV10   R. Sabatini et al. Phys. Rev. B 87, 041108(R) (2013)
  !              ev93     Engel-Vosko, Phys. Rev. B 47, 13164 (1993)
  !              vdW-DF-ahcx V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
  !              vdW-DF2-ah V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
  !              PBE-ah V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
  !              PBESOL-ah V. Shukla, Y. Jiao, iC. M. Frostenson, and P. Hyldgaard, JPCM 34, 025902 (2022)
  !
  ! NOTE ABOUT HSE: there are two slight deviations with respect to the HSE06
  ! functional as it is in Gaussian code (that is considered as the reference
  ! in the chemistry community):
  ! - The range separation in Gaussian is precisely 0.11 bohr^-1,
  !   instead of 0.106 bohr^-1 in this implementation
  ! - The gradient scaling relation is a bit more complicated
  !   [ see: TM Henderson, AF Izmaylov, G Scalmani, and GE Scuseria,
  !          J. Chem. Phys. 131, 044108 (2009) ]
  ! These two modifications accounts only for a 1e-5 Ha difference for a
  ! single He atom. Info by Fabien Bruneval.
  !
  ! NOTE FOR LIBXC USERS: to use libxc functionals you must enforce them from input (use
  ! 'input_dft' in &system) and write their IDs in the input string. The only notation
  ! now allowed (v7.0) for input DFTs containing Libxc terms is:
  ! XC-000i-000i-000i-000i-000i-000i
  ! where you put the functional IDs instead of the zeros and an 'L' instead of
  ! 'i' if the functional is from Libxc. The order is the usual one:  
  ! LDAexch - LDAcorr - GGAexch - GGAcorr - MGGAexch - MGGAcorr  
  ! however QE will automatically adjust it if needed. You can skip zero tails (e.g.
  ! you don't need GGA/MGGA slots if the dft is LDA only and so on.
  ! You can use combinations of qe and libxc functionals, when they are compatible.
  ! You can also add vdW terms after it, for example, sla+pw+rw86+vdw2 is:
  ! input_dft='XC-001i-004i-013i-vdw2'.
  ! For more details see the user_guide (in 'Doc' folder).

Valid values through LibXC (source LibXC-5.1.2: libxc_inc.f90)

To call a functional via Libxc, you must use a rigid 6-position string format: XC-LDAx-LDAc-GGAx-GGAc-MGGAx-MGGAc

Each slot must be filled with a specific 3-digit Libxc ID followed by an ‘L’ (e.g., 101L for the Perdew-Burke-Ernzerhof exchange, XC_GGA_X_PBE). If a component is not required by your functional’s recipe, you must fill that exact slot with 000I to represent an empty internal value. Intercalating internal (‘I’) and external (‘L’) flags within the same exchange or correlation blocks is not allowed. You can find all the supported IDs in the following source file:

Click to view the source code
  integer(c_int), parameter, public :: XC_HYB_LDA_XC_LDA0             = 177  ! LDA0: hybrid LDA exchange
  integer(c_int), parameter, public :: XC_HYB_LDA_XC_CAM_LDA0         = 178  ! CAM version of LDA0
  integer(c_int), parameter, public :: XC_LDA_X                       =   1  ! Exchange
  integer(c_int), parameter, public :: XC_LDA_C_WIGNER                =   2  ! Wigner parametrization
  integer(c_int), parameter, public :: XC_LDA_C_RPA                   =   3  ! Random Phase Approximation
  integer(c_int), parameter, public :: XC_LDA_C_HL                    =   4  ! Hedin & Lundqvist
  integer(c_int), parameter, public :: XC_LDA_C_GL                    =   5  !  Gunnarson & Lundqvist
  integer(c_int), parameter, public :: XC_LDA_C_XALPHA                =   6  !  Slater Xalpha
  integer(c_int), parameter, public :: XC_LDA_C_VWN                   =   7  ! Vosko, Wilk, & Nusair (5)
  integer(c_int), parameter, public :: XC_LDA_C_VWN_RPA               =   8  ! Vosko, Wilk, & Nusair (RPA)
  integer(c_int), parameter, public :: XC_LDA_C_PZ                    =   9  ! Perdew & Zunger
  integer(c_int), parameter, public :: XC_LDA_C_PZ_MOD                =  10  !  Perdew & Zunger (Modified)
  integer(c_int), parameter, public :: XC_LDA_C_OB_PZ                 =  11  !  Ortiz & Ballone (PZ)
  integer(c_int), parameter, public :: XC_LDA_C_PW                    =  12  ! Perdew & Wang
  integer(c_int), parameter, public :: XC_LDA_C_PW_MOD                =  13  !  Perdew & Wang (Modified)
  integer(c_int), parameter, public :: XC_LDA_C_OB_PW                 =  14  !  Ortiz & Ballone (PW)
  integer(c_int), parameter, public :: XC_LDA_C_2D_AMGB               =  15  ! Attaccalite et al
  integer(c_int), parameter, public :: XC_LDA_C_2D_PRM                =  16  ! Pittalis, Rasanen & Marques correlation in 2D
  integer(c_int), parameter, public :: XC_LDA_C_VBH                   =  17  !  von Barth & Hedin
  integer(c_int), parameter, public :: XC_LDA_C_1D_CSC                =  18  ! Casula, Sorella, and Senatore 1D correlation
  integer(c_int), parameter, public :: XC_LDA_X_2D                    =  19  ! Exchange in 2D
  integer(c_int), parameter, public :: XC_LDA_XC_TETER93              =  20  ! Teter 93 parametrization
  integer(c_int), parameter, public :: XC_LDA_X_1D_SOFT               =  21  ! Exchange in 1D for a soft-Coulomb interaction
  integer(c_int), parameter, public :: XC_LDA_C_ML1                   =  22  ! Modified LSD (version 1) of Proynov and Salahub
  integer(c_int), parameter, public :: XC_LDA_C_ML2                   =  23  !  Modified LSD (version 2) of Proynov and Salahub
  integer(c_int), parameter, public :: XC_LDA_C_GOMBAS                =  24  ! Gombas parametrization
  integer(c_int), parameter, public :: XC_LDA_C_PW_RPA                =  25  !  Perdew & Wang fit of the RPA
  integer(c_int), parameter, public :: XC_LDA_C_1D_LOOS               =  26  ! P-F Loos correlation LDA
  integer(c_int), parameter, public :: XC_LDA_C_RC04                  =  27  ! Ragot-Cortona
  integer(c_int), parameter, public :: XC_LDA_C_VWN_1                 =  28  ! Vosko, Wilk, & Nusair (1)
  integer(c_int), parameter, public :: XC_LDA_C_VWN_2                 =  29  ! Vosko, Wilk, & Nusair (2)
  integer(c_int), parameter, public :: XC_LDA_C_VWN_3                 =  30  ! Vosko, Wilk, & Nusair (3)
  integer(c_int), parameter, public :: XC_LDA_C_VWN_4                 =  31  ! Vosko, Wilk, & Nusair (4)
  integer(c_int), parameter, public :: XC_LDA_XC_ZLP                  =  43  ! Zhao, Levy & Parr, Eq. (20)
  integer(c_int), parameter, public :: XC_LDA_K_TF                    =  50  ! Thomas-Fermi kinetic energy functional
  integer(c_int), parameter, public :: XC_LDA_K_LP                    =  51  !  Lee and Parr Gaussian ansatz
  integer(c_int), parameter, public :: XC_LDA_XC_KSDT                 = 259  ! Karasiev et al. parametrization
  integer(c_int), parameter, public :: XC_LDA_C_CHACHIYO              = 287  ! Chachiyo simple 2 parameter correlation
  integer(c_int), parameter, public :: XC_LDA_C_LP96                  = 289  ! Liu-Parr correlation
  integer(c_int), parameter, public :: XC_LDA_C_CHACHIYO_MOD          = 307  ! Chachiyo simple 2 parameter correlation with modified scaling
  integer(c_int), parameter, public :: XC_LDA_C_KARASIEV_MOD          = 308  !  Karasiev reparameterization of Chachiyo with modified scaling
  integer(c_int), parameter, public :: XC_LDA_C_W20                   = 317  ! Xie, Wu, and Zhao correlation
  integer(c_int), parameter, public :: XC_LDA_X_REL                   = 532  ! Relativistic exchange
  integer(c_int), parameter, public :: XC_LDA_XC_1D_EHWLRG_1          = 536  ! LDA constructed from slab-like systems of 1 electron
  integer(c_int), parameter, public :: XC_LDA_XC_1D_EHWLRG_2          = 537  !  LDA constructed from slab-like systems of 2 electrons
  integer(c_int), parameter, public :: XC_LDA_XC_1D_EHWLRG_3          = 538  !  LDA constructed from slab-like systems of 3 electrons
  integer(c_int), parameter, public :: XC_LDA_X_ERF                   = 546  ! Attenuated exchange LDA (erf)
  integer(c_int), parameter, public :: XC_LDA_XC_LP_A                 = 547  !  Lee-Parr reparametrization A
  integer(c_int), parameter, public :: XC_LDA_XC_LP_B                 = 548  !  Lee-Parr reparametrization B
  integer(c_int), parameter, public :: XC_LDA_X_RAE                   = 549  !  Rae self-energy corrected exchange
  integer(c_int), parameter, public :: XC_LDA_K_ZLP                   = 550  ! kinetic energy version of ZLP
  integer(c_int), parameter, public :: XC_LDA_C_MCWEENY               = 551  !  McWeeny 76
  integer(c_int), parameter, public :: XC_LDA_C_BR78                  = 552  !  Brual & Rothstein 78
  integer(c_int), parameter, public :: XC_LDA_C_PK09                  = 554  ! Proynov and Kong 2009
  integer(c_int), parameter, public :: XC_LDA_C_OW_LYP                = 573  !  Wigner with corresponding LYP parameters
  integer(c_int), parameter, public :: XC_LDA_C_OW                    = 574  !  Optimized Wigner
  integer(c_int), parameter, public :: XC_LDA_XC_GDSMFB               = 577  !  Groth et al. parametrization
  integer(c_int), parameter, public :: XC_LDA_C_GK72                  = 578  ! Gordon and Kim 1972
  integer(c_int), parameter, public :: XC_LDA_C_KARASIEV              = 579  !  Karasiev reparameterization of Chachiyo
  integer(c_int), parameter, public :: XC_LDA_K_LP96                  = 580  !  Liu-Parr kinetic
  integer(c_int), parameter, public :: XC_LDA_XC_BN05                 = 588  ! Baer and Neuhauser, gamma=1
  integer(c_int), parameter, public :: XC_LDA_C_PMGB06                = 590  ! Long-range LDA correlation functional
  integer(c_int), parameter, public :: XC_LDA_XC_TIH                  = 599  ! Neural network LDA from Tozer et al
  integer(c_int), parameter, public :: XC_LDA_X_1D_EXPONENTIAL        = 600  ! Exchange in 1D for an exponentially screened interaction
  integer(c_int), parameter, public :: XC_LDA_C_UPW92                 = 683  !  Ruggeri, Rios, and Alavi unrestricted fit
  integer(c_int), parameter, public :: XC_LDA_C_RPW92                 = 684  !  Ruggeri, Rios, and Alavi restricted fit
  integer(c_int), parameter, public :: XC_LDA_X_SLOC                  = 692  ! simple local model for Slater potential
  integer(c_int), parameter, public :: XC_HYB_GGA_X_N12_SX            =  81  ! N12-SX functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B97_1P           = 266  !  version of B97 by Cohen and Handy
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_PBE_MOL0         = 273  !  PBEmol0
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_PBE_SOL0         = 274  !  PBEsol0
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_PBEB0            = 275  !  PBEbeta0
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_PBE_MOLB0        = 276  !  PBEmolbeta0
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_PBE50            = 290  !  PBE0 with 50% exx
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HFLYP            = 314  ! Hartree-Fock + LYP correlation
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAM_O3LYP        = 395  ! range separated hybrid based on the optx functional
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WB97X_D3         = 399  !  Lin et al
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_BLYP          = 400  ! Long-range corrected BLYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B3PW91           = 401  ! The original (ACM) hybrid of Becke
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B3LYP            = 402  !  The (in)famous B3LYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B3P86            = 403  !  Perdew 86 hybrid similar to B3PW91
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_O3LYP            = 404  ! hybrid using the optx functional
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MPW1K            = 405  !  mixture of mPW91 and PW91 optimized for kinetics
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_PBEH             = 406  ! aka PBE0 or PBE1PBE
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B97              = 407  ! Becke 97
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B97_1            = 408  !  Becke 97-1
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_APF              = 409  !  APF hybrid density functional
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B97_2            = 410  !  Becke 97-2
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_X3LYP            = 411  !  hybrid by Xu and Goddard
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B1WC             = 412  ! Becke 1-parameter mixture of WC and PBE
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B97_K            = 413  !  Boese-Martin for Kinetics
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B97_3            = 414  !  Becke 97-3
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MPW3PW           = 415  !  mixture with the mPW functional
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B1LYP            = 416  !  Becke 1-parameter mixture of B88 and LYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B1PW91           = 417  !  Becke 1-parameter mixture of B88 and PW91
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MPW1PW           = 418  !  Becke 1-parameter mixture of mPW91 and PW91
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MPW3LYP          = 419  !  mixture of mPW and LYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_SB98_1A          = 420  !  Schmider-Becke 98 parameterization 1a
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_SB98_1B          = 421  !  Schmider-Becke 98 parameterization 1b
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_SB98_1C          = 422  !  Schmider-Becke 98 parameterization 1c
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_SB98_2A          = 423  !  Schmider-Becke 98 parameterization 2a
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_SB98_2B          = 424  !  Schmider-Becke 98 parameterization 2b
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_SB98_2C          = 425  !  Schmider-Becke 98 parameterization 2c
  integer(c_int), parameter, public :: XC_HYB_GGA_X_SOGGA11_X         = 426  ! Hybrid based on SOGGA11 form
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HSE03            = 427  ! the 2003 version of the screened hybrid HSE
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HSE06            = 428  !  the 2006 version of the screened hybrid HSE
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HJS_PBE          = 429  !  HJS hybrid screened exchange PBE version
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HJS_PBE_SOL      = 430  !  HJS hybrid screened exchange PBE_SOL version
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HJS_B88          = 431  !  HJS hybrid screened exchange B88 version
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HJS_B97X         = 432  !  HJS hybrid screened exchange B97x version
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAM_B3LYP        = 433  ! CAM version of B3LYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_TUNED_CAM_B3LYP  = 434  !  CAM version of B3LYP tuned for excitations
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_BHANDH           = 435  !  Becke half-and-half or BHLYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_BHANDHLYP        = 436  !  Becke half-and-half with B88 exchange
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MB3LYP_RC04      = 437  !  B3LYP with RC04 LDA
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MPWLYP1M         = 453  !  MPW with 1 par. for metals/LYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_REVB3LYP         = 454  !  Revised B3LYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAMY_BLYP        = 455  ! BLYP with yukawa screening
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_PBE0_13          = 456  !  PBE0-1/3
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B3LYPS           = 459  !  B3LYP* functional
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_QTP17            = 460  !  global hybrid for vertical ionization potentials
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B3LYP_MCM1       = 461  !  B3LYP reoptimized in 6-31+G(2df,p) for enthalpies of formation
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B3LYP_MCM2       = 462  !  B3LYP reoptimized in 6-31+G(2df,p) for enthalpies of formation
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WB97             = 463  ! Chai and Head-Gordon
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WB97X            = 464  !  Chai and Head-Gordon
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LRC_WPBEH        = 465  !  Long-range corrected functional by Rorhdanz et al
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WB97X_V          = 466  !  Mardirossian and Head-Gordon
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LCY_PBE          = 467  ! PBE with yukawa screening
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LCY_BLYP         = 468  ! BLYP with yukawa screening
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_VV10          = 469  ! Vydrov and Van Voorhis
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAMY_B3LYP       = 470  ! B3LYP with Yukawa screening
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WB97X_D          = 471  !  Chai and Head-Gordon
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HPBEINT          = 472  !  hPBEint
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LRC_WPBE         = 473  !  Long-range corrected functional by Rorhdanz et al
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B3LYP5           = 475  !  B3LYP with VWN functional 5 instead of RPA
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_EDF2             = 476  ! Empirical functional from Lin, George and Gill
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAP0             = 477  ! Correct Asymptotic Potential hybrid
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_WPBE          = 478  !  Long-range corrected functional by Vydrov and Scuseria
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HSE12            = 479  !  HSE12 by Moussa, Schultz and Chelikowsky
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HSE12S           = 480  !  Short-range HSE12 by Moussa, Schultz, and Chelikowsky
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HSE_SOL          = 481  !  HSEsol functional by Schimka, Harl, and Kresse
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAM_QTP_01       = 482  !  CAM-QTP-01
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MPW1LYP          = 483  !  Becke 1-parameter mixture of mPW91 and LYP
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_MPW1PBE          = 484  !  Becke 1-parameter mixture of mPW91 and PBE
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_KMLYP            = 485  !  Kang-Musgrave hybrid
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_WPBE_WHS      = 486  !  Long-range corrected functional by Weintraub, Henderson and Scuseria
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_WPBEH_WHS     = 487  !  Long-range corrected functional by Weintraub, Henderson and Scuseria
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_WPBE08_WHS    = 488  !  Long-range corrected functional by Weintraub, Henderson and Scuseria
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_WPBESOL_WHS   = 489  !  Long-range corrected functional by Weintraub, Henderson and Scuseria
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAM_QTP_00       = 490  !  CAM-QTP-00
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAM_QTP_02       = 491  !  CAM-QTP-02
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_QTP           = 492  !  LC-QTP
  integer(c_int), parameter, public :: XC_HYB_GGA_X_S12H              = 496  ! Swart 2012 GGA hybrid exchange
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_BLYP35           = 499  !  Becke 1-parameter mixture for mixed-valence systems
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_B5050LYP         = 572  !  Like B3LYP but more exact exchange
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_APBE0            = 607  ! Hybrid based on APBE
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_HAPBE            = 608  !  Hybrid based in APBE and zvPBEloc
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_RCAM_B3LYP       = 610  !  Similar to CAM-B3LYP, but trying to reduce the many-electron self-interaction
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WC04             = 611  !  hybrid fitted to carbon NMR shifts
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WP04             = 612  !  hybrid fitted to proton NMR shifts
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAMH_B3LYP       = 614  !  CAM version of B3LYP tuned for tddft
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_WHPBE0           = 615  !  Long-range corrected functional by Shao et al
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_BLYP_EA       = 625  !  Long-range corrected BLYP, tuned for electron affinities
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_BOP           = 636  !  Long-range corrected B88 with B88OP correlation
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_PBEOP         = 637  !  Long-range corrected PBE with PBEOP correlation
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_LC_BLYPR         = 639  !  Long-range corrected BLYP with correlation only in short-range
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAM_PBEH         = 681  !  CAM version of PBEH
  integer(c_int), parameter, public :: XC_HYB_GGA_XC_CAMY_PBEH        = 682  !  PBEH with Yukawa screening
  integer(c_int), parameter, public :: XC_GGA_X_GAM                   =  32  !  GAM functional from Minnesota
  integer(c_int), parameter, public :: XC_GGA_C_GAM                   =  33  !  GAM functional from Minnesota
  integer(c_int), parameter, public :: XC_GGA_X_HCTH_A                =  34  ! HCTH-A
  integer(c_int), parameter, public :: XC_GGA_X_EV93                  =  35  ! Engel and Vosko
  integer(c_int), parameter, public :: XC_GGA_X_BCGP                  =  38  !  Burke, Cancio, Gould, and Pittalis
  integer(c_int), parameter, public :: XC_GGA_C_ACGGA                 =  39  ! acGGA, asymptotically corrected GGA
  integer(c_int), parameter, public :: XC_GGA_X_LAMBDA_OC2_N          =  40  !  lambda_OC2(N) version of PBE
  integer(c_int), parameter, public :: XC_GGA_X_B86_R                 =  41  !  Revised Becke 86 Xalpha,beta,gamma (with mod. grad. correction)
  integer(c_int), parameter, public :: XC_GGA_X_LAMBDA_CH_N           =  44  !  lambda_CH(N) version of PBE
  integer(c_int), parameter, public :: XC_GGA_X_LAMBDA_LO_N           =  45  !  lambda_LO(N) version of PBE
  integer(c_int), parameter, public :: XC_GGA_X_HJS_B88_V2            =  46  ! HJS screened exchange corrected B88 version
  integer(c_int), parameter, public :: XC_GGA_C_Q2D                   =  47  ! Chiodo et al
  integer(c_int), parameter, public :: XC_GGA_X_Q2D                   =  48  ! Chiodo et al
  integer(c_int), parameter, public :: XC_GGA_X_PBE_MOL               =  49  !  Del Campo, Gazquez, Trickey and Vela (PBE-like)
  integer(c_int), parameter, public :: XC_GGA_K_TFVW                  =  52  ! Thomas-Fermi plus von Weiszaecker correction
  integer(c_int), parameter, public :: XC_GGA_K_REVAPBEINT            =  53  !  interpolated version of REVAPBE
  integer(c_int), parameter, public :: XC_GGA_K_APBEINT               =  54  ! interpolated version of APBE
  integer(c_int), parameter, public :: XC_GGA_K_REVAPBE               =  55  !  revised APBE
  integer(c_int), parameter, public :: XC_GGA_X_AK13                  =  56  ! Armiento & Kuemmel 2013
  integer(c_int), parameter, public :: XC_GGA_K_MEYER                 =  57  ! Meyer,  Wang, and Young
  integer(c_int), parameter, public :: XC_GGA_X_LV_RPW86              =  58  ! Berland and Hyldgaard
  integer(c_int), parameter, public :: XC_GGA_X_PBE_TCA               =  59  !  PBE revised by Tognetti et al
  integer(c_int), parameter, public :: XC_GGA_X_PBEINT                =  60  ! PBE for hybrid interfaces
  integer(c_int), parameter, public :: XC_GGA_C_ZPBEINT               =  61  ! spin-dependent gradient correction to PBEint
  integer(c_int), parameter, public :: XC_GGA_C_PBEINT                =  62  !  PBE for hybrid interfaces
  integer(c_int), parameter, public :: XC_GGA_C_ZPBESOL               =  63  !  spin-dependent gradient correction to PBEsol
  integer(c_int), parameter, public :: XC_GGA_XC_OPBE_D               =  65  !  oPBE_D functional of Goerigk and Grimme
  integer(c_int), parameter, public :: XC_GGA_XC_OPWLYP_D             =  66  !  oPWLYP-D functional of Goerigk and Grimme
  integer(c_int), parameter, public :: XC_GGA_XC_OBLYP_D              =  67  ! oBLYP-D functional of Goerigk and Grimme
  integer(c_int), parameter, public :: XC_GGA_X_VMT84_GE              =  68  !  VMT{8,4} with constraint satisfaction with mu = mu_GE
  integer(c_int), parameter, public :: XC_GGA_X_VMT84_PBE             =  69  ! VMT{8,4} with constraint satisfaction with mu = mu_PBE
  integer(c_int), parameter, public :: XC_GGA_X_VMT_GE                =  70  !  Vela, Medel, and Trickey with mu = mu_GE
  integer(c_int), parameter, public :: XC_GGA_X_VMT_PBE               =  71  ! Vela, Medel, and Trickey with mu = mu_PBE
  integer(c_int), parameter, public :: XC_GGA_C_N12_SX                =  79  !  N12-SX functional from Minnesota
  integer(c_int), parameter, public :: XC_GGA_C_N12                   =  80  ! N12 functional from Minnesota
  integer(c_int), parameter, public :: XC_GGA_X_N12                   =  82  ! N12 functional from Minnesota
  integer(c_int), parameter, public :: XC_GGA_C_REGTPSS               =  83  ! Regularized TPSS correlation (ex-VPBE)
  integer(c_int), parameter, public :: XC_GGA_C_OP_XALPHA             =  84  ! one-parameter progressive functional (XALPHA version)
  integer(c_int), parameter, public :: XC_GGA_C_OP_G96                =  85  ! one-parameter progressive functional (G96 version)
  integer(c_int), parameter, public :: XC_GGA_C_OP_PBE                =  86  ! one-parameter progressive functional (PBE version)
  integer(c_int), parameter, public :: XC_GGA_C_OP_B88                =  87  ! one-parameter progressive functional (B88 version)
  integer(c_int), parameter, public :: XC_GGA_C_FT97                  =  88  ! Filatov & Thiel correlation
  integer(c_int), parameter, public :: XC_GGA_C_SPBE                  =  89  !  PBE correlation to be used with the SSB exchange
  integer(c_int), parameter, public :: XC_GGA_X_SSB_SW                =  90  ! Swart, Sola and Bickelhaupt correction to PBE
  integer(c_int), parameter, public :: XC_GGA_X_SSB                   =  91  !  Swart, Sola and Bickelhaupt
  integer(c_int), parameter, public :: XC_GGA_X_SSB_D                 =  92  !  Swart, Sola and Bickelhaupt dispersion
  integer(c_int), parameter, public :: XC_GGA_XC_HCTH_407P            =  93  !  HCTH/407+
  integer(c_int), parameter, public :: XC_GGA_XC_HCTH_P76             =  94  !  HCTH p=7/6
  integer(c_int), parameter, public :: XC_GGA_XC_HCTH_P14             =  95  !  HCTH p=1/4
  integer(c_int), parameter, public :: XC_GGA_XC_B97_GGA1             =  96  !  Becke 97 GGA-1
  integer(c_int), parameter, public :: XC_GGA_C_HCTH_A                =  97  ! HCTH-A
  integer(c_int), parameter, public :: XC_GGA_X_BPCCAC                =  98  ! BPCCAC (GRAC for the energy)
  integer(c_int), parameter, public :: XC_GGA_C_REVTCA                =  99  ! Tognetti, Cortona, Adamo (revised)
  integer(c_int), parameter, public :: XC_GGA_C_TCA                   = 100  ! Tognetti, Cortona, Adamo
  integer(c_int), parameter, public :: XC_GGA_X_PBE                   = 101  ! Perdew, Burke & Ernzerhof exchange
  integer(c_int), parameter, public :: XC_GGA_X_PBE_R                 = 102  !  Perdew, Burke & Ernzerhof exchange (revised)
  integer(c_int), parameter, public :: XC_GGA_X_B86                   = 103  ! Becke 86 Xalpha,beta,gamma
  integer(c_int), parameter, public :: XC_GGA_X_HERMAN                = 104  ! Herman et al original GGA
  integer(c_int), parameter, public :: XC_GGA_X_B86_MGC               = 105  !  Becke 86 Xalpha,beta,gamma (with mod. grad. correction)
  integer(c_int), parameter, public :: XC_GGA_X_B88                   = 106  ! Becke 88
  integer(c_int), parameter, public :: XC_GGA_X_G96                   = 107  ! Gill 96
  integer(c_int), parameter, public :: XC_GGA_X_PW86                  = 108  ! Perdew & Wang 86
  integer(c_int), parameter, public :: XC_GGA_X_PW91                  = 109  ! Perdew & Wang 91
  integer(c_int), parameter, public :: XC_GGA_X_OPTX                  = 110  ! Handy & Cohen OPTX 01
  integer(c_int), parameter, public :: XC_GGA_X_DK87_R1               = 111  ! dePristo & Kress 87 (version R1)
  integer(c_int), parameter, public :: XC_GGA_X_DK87_R2               = 112  !  dePristo & Kress 87 (version R2)
  integer(c_int), parameter, public :: XC_GGA_X_LG93                  = 113  ! Lacks & Gordon 93
  integer(c_int), parameter, public :: XC_GGA_X_FT97_A                = 114  ! Filatov & Thiel 97 (version A)
  integer(c_int), parameter, public :: XC_GGA_X_FT97_B                = 115  !  Filatov & Thiel 97 (version B)
  integer(c_int), parameter, public :: XC_GGA_X_PBE_SOL               = 116  !  Perdew, Burke & Ernzerhof exchange (solids)
  integer(c_int), parameter, public :: XC_GGA_X_RPBE                  = 117  ! Hammer, Hansen & Norskov (PBE-like)
  integer(c_int), parameter, public :: XC_GGA_X_WC                    = 118  ! Wu & Cohen
  integer(c_int), parameter, public :: XC_GGA_X_MPW91                 = 119  !  Modified form of PW91 by Adamo & Barone
  integer(c_int), parameter, public :: XC_GGA_X_AM05                  = 120  ! Armiento & Mattsson 05 exchange
  integer(c_int), parameter, public :: XC_GGA_X_PBEA                  = 121  ! Madsen (PBE-like)
  integer(c_int), parameter, public :: XC_GGA_X_MPBE                  = 122  ! Adamo & Barone modification to PBE
  integer(c_int), parameter, public :: XC_GGA_X_XPBE                  = 123  !  xPBE reparametrization by Xu & Goddard
  integer(c_int), parameter, public :: XC_GGA_X_2D_B86_MGC            = 124  ! Becke 86 MGC for 2D systems
  integer(c_int), parameter, public :: XC_GGA_X_BAYESIAN              = 125  ! Bayesian best fit for the enhancement factor
  integer(c_int), parameter, public :: XC_GGA_X_PBE_JSJR              = 126  !  JSJR reparametrization by Pedroza, Silva & Capelle
  integer(c_int), parameter, public :: XC_GGA_X_2D_B88                = 127  ! Becke 88 in 2D
  integer(c_int), parameter, public :: XC_GGA_X_2D_B86                = 128  ! Becke 86 Xalpha, beta, gamma
  integer(c_int), parameter, public :: XC_GGA_X_2D_PBE                = 129  ! Perdew, Burke & Ernzerhof exchange in 2D
  integer(c_int), parameter, public :: XC_GGA_C_PBE                   = 130  ! Perdew, Burke & Ernzerhof correlation
  integer(c_int), parameter, public :: XC_GGA_C_LYP                   = 131  ! Lee, Yang & Parr
  integer(c_int), parameter, public :: XC_GGA_C_P86                   = 132  ! Perdew 86
  integer(c_int), parameter, public :: XC_GGA_C_PBE_SOL               = 133  !  Perdew, Burke & Ernzerhof correlation SOL
  integer(c_int), parameter, public :: XC_GGA_C_PW91                  = 134  ! Perdew & Wang 91
  integer(c_int), parameter, public :: XC_GGA_C_AM05                  = 135  ! Armiento & Mattsson 05 correlation
  integer(c_int), parameter, public :: XC_GGA_C_XPBE                  = 136  !  xPBE reparametrization by Xu & Goddard
  integer(c_int), parameter, public :: XC_GGA_C_LM                    = 137  ! Langreth and Mehl correlation
  integer(c_int), parameter, public :: XC_GGA_C_PBE_JRGX              = 138  !  JRGX reparametrization by Pedroza, Silva & Capelle
  integer(c_int), parameter, public :: XC_GGA_X_OPTB88_VDW            = 139  !  Becke 88 reoptimized to be used with vdW functional of Dion et al
  integer(c_int), parameter, public :: XC_GGA_X_PBEK1_VDW             = 140  !  PBE reparametrization for vdW
  integer(c_int), parameter, public :: XC_GGA_X_OPTPBE_VDW            = 141  !  PBE reparametrization for vdW
  integer(c_int), parameter, public :: XC_GGA_X_RGE2                  = 142  ! Regularized PBE
  integer(c_int), parameter, public :: XC_GGA_C_RGE2                  = 143  !  Regularized PBE
  integer(c_int), parameter, public :: XC_GGA_X_RPW86                 = 144  !  refitted Perdew & Wang 86
  integer(c_int), parameter, public :: XC_GGA_X_KT1                   = 145  ! Exchange part of Keal and Tozer version 1
  integer(c_int), parameter, public :: XC_GGA_XC_KT2                  = 146  !  Keal and Tozer version 2
  integer(c_int), parameter, public :: XC_GGA_C_WL                    = 147  ! Wilson & Levy
  integer(c_int), parameter, public :: XC_GGA_C_WI                    = 148  !  Wilson & Ivanov
  integer(c_int), parameter, public :: XC_GGA_X_MB88                  = 149  !  Modified Becke 88 for proton transfer
  integer(c_int), parameter, public :: XC_GGA_X_SOGGA                 = 150  !  Second-order generalized gradient approximation
  integer(c_int), parameter, public :: XC_GGA_X_SOGGA11               = 151  ! Second-order generalized gradient approximation 2011
  integer(c_int), parameter, public :: XC_GGA_C_SOGGA11               = 152  ! SOGGA11 correlation
  integer(c_int), parameter, public :: XC_GGA_C_WI0                   = 153  ! Wilson & Ivanov initial version
  integer(c_int), parameter, public :: XC_GGA_XC_TH1                  = 154  !  Tozer and Handy v. 1
  integer(c_int), parameter, public :: XC_GGA_XC_TH2                  = 155  ! Tozer and Handy v. 2
  integer(c_int), parameter, public :: XC_GGA_XC_TH3                  = 156  ! Tozer and Handy v. 3
  integer(c_int), parameter, public :: XC_GGA_XC_TH4                  = 157  !  Tozer and Handy v. 4
  integer(c_int), parameter, public :: XC_GGA_X_C09X                  = 158  ! C09x to be used with the VdW of Rutgers-Chalmers
  integer(c_int), parameter, public :: XC_GGA_C_SOGGA11_X             = 159  !  SOGGA11-X correlation
  integer(c_int), parameter, public :: XC_GGA_X_LB                    = 160  ! van Leeuwen & Baerends
  integer(c_int), parameter, public :: XC_GGA_XC_HCTH_93              = 161  !  HCTH functional fitted to  93 molecules
  integer(c_int), parameter, public :: XC_GGA_XC_HCTH_120             = 162  !  HCTH functional fitted to 120 molecules
  integer(c_int), parameter, public :: XC_GGA_XC_HCTH_147             = 163  !  HCTH functional fitted to 147 molecules
  integer(c_int), parameter, public :: XC_GGA_XC_HCTH_407             = 164  !  HCTH functional fitted to 407 molecules
  integer(c_int), parameter, public :: XC_GGA_XC_EDF1                 = 165  ! Empirical functionals from Adamson, Gill, and Pople
  integer(c_int), parameter, public :: XC_GGA_XC_XLYP                 = 166  ! XLYP functional
  integer(c_int), parameter, public :: XC_GGA_XC_KT1                  = 167  !  Keal and Tozer version 1
  integer(c_int), parameter, public :: XC_GGA_X_LSPBE                 = 168  ! PW91-like exchange with simple analytical form
  integer(c_int), parameter, public :: XC_GGA_X_LSRPBE                = 169  ! PW91-like modification of RPBE
  integer(c_int), parameter, public :: XC_GGA_XC_B97_D                = 170  ! Grimme functional to be used with C6 vdW term
  integer(c_int), parameter, public :: XC_GGA_X_OPTB86B_VDW           = 171  !  Becke 86 reoptimized for use with vdW functional of Dion et al
  integer(c_int), parameter, public :: XC_GGA_XC_PBE1W                = 173  !  Functionals fitted for water
  integer(c_int), parameter, public :: XC_GGA_XC_MPWLYP1W             = 174  !  Functionals fitted for water
  integer(c_int), parameter, public :: XC_GGA_XC_PBELYP1W             = 175  !  Functionals fitted for water
  integer(c_int), parameter, public :: XC_GGA_C_ACGGAP                = 176  ! Asymptotically corrected GGA +
  integer(c_int), parameter, public :: XC_GGA_X_B88_6311G             = 179  !  Becke 88 reoptimized with 6-311G** basis set
  integer(c_int), parameter, public :: XC_GGA_X_NCAP                  = 180  ! Nearly correct asymptotic potential
  integer(c_int), parameter, public :: XC_GGA_XC_NCAP                 = 181  !  Nearly correct asymptotic potential + P86 correlation
  integer(c_int), parameter, public :: XC_GGA_X_LBM                   = 182  !  van Leeuwen & Baerends modified
  integer(c_int), parameter, public :: XC_GGA_X_OL2                   = 183  ! Exchange form based on Ou-Yang and Levy v.2
  integer(c_int), parameter, public :: XC_GGA_X_APBE                  = 184  !  mu fixed from the semiclassical neutral atom
  integer(c_int), parameter, public :: XC_GGA_K_APBE                  = 185  ! mu fixed from the semiclassical neutral atom
  integer(c_int), parameter, public :: XC_GGA_C_APBE                  = 186  !  mu fixed from the semiclassical neutral atom
  integer(c_int), parameter, public :: XC_GGA_K_TW1                   = 187  !  Tran and Wesolowski set 1 (Table II)
  integer(c_int), parameter, public :: XC_GGA_K_TW2                   = 188  !  Tran and Wesolowski set 2 (Table II)
  integer(c_int), parameter, public :: XC_GGA_K_TW3                   = 189  !  Tran and Wesolowski set 3 (Table II)
  integer(c_int), parameter, public :: XC_GGA_K_TW4                   = 190  !  Tran and Wesolowski set 4 (Table II)
  integer(c_int), parameter, public :: XC_GGA_X_HTBS                  = 191  ! Haas, Tran, Blaha, and Schwarz
  integer(c_int), parameter, public :: XC_GGA_X_AIRY                  = 192  ! Constantin et al based on the Airy gas
  integer(c_int), parameter, public :: XC_GGA_X_LAG                   = 193  ! Local Airy Gas
  integer(c_int), parameter, public :: XC_GGA_XC_MOHLYP               = 194  !  Functional for organometallic chemistry
  integer(c_int), parameter, public :: XC_GGA_XC_MOHLYP2              = 195  !  Functional for barrier heights
  integer(c_int), parameter, public :: XC_GGA_XC_TH_FL                = 196  ! Tozer and Handy v. FL
  integer(c_int), parameter, public :: XC_GGA_XC_TH_FC                = 197  !  Tozer and Handy v. FC
  integer(c_int), parameter, public :: XC_GGA_XC_TH_FCFO              = 198  !  Tozer and Handy v. FCFO
  integer(c_int), parameter, public :: XC_GGA_XC_TH_FCO               = 199  !  Tozer and Handy v. FCO
  integer(c_int), parameter, public :: XC_GGA_C_OPTC                  = 200  ! Optimized correlation functional of Cohen and Handy
  integer(c_int), parameter, public :: XC_GGA_X_ECMV92                = 215  !  Engel, Chevary, Macdonald, and Vosko
  integer(c_int), parameter, public :: XC_GGA_C_PBE_VWN               = 216  ! Perdew, Burke & Ernzerhof correlation based on VWN LDA
  integer(c_int), parameter, public :: XC_GGA_C_P86_FT                = 217  !  Perdew 86 with a more accurate value for ftilde
  integer(c_int), parameter, public :: XC_GGA_K_RATIONAL_P            = 218  ! Lehtomaki and Lopez-Acevedo
  integer(c_int), parameter, public :: XC_GGA_K_PG1                   = 219  ! PG1 functional by Constantin, Fabiano, and Della Sala
  integer(c_int), parameter, public :: XC_GGA_C_PBELOC                = 246  ! Semilocal dynamical correlation
  integer(c_int), parameter, public :: XC_GGA_C_P86VWN                = 252  ! Perdew 86 based on the VWN5 LDA
  integer(c_int), parameter, public :: XC_GGA_C_P86VWN_FT             = 253  !  Perdew 86 based on the VWN5 LDA with a more accurate value for ftilde
  integer(c_int), parameter, public :: XC_GGA_XC_VV10                 = 255  ! Vydrov and Van Voorhis
  integer(c_int), parameter, public :: XC_GGA_C_PBEFE                 = 258  !  PBE for formation energies
  integer(c_int), parameter, public :: XC_GGA_C_OP_PW91               = 262  ! one-parameter progressive functional (PW91 version)
  integer(c_int), parameter, public :: XC_GGA_X_PBEFE                 = 265  !  PBE for formation energies
  integer(c_int), parameter, public :: XC_GGA_X_CAP                   = 270  ! Correct Asymptotic Potential
  integer(c_int), parameter, public :: XC_GGA_X_EB88                  = 271  !  Non-empirical (excogitated) B88 functional of Becke and Elliott
  integer(c_int), parameter, public :: XC_GGA_C_PBE_MOL               = 272  !  Del Campo, Gazquez, Trickey and Vela (PBE-like)
  integer(c_int), parameter, public :: XC_GGA_K_ABSP3                 = 277  !  gamma-TFvW form by Acharya et al [g = 1 - 1.513/N^0.35]
  integer(c_int), parameter, public :: XC_GGA_K_ABSP4                 = 278  !  gamma-TFvW form by Acharya et al [g = l = 1/(1 + 1.332/N^(1/3))]
  integer(c_int), parameter, public :: XC_GGA_C_BMK                   = 280  !  Boese-Martin for kinetics
  integer(c_int), parameter, public :: XC_GGA_C_TAU_HCTH              = 281  !  correlation part of tau-hcth
  integer(c_int), parameter, public :: XC_GGA_C_HYB_TAU_HCTH          = 283  !  correlation part of hyb_tau-hcth
  integer(c_int), parameter, public :: XC_GGA_X_BEEFVDW               = 285  ! BEEF-vdW exchange
  integer(c_int), parameter, public :: XC_GGA_XC_BEEFVDW              = 286  !  BEEF-vdW exchange-correlation
  integer(c_int), parameter, public :: XC_GGA_X_PBETRANS              = 291  ! Gradient-based interpolation between PBE and revPBE
  integer(c_int), parameter, public :: XC_GGA_X_CHACHIYO              = 298  ! Chachiyo exchange
  integer(c_int), parameter, public :: XC_GGA_C_CHACHIYO              = 309  ! Chachiyo simple GGA correlation
  integer(c_int), parameter, public :: XC_GGA_X_REVSSB_D              = 312  !  Revised Swart, Sola and Bickelhaupt dispersion
  integer(c_int), parameter, public :: XC_GGA_C_CCDF                  = 313  ! ccDF, coupled-cluster based density functional
  integer(c_int), parameter, public :: XC_GGA_X_PW91_MOD              = 316  !  Perdew & Wang 91, alternate version with more digits
  integer(c_int), parameter, public :: XC_GGA_X_S12G                  = 495  ! Swart 2012 GGA exchange
  integer(c_int), parameter, public :: XC_GGA_K_VW                    = 500  !  von Weiszaecker functional
  integer(c_int), parameter, public :: XC_GGA_K_GE2                   = 501  !  Second-order gradient expansion (l = 1/9)
  integer(c_int), parameter, public :: XC_GGA_K_GOLDEN                = 502  !  TF-lambda-vW form by Golden (l = 13/45)
  integer(c_int), parameter, public :: XC_GGA_K_YT65                  = 503  !  TF-lambda-vW form by Yonei and Tomishima (l = 1/5)
  integer(c_int), parameter, public :: XC_GGA_K_BALTIN                = 504  !  TF-lambda-vW form by Baltin (l = 5/9)
  integer(c_int), parameter, public :: XC_GGA_K_LIEB                  = 505  !  TF-lambda-vW form by Lieb (l = 0.185909191)
  integer(c_int), parameter, public :: XC_GGA_K_ABSP1                 = 506  !  gamma-TFvW form by Acharya et al [g = 1 - 1.412/N^(1/3)]
  integer(c_int), parameter, public :: XC_GGA_K_ABSP2                 = 507  !  gamma-TFvW form by Acharya et al [g = 1 - 1.332/N^(1/3)]
  integer(c_int), parameter, public :: XC_GGA_K_GR                    = 508  !  gamma-TFvW form by Gazquez and Robles
  integer(c_int), parameter, public :: XC_GGA_K_LUDENA                = 509  !  gamma-TFvW form by Ludena
  integer(c_int), parameter, public :: XC_GGA_K_GP85                  = 510  !  gamma-TFvW form by Ghosh and Parr
  integer(c_int), parameter, public :: XC_GGA_K_PEARSON               = 511  ! Pearson
  integer(c_int), parameter, public :: XC_GGA_K_OL1                   = 512  ! Ou-Yang and Levy v.1
  integer(c_int), parameter, public :: XC_GGA_K_OL2                   = 513  ! Ou-Yang and Levy v.2
  integer(c_int), parameter, public :: XC_GGA_K_FR_B88                = 514  !  Fuentealba & Reyes (B88 version)
  integer(c_int), parameter, public :: XC_GGA_K_FR_PW86               = 515  ! Fuentealba & Reyes (PW86 version)
  integer(c_int), parameter, public :: XC_GGA_K_DK                    = 516  ! DePristo and Kress
  integer(c_int), parameter, public :: XC_GGA_K_PERDEW                = 517  !  Perdew
  integer(c_int), parameter, public :: XC_GGA_K_VSK                   = 518  !  Vitos, Skriver, and Kollar
  integer(c_int), parameter, public :: XC_GGA_K_VJKS                  = 519  !  Vitos, Johansson, Kollar, and Skriver
  integer(c_int), parameter, public :: XC_GGA_K_ERNZERHOF             = 520  !  Ernzerhof
  integer(c_int), parameter, public :: XC_GGA_K_LC94                  = 521  ! Lembarki & Chermette
  integer(c_int), parameter, public :: XC_GGA_K_LLP                   = 522  ! Lee, Lee & Parr
  integer(c_int), parameter, public :: XC_GGA_K_THAKKAR               = 523  ! Thakkar 1992
  integer(c_int), parameter, public :: XC_GGA_X_WPBEH                 = 524  ! short-range version of the PBE
  integer(c_int), parameter, public :: XC_GGA_X_HJS_PBE               = 525  ! HJS screened exchange PBE version
  integer(c_int), parameter, public :: XC_GGA_X_HJS_PBE_SOL           = 526  !  HJS screened exchange PBE_SOL version
  integer(c_int), parameter, public :: XC_GGA_X_HJS_B88               = 527  !  HJS screened exchange B88 version
  integer(c_int), parameter, public :: XC_GGA_X_HJS_B97X              = 528  !  HJS screened exchange B97x version
  integer(c_int), parameter, public :: XC_GGA_X_ITYH                  = 529  ! short-range recipe B88 functionals - erf
  integer(c_int), parameter, public :: XC_GGA_X_SFAT                  = 530  ! short-range recipe for PBE functional
  integer(c_int), parameter, public :: XC_GGA_X_SG4                   = 533  ! Semiclassical GGA at fourth order
  integer(c_int), parameter, public :: XC_GGA_C_SG4                   = 534  ! Semiclassical GGA at fourth order
  integer(c_int), parameter, public :: XC_GGA_X_GG99                  = 535  ! Gilbert and Gill 1999
  integer(c_int), parameter, public :: XC_GGA_X_PBEPOW                = 539  ! PBE power
  integer(c_int), parameter, public :: XC_GGA_X_KGG99                 = 544  !  Gilbert and Gill 1999 (mixed)
  integer(c_int), parameter, public :: XC_GGA_XC_HLE16                = 545  !  high local exchange 2016
  integer(c_int), parameter, public :: XC_GGA_C_SCAN_E0               = 553  ! GGA component of SCAN
  integer(c_int), parameter, public :: XC_GGA_C_GAPC                  = 555  ! GapC
  integer(c_int), parameter, public :: XC_GGA_C_GAPLOC                = 556  ! Gaploc
  integer(c_int), parameter, public :: XC_GGA_C_ZVPBEINT              = 557  ! another spin-dependent correction to PBEint
  integer(c_int), parameter, public :: XC_GGA_C_ZVPBESOL              = 558  !  another spin-dependent correction to PBEsol
  integer(c_int), parameter, public :: XC_GGA_C_TM_LYP                = 559  !  Takkar and McCarthy reparametrization
  integer(c_int), parameter, public :: XC_GGA_C_TM_PBE                = 560  !  Thakkar and McCarthy reparametrization
  integer(c_int), parameter, public :: XC_GGA_C_W94                   = 561  ! Wilson 94 (Eq. 25)
  integer(c_int), parameter, public :: XC_GGA_C_CS1                   = 565  ! A dynamical correlation functional
  integer(c_int), parameter, public :: XC_GGA_X_B88M                  = 570  !  Becke 88 reoptimized to be used with mgga_c_tau1
  integer(c_int), parameter, public :: XC_GGA_XC_KT3                  = 587  !  Keal and Tozer version 3
  integer(c_int), parameter, public :: XC_GGA_XC_LB07                 = 589  !  Livshits and Baer, empirical functional
  integer(c_int), parameter, public :: XC_GGA_K_GDS08                 = 591  ! Combined analytical theory with Monte Carlo sampling
  integer(c_int), parameter, public :: XC_GGA_K_GHDS10                = 592  !  As GDS08 but for an electron gas with spin
  integer(c_int), parameter, public :: XC_GGA_K_GHDS10R               = 593  !  Reparametrized GHDS10
  integer(c_int), parameter, public :: XC_GGA_K_TKVLN                 = 594  !  Trickey, Karasiev, and Vela
  integer(c_int), parameter, public :: XC_GGA_K_PBE3                  = 595  !  Three parameter PBE-like expansion
  integer(c_int), parameter, public :: XC_GGA_K_PBE4                  = 596  !  Four  parameter PBE-like expansion
  integer(c_int), parameter, public :: XC_GGA_K_EXP4                  = 597  ! Intermediate form between PBE3 and PBE4
  integer(c_int), parameter, public :: XC_GGA_X_SFAT_PBE              = 601  ! short-range recipe for PBE functional
  integer(c_int), parameter, public :: XC_GGA_X_FD_LB94               = 604  ! Functional derivative recovered from the stray LB94 potential
  integer(c_int), parameter, public :: XC_GGA_X_FD_REVLB94            = 605  !  Revised FD_LB94
  integer(c_int), parameter, public :: XC_GGA_C_ZVPBELOC              = 606  ! PBEloc variation with enhanced compatibility with exact exchange
  integer(c_int), parameter, public :: XC_GGA_K_LKT                   = 613  ! Luo-Karasiev-Trickey kinetic GGA
  integer(c_int), parameter, public :: XC_GGA_K_PBE2                  = 616  ! Two   parameter PBE-like expansion
  integer(c_int), parameter, public :: XC_GGA_K_VT84F                 = 619  ! VT84F by Karasiev et al
  integer(c_int), parameter, public :: XC_GGA_K_LGAP                  = 620  ! LGAP by Constantin et al
  integer(c_int), parameter, public :: XC_GGA_X_ITYH_OPTX             = 622  ! short-range OPTX functional
  integer(c_int), parameter, public :: XC_GGA_X_ITYH_PBE              = 623  ! short-range PBE functional
  integer(c_int), parameter, public :: XC_GGA_C_LYPR                  = 624  ! Short-range LYP of Ai, Fang and Su
  integer(c_int), parameter, public :: XC_GGA_K_LGAP_GE               = 633  ! LGAP_GE by Constantin et al
  integer(c_int), parameter, public :: XC_GGA_K_TFVW_OPT              = 635  !  empirically optimized gamma-TFvW form
  integer(c_int), parameter, public :: XC_GGA_C_MGGAC                 = 712  !  beta fitted to LC20 to be used with MGGAC
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_DLDF             =  36  ! Dispersionless Density Functional
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_MS2H             = 224  ! MS2 hybrid exchange of Sun, et al
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_MN12_SX          = 248  ! MN12-SX hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_SCAN0            = 264  ! SCAN hybrid exchange
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_MN15             = 268  !  MN15 hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_BMK              = 279  ! Boese-Martin for kinetics
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_TAU_HCTH         = 282  !  Hybrid version of tau-HCTH
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M08_HX           = 295  ! M08-HX exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M08_SO           = 296  !  M08-SO exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M11              = 297  ! M11 hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_REVM11           = 304  !  revM11 hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_REVM06           = 305  !  revised M06 hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M06_SX           = 310  !  M06-SX exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_TPSS0           = 396  !  TPSS hybrid with 25% exact exchange
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_B94_HYB         = 398  ! Hybrid meta-GGA by Becke
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M05              = 438  ! M05 hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M05_2X           = 439  !  M05-2X hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_B88B95          = 440  ! Mixture of B88 with BC95 (B1B95)
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_B86B95          = 441  !  Mixture of B86 with BC95
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_PW86B95         = 442  !  Mixture of PW86 with BC95
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_BB1K            = 443  !  Mixture of B88 with BC95 from Zhao and Truhlar
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M06_HF           = 444  ! M06-HF hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_MPW1B95         = 445  !  Mixture of mPW91 with BC95 from Zhao and Truhlar
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_MPWB1K          = 446  !  Mixture of mPW91 with BC95 for kinetics
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_X1B95           = 447  !  Mixture of X with BC95
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_XB1K            = 448  !  Mixture of X with BC95 for kinetics
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M06              = 449  !  M06 hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_M06_2X           = 450  !  M06-2X hybrid exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_PW6B95          = 451  !  Mixture of PW91 with BC95 from Zhao and Truhlar
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_PWB6K           = 452  !  Mixture of PW91 with BC95 from Zhao and Truhlar for kinetics
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_TPSSH           = 457  ! TPSS hybrid
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_REVTPSSH        = 458  !  revTPSS hybrid
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_MVSH             = 474  ! MVSh hybrid
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_WB97M_V         = 531  ! Mardirossian and Head-Gordon
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_B0KCIS          = 563  ! Hybrid based on KCIS
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_MPW1KCIS        = 566  ! Modified Perdew-Wang + KCIS hybrid
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_MPWKCIS1K       = 567  !  Modified Perdew-Wang + KCIS hybrid with more exact exchange
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_PBE1KCIS        = 568  !  Perdew-Burke-Ernzerhof + KCIS hybrid
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_TPSS1KCIS       = 569  !  TPSS hybrid with KCIS correlation
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_REVSCAN0         = 583  !  revised SCAN hybrid exchange
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_B98             = 598  ! Becke 98
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_EDMGGAH         = 695  ! Tao 2001 hybrid
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_JS18             = 705  ! a screened version of TM
  integer(c_int), parameter, public :: XC_HYB_MGGA_X_PJS18            = 706  ! a screened version of TM
  integer(c_int), parameter, public :: XC_HYB_MGGA_XC_LC_TMLYP        = 720  !  long-range corrected TM-LYP
  integer(c_int), parameter, public :: XC_MGGA_C_DLDF                 =  37  !  Dispersionless Density Functional
  integer(c_int), parameter, public :: XC_MGGA_XC_ZLP                 =  42  ! Zhao, Levy & Parr, Eq. (21)
  integer(c_int), parameter, public :: XC_MGGA_XC_OTPSS_D             =  64  ! oTPSS_D functional of Goerigk and Grimme
  integer(c_int), parameter, public :: XC_MGGA_C_CS                   =  72  ! Colle and Salvetti
  integer(c_int), parameter, public :: XC_MGGA_C_MN12_SX              =  73  !  MN12-SX correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_MN12_L               =  74  !  MN12-L correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M11_L                =  75  !  M11-L correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M11                  =  76  !  M11 correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M08_SO               =  77  !  M08-SO correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M08_HX               =  78  ! M08-HX correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_REVM11               = 172  !  Revised M11 correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_X_LTA                  = 201  ! Local tau approximation of Ernzerhof & Scuseria
  integer(c_int), parameter, public :: XC_MGGA_X_TPSS                 = 202  ! Tao, Perdew, Staroverov & Scuseria exchange
  integer(c_int), parameter, public :: XC_MGGA_X_M06_L                = 203  ! M06-L exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_X_GVT4                 = 204  ! GVT4 from Van Voorhis and Scuseria
  integer(c_int), parameter, public :: XC_MGGA_X_TAU_HCTH             = 205  ! tau-HCTH from Boese and Handy
  integer(c_int), parameter, public :: XC_MGGA_X_BR89                 = 206  ! Becke-Roussel 89, gamma = 0.8
  integer(c_int), parameter, public :: XC_MGGA_X_BJ06                 = 207  ! Becke & Johnson correction to Becke-Roussel 89
  integer(c_int), parameter, public :: XC_MGGA_X_TB09                 = 208  !  Tran & Blaha correction to Becke & Johnson
  integer(c_int), parameter, public :: XC_MGGA_X_RPP09                = 209  !  Rasanen, Pittalis, and Proetto correction to Becke & Johnson
  integer(c_int), parameter, public :: XC_MGGA_X_2D_PRHG07            = 210  ! Pittalis, Rasanen, Helbig, Gross Exchange Functional
  integer(c_int), parameter, public :: XC_MGGA_X_2D_PRHG07_PRP10      = 211  ! PRGH07 with PRP10 correction
  integer(c_int), parameter, public :: XC_MGGA_X_REVTPSS              = 212  !  revised Tao, Perdew, Staroverov & Scuseria exchange
  integer(c_int), parameter, public :: XC_MGGA_X_PKZB                 = 213  ! Perdew, Kurth, Zupan, and Blaha
  integer(c_int), parameter, public :: XC_MGGA_X_BR89_1               = 214  !  Becke-Roussel 89, gamma = 1.0
  integer(c_int), parameter, public :: XC_MGGA_K_PGSL025              = 220  ! PGSL0.25 functional by Constantin, Fabiano, and Della Sala
  integer(c_int), parameter, public :: XC_MGGA_X_MS0                  = 221  ! MS exchange of Sun, Xiao, and Ruzsinszky
  integer(c_int), parameter, public :: XC_MGGA_X_MS1                  = 222  !  MS1 exchange of Sun, et al
  integer(c_int), parameter, public :: XC_MGGA_X_MS2                  = 223  !  MS2 exchange of Sun, et al
  integer(c_int), parameter, public :: XC_MGGA_X_TH                   = 225  ! Tsuneda and Hirao
  integer(c_int), parameter, public :: XC_MGGA_X_M11_L                = 226  ! M11-L exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_X_MN12_L               = 227  ! MN12-L exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_X_MS2_REV              = 228  !  MS2 exchange of Sun, et al with a revised value for c
  integer(c_int), parameter, public :: XC_MGGA_XC_CC06                = 229  ! Cancio and Chou 2006
  integer(c_int), parameter, public :: XC_MGGA_X_MK00                 = 230  !  Exchange for accurate virtual orbital energies
  integer(c_int), parameter, public :: XC_MGGA_C_TPSS                 = 231  ! Tao, Perdew, Staroverov & Scuseria correlation
  integer(c_int), parameter, public :: XC_MGGA_C_VSXC                 = 232  ! VSxc from Van Voorhis and Scuseria (correlation part)
  integer(c_int), parameter, public :: XC_MGGA_C_M06_L                = 233  ! M06-L correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M06_HF               = 234  !  M06-HF correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M06                  = 235  !  M06 correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M06_2X               = 236  !  M06-2X correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M05                  = 237  ! M05 correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M05_2X               = 238  !  M05-2X correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_PKZB                 = 239  ! Perdew, Kurth, Zupan, and Blaha
  integer(c_int), parameter, public :: XC_MGGA_C_BC95                 = 240  ! Becke correlation 95
  integer(c_int), parameter, public :: XC_MGGA_C_REVTPSS              = 241  ! revised TPSS correlation
  integer(c_int), parameter, public :: XC_MGGA_XC_TPSSLYP1W           = 242  ! Functionals fitted for water
  integer(c_int), parameter, public :: XC_MGGA_X_MK00B                = 243  !  Exchange for accurate virtual orbital energies (v. B)
  integer(c_int), parameter, public :: XC_MGGA_X_BLOC                 = 244  !  functional with balanced localization
  integer(c_int), parameter, public :: XC_MGGA_X_MODTPSS              = 245  !  Modified Tao, Perdew, Staroverov & Scuseria exchange
  integer(c_int), parameter, public :: XC_MGGA_C_TPSSLOC              = 247  ! Semilocal dynamical correlation
  integer(c_int), parameter, public :: XC_MGGA_X_MBEEF                = 249  ! mBEEF exchange
  integer(c_int), parameter, public :: XC_MGGA_X_MBEEFVDW             = 250  ! mBEEF-vdW exchange
  integer(c_int), parameter, public :: XC_MGGA_C_TM                   = 251  !  Tao and Mo 2016 correlation
  integer(c_int), parameter, public :: XC_MGGA_XC_B97M_V              = 254  ! Mardirossian and Head-Gordon
  integer(c_int), parameter, public :: XC_MGGA_X_JK                   = 256  ! Jemmer-Knowles meta-GGA exchange
  integer(c_int), parameter, public :: XC_MGGA_X_MVS                  = 257  ! MVS exchange of Sun, Perdew, and Ruzsinszky
  integer(c_int), parameter, public :: XC_MGGA_X_MN15_L               = 260  !  MN15-L exhange functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_MN15_L               = 261  !  MN15-L correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_X_SCAN                 = 263  ! SCAN exchange of Sun, Ruzsinszky, and Perdew
  integer(c_int), parameter, public :: XC_MGGA_C_SCAN                 = 267  ! SCAN correlation
  integer(c_int), parameter, public :: XC_MGGA_C_MN15                 = 269  !  MN15 correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_X_B00                  = 284  !  Becke 2000
  integer(c_int), parameter, public :: XC_MGGA_XC_HLE17               = 288  ! high local exchange 2017
  integer(c_int), parameter, public :: XC_MGGA_C_SCAN_RVV10           = 292  !  SCAN correlation + rVV10 correlation
  integer(c_int), parameter, public :: XC_MGGA_X_REVM06_L             = 293  !  revised M06-L exchange functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_REVM06_L             = 294  !  Revised M06-L correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_X_RTPSS                = 299  ! Revised TPSS exchange by Garza, Bell and Head-Gordon
  integer(c_int), parameter, public :: XC_MGGA_X_MS2B                 = 300  ! MS2beta exchange by Furness and Sun
  integer(c_int), parameter, public :: XC_MGGA_X_MS2BS                = 301  !  MS2beta* exchange by Furness and Sun
  integer(c_int), parameter, public :: XC_MGGA_X_MVSB                 = 302  ! MVSBeta exchange of Furness and Sun
  integer(c_int), parameter, public :: XC_MGGA_X_MVSBS                = 303  !  MVSBeta* exchange of Furness and Sun
  integer(c_int), parameter, public :: XC_MGGA_C_REVM06               = 306  !  Revised M06 correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_M06_SX               = 311  !  M06-SX correlation functional from Minnesota
  integer(c_int), parameter, public :: XC_MGGA_C_B94                  = 397  ! Meta-GGA correlation by Becke
  integer(c_int), parameter, public :: XC_MGGA_X_RSCAN                = 493  ! Regularized SCAN exchange
  integer(c_int), parameter, public :: XC_MGGA_C_RSCAN                = 494  ! Regularized SCAN correlation
  integer(c_int), parameter, public :: XC_MGGA_X_R2SCAN               = 497  ! Re-regularized SCAN exchange
  integer(c_int), parameter, public :: XC_MGGA_C_R2SCAN               = 498  ! Re-regularized SCAN correlation
  integer(c_int), parameter, public :: XC_MGGA_X_TM                   = 540  ! Tao and Mo 2016 exchange
  integer(c_int), parameter, public :: XC_MGGA_X_VT84                 = 541  ! meta-GGA version of VT{8,4} GGA
  integer(c_int), parameter, public :: XC_MGGA_X_SA_TPSS              = 542  ! TPSS with correct surface asymptotics
  integer(c_int), parameter, public :: XC_MGGA_K_PC07                 = 543  ! Perdew and Constantin 2007
  integer(c_int), parameter, public :: XC_MGGA_C_KCIS                 = 562  ! Krieger, Chen, Iafrate, and Savin
  integer(c_int), parameter, public :: XC_MGGA_XC_LP90                = 564  ! Lee & Parr, Eq. (56)
  integer(c_int), parameter, public :: XC_MGGA_C_B88                  = 571  ! Meta-GGA correlation by Becke
  integer(c_int), parameter, public :: XC_MGGA_X_GX                   = 575  ! GX functional of Loos
  integer(c_int), parameter, public :: XC_MGGA_X_PBE_GX               = 576  ! PBE-GX functional of Loos
  integer(c_int), parameter, public :: XC_MGGA_X_REVSCAN              = 581  !  revised SCAN
  integer(c_int), parameter, public :: XC_MGGA_C_REVSCAN              = 582  ! revised SCAN correlation
  integer(c_int), parameter, public :: XC_MGGA_C_SCAN_VV10            = 584  !  SCAN correlation +  VV10 correlation
  integer(c_int), parameter, public :: XC_MGGA_C_REVSCAN_VV10         = 585  !  revised SCAN correlation
  integer(c_int), parameter, public :: XC_MGGA_X_BR89_EXPLICIT        = 586  ! Becke-Roussel 89 with an explicit inversion of x(y), gamma = 0.8
  integer(c_int), parameter, public :: XC_MGGA_X_BR89_EXPLICIT_1      = 602  !  Becke-Roussel 89 with an explicit inversion of x(y), gamma = 1.0
  integer(c_int), parameter, public :: XC_MGGA_X_REGTPSS              = 603  ! Regularized TPSS
  integer(c_int), parameter, public :: XC_MGGA_X_2D_JS17              = 609  ! JS17 meta-GGA for 2D
  integer(c_int), parameter, public :: XC_MGGA_K_L04                  = 617  ! L0.4 by Laricchia et al
  integer(c_int), parameter, public :: XC_MGGA_K_L06                  = 618  !  L0.6 by Laricchia et al
  integer(c_int), parameter, public :: XC_MGGA_K_RDA                  = 621  ! RDA by Karasiev et al
  integer(c_int), parameter, public :: XC_MGGA_X_REGTM                = 626  ! Regularized Tao-Mo exchange
  integer(c_int), parameter, public :: XC_MGGA_K_GEA2                 = 627  ! Second-order gradient expansion
  integer(c_int), parameter, public :: XC_MGGA_K_GEA4                 = 628  ! Fourth-order gradient expansion
  integer(c_int), parameter, public :: XC_MGGA_K_CSK1                 = 629  ! mGGA-rev functional by Cancio, Stewart, and Kuna (a=1)
  integer(c_int), parameter, public :: XC_MGGA_K_CSK4                 = 630  !  mGGA-rev functional by Cancio, Stewart, and Kuna (a=4)
  integer(c_int), parameter, public :: XC_MGGA_K_CSK_LOC1             = 631  ! mGGAloc-rev functional by Cancio, Stewart, and Kuna (a=1)
  integer(c_int), parameter, public :: XC_MGGA_K_CSK_LOC4             = 632  !  mGGAloc-rev functional by Cancio, Stewart, and Kuna (a=4)
  integer(c_int), parameter, public :: XC_MGGA_K_PC07_OPT             = 634  !  Reoptimized version by Mejia-Rodriguez and Trickey
  integer(c_int), parameter, public :: XC_MGGA_C_KCISK                = 638  ! Krieger, Chen, and Kurth
  integer(c_int), parameter, public :: XC_MGGA_X_TLDA                 = 685  !  LDA-type exchange with tau-dependent potential
  integer(c_int), parameter, public :: XC_MGGA_X_EDMGGA               = 686  ! Tao 2001
  integer(c_int), parameter, public :: XC_MGGA_X_GDME_NV              = 687  ! Generalized density-matrix with a=1/2
  integer(c_int), parameter, public :: XC_MGGA_X_RLDA                 = 688  ! Reparametrized local-density approximation
  integer(c_int), parameter, public :: XC_MGGA_X_GDME_0               = 689  !  Generalized density-matrix with a=0
  integer(c_int), parameter, public :: XC_MGGA_X_GDME_KOS             = 690  !  Generalized density-matrix with a=0.00638
  integer(c_int), parameter, public :: XC_MGGA_X_GDME_VT              = 691  !   Varied-terms (VT) mGGA of Koehl, Odom, and Scuseria
  integer(c_int), parameter, public :: XC_MGGA_X_REVTM                = 693  ! revised Tao and Mo 2016 exchange
  integer(c_int), parameter, public :: XC_MGGA_C_REVTM                = 694  !  revised Tao and Mo 2016 correlation
  integer(c_int), parameter, public :: XC_MGGA_X_MBRXC_BG             = 696  ! Modified Becke-Roussel for band gaps - cuspless hole
  integer(c_int), parameter, public :: XC_MGGA_X_MBRXH_BG             = 697  ! Modified Becke-Roussel for band gaps - hydrogen hole
  integer(c_int), parameter, public :: XC_MGGA_X_HLTA                 = 698  !  Half-and-half by Lehtola and Marques
  integer(c_int), parameter, public :: XC_MGGA_C_HLTAPW               = 699  ! Meta-GGAized PW
  integer(c_int), parameter, public :: XC_MGGA_X_SCANL                = 700  ! Deorbitalized SCAN exchange
  integer(c_int), parameter, public :: XC_MGGA_X_REVSCANL             = 701  !  Deorbitalized revSCAN exchange
  integer(c_int), parameter, public :: XC_MGGA_C_SCANL                = 702  ! SCAN correlation
  integer(c_int), parameter, public :: XC_MGGA_C_SCANL_RVV10          = 703  !  SCAN correlation + rVV10 correlation
  integer(c_int), parameter, public :: XC_MGGA_C_SCANL_VV10           = 704  !  SCAN correlation +  VV10 correlation
  integer(c_int), parameter, public :: XC_MGGA_X_TASK                 = 707  ! TASK exchange of Aschebrock and Kuemmel
  integer(c_int), parameter, public :: XC_MGGA_X_MGGAC                = 711  ! MGGAC of Patras et al
  integer(c_int), parameter, public :: XC_MGGA_X_MBR                  = 716  ! modified Becke-Roussel by Patra et al
  integer(c_int), parameter, public :: XC_MGGA_X_R2SCANL              = 718  ! Deorbitalized r^2SCAN exchange
  integer(c_int), parameter, public :: XC_MGGA_C_R2SCANL              = 719  ! Deorbitalized r^2SCAN correlation

Exact exchange (EXX)

System
   ecutfock float
   ecutvcut float
   exxdiv_treatment [gygi-baldereschi | vcut_spherical | vcut_ws | none]
   exx_fraction float
   nqx1 integer
   nqx2 integer
   nqx3 integer
   screening_parameter float
   x_gamma_extrapolation Yes/No
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

ecutfock
Type:

Float

Unit:

Rydberg

GUI name:

Exchange operator cutoff

Description:

Kinetic energy cutoff for the exact exchange operator in EXX type calculations. By default this is the same as ecutrho but in some EXX calculations, a significant speed-up can be obtained by reducing ecutfock, at the expense of some loss in accuracy. Must be >= ecutwfc. Not implemented for stress calculation and for US-PP and PAW pseudopotentials. Use with care, especially in metals where it may give raise to instabilities.

ecutvcut
Type:

Float

Default value:

0.0

Unit:

Rydberg

Description:

Reciprocal space cutoff for correcting Coulomb potential divergencies at small q vectors.

exxdiv_treatment
Type:

Multiple Choice

Default value:

gygi-baldereschi

Options:

[gygi-baldereschi, vcut_spherical, vcut_ws, none]

GUI name:

Divergence treatment

Description:

Specific for EXX. It selects the kind of approach to be used for treating the Coulomb potential divergencies at small q vectors. gygi-baldereschi: appropriate for cubic and quasi-cubic supercells vcut_spherical: appropriate for cubic and quasi-cubic supercells vcut_ws: appropriate for strongly anisotropic supercells, see also ecutvcut. none: sets Coulomb potential at G,q=0 to 0.0 (required for GAU-PBE)

exx_fraction
Type:

Float

GUI name:

EXX fraction

Description:

Fraction of EXX for hybrid functional calculations. In the case of input_dft set to ‘PBE0’, the default value is 0.25, while for input_dft set to ‘B3LYP’ the exx_fraction default value is 0.20.

nqx1
Type:

Integer

Description:

Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. Defaults to the size of the k-point mesh used.

nqx2
Type:

Integer

Description:

Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. Defaults to the size of the k-point mesh used.

nqx3
Type:

Integer

Description:

Three-dimensional mesh for q (k1-k2) sampling of the Fock operator (EXX). Can be smaller than the number of k-points. Defaults to the size of the k-point mesh used.

screening_parameter
Type:

Float

Default value:

0.106

GUI name:

Screening parameter

Description:

screening_parameter for HSE like hybrid functionals. For more information, see: J. Chem. Phys. 118, 8207 (2003), doi:10.1063/1.1564060 J. Chem. Phys. 124, 219906 (2006), doi:10.1063/1.2204597

x_gamma_extrapolation
Type:

Bool

Default value:

Yes

GUI name:

Gamma extrapolation

Description:

Specific for EXX. If .true., extrapolate the G=0 term of the potential (see README in examples/EXX_example for more) Set this to .false. for GAU-PBE.

Dipole/charge corrections

System
   edir [x | y | z]
   emaxpos float
   eopreg float
   eamp float
   assume_isolated [Auto | None | Martyna-Tuckerman | ESM | 2D]
End
System
Type:

Block

Description:

Keywords from the &SYSTEM namelist in the QuantumEspresso input file.

edir
Type:

Multiple Choice

Options:

[x, y, z]

GUI name:

Field direction

Description:

1 (or x), 2 (or y) or 3 (or z). The direction of the electric field or dipole correction is parallel to the bg(:,edir) reciprocal lattice vector. Thus the potential is constant in planes defined by FFT grid points. Used only if tefield is enabled.

emaxpos
Type:

Float

Default value:

0.5

GUI name:

Saw potential maximum

Description:

Position of the maximum of the saw-like potential along crystal axis edir, within the unit cell, see also eopreg. 0 < emaxpos < 1 Used only if tefield is enabled.

eopreg
Type:

Float

Default value:

0.1

GUI name:

Saw potential decreasing

Description:

Zone in the unit cell where the saw-like potential decreases, see also amp. Must be in range 0 < eopreg < 1. Used only if tefield is enabled.

eamp
Type:

Float

Default value:

0.001

Unit:

Hartree

GUI name:

Field amplitude

Description:

Amplitude of the electric field, in Hartree a.u. = = 51.4220632*10^10 V/m. Used only if tefield is enabled. The saw-like potential increases with slope eamp in the region from (emaxpos + eopreg- 1) to (emaxpos), then decreases to 0 until (emaxpos + eopreg), in units of the crystal vector edir. Important: the change of slope of this potential must be located in the empty region, or else unphysical forces will result.

assume_isolated
Type:

Multiple Choice

Default value:

Auto

Options:

[Auto, None, Martyna-Tuckerman, ESM, 2D]

GUI name:

Isolated system

Description:

Used to perform calculation assuming the system to be isolated (a molecule or a cluster in a 3D supercell). Currently available choices: • Auto: determines the used method based on the periodicity of the system in the AMS driver input. None for systems 3D periodicity, Martyna-Tuckerman for systems without a lattice. • None: regular periodic calculation w/o any correction. • Martyna-Tuckerman: correction to both total energy and scf potential. Adapted from: G.J. Martyna, and M.E. Tuckerman, A reciprocal space based method for treating long range interactions in ab-initio and force-field-based calculation in clusters, J. Chem. Phys. 110, 2810 (1999), [doi:10.1063/1.477923]. • ESM: Effective Screening Medium Method. For polarized or charged slab calculation, embeds the simulation cell within an effective semi-infinite medium in the perpendicular direction (along z). Embedding regions can be vacuum or semi-infinite metal electrodes (use esm_bc to choose boundary conditions). If between two electrodes, an optional electric field (esm_efield) may be applied. Method described in M. Otani and O. Sugino, ‘First-principles calculations of charged surfaces and interfaces: A plane-wave nonrepeated slab approach’, PRB 73, 115407 (2006). • 2D: Truncation of the Coulomb interaction in the z direction for structures periodic in the x-y plane. Total energy, forces and stresses are computed in a two-dimensional framework. Linear-response calculations () done on top of a self-consistent calculation with this flag will automatically be performed in the 2D framework as well. Please refer to: Sohier, T., Calandra, M., & Mauri, F. (2017), ‘Density functional perturbation theory for gated two-dimensional heterostructures: Theoretical developments and application to flexural phonons in graphene’, PRB, 96, 075448 (2017).

Hubbard U, DFT+U

Note: the Hubbard U (and J) settings are specified in the Quantum ESPRESSO 7.1 format (pdf).

This format is different compared to earlier versions of Quantum ESPRESSO. See the Examples for example usage in AMS.

Example: DFT+U (Dudarev’s formalism)

Hubbard ortho-atomic
    U Mn-3d 5.0   # eV
    U Ni-3d 6.0   # eV
End

Instead of 3d, you can also specify for example 4s etc.

To apply the Hund J0 (DFT+U+J0):

Hubbard ortho-atomic
    U  Mn-3d 5.0   # eV
    J0 Mn-3d 1.0   # eV
    U  Ni-3d 6.0   # eV
    J0 Ni-3d 1.2   # eV
End

Example: DFT+U+J (Liechtenstein’s formulation)

Hubbard ortho-atomic
    U Mn-3d 5.0
    J Mn-3d 1.0
    B Mn-3d 1.1
End

For details, see the Quantum ESPRESSO documentation for Hubbard U (pdf).

Hubbard
Type:

Non-standard block

Description:

Specify parameters for DFT+U models. The type of Hubbard projectors to use (e.g. atomic or ortho-atomic) is specified in the header of this block. Example input: .. code-block:: text Hubbard ortho-atomic U Fe-3d 3.0 End More examples can be found in the documentation.

Restart Options

You can restart your calculation using the keyword EngineRestart at the AMS level or the Restart section at the QuantumEspresso engine level.

The AMS EngineRestart keyword requires the complete path to the quantumespresso.rkf file. It also expects a directory named quantumespresso.save to be present, along with other relevant QE files that share the same prefix in the same location. This feature is beneficial as it allows compatibility between different engines. On the contrary, the QuantumEspresso engine Restart block allows you to specify the directory, path, and prefix independently.

Depending on the specific files with the same prefix in that directory, the engine can determine whether to reuse the electronic density and wave function or restart the self-consistent field (SCF) cycle. For the latter option, it is crucial that the QE calculation is properly terminated. You can control this with the option Control%max_seconds or by gently stopping it using the EXIT file.

For examples, please refer to the directories $AMSHOME/examples/QE/ZnO_restart and $AMSHOME/examples/QE/RestartSCF

EngineRestart string
EngineRestart
Type:

String

Description:

The path to the file from which to restart the engine. Should be a proper engine result file (like adf.rkf, band.rkf etc), or the name of the results directory containing it.

Engine QuantumEspresso
   ...
     Restart
         Directory string
         Path string
         Prefix string
     End
EndEngine
Restart
Type:

Block

Description:

This section configures restarting a Quantum Espresso calculation from previous data. You can restart from a specific Quantum Espresso results file (e.g., quantumespresso.rkf), or by providing the directory and file prefix of the previous calculation. This is compatible with any stand-alone Quantum Espresso version.

Directory
Type:

String

Default value:

GUI name:

Restart from directory

Description:

The directory containing the restart files from a previous Quantum Espresso calculation. This typically includes the prefix.save directory with wavefunctions and other data. This option is used in conjunction with the Prefix option.

Path
Type:

String

GUI name:

Restart from file

Description:

Path to the Quantum Espresso results file (e.g., quantumespresso.rkf) to use to restart the calculation. When this option is used, the directory of the results file is used as the Directory, and the filename (without the .rkf extension) is used as the Prefix. This assumes all restart files (e.g., prefix.save directory) are in the same directory as the results file. This option is equivalent to the EngineRestart option.

Prefix
Type:

String

Default value:

quantumespresso

GUI name:

Restart using prefix

Description:

The prefix used for the files in the previous calculation. This is usually the same as the ‘prefix’ specified in the input file of the original calculation. For example, if your files are named ‘my_calc.save’ and ‘my_calc.restart_scf’, the prefix would be ‘my_calc’. This option is used in conjunction with the Directory option.

Differences between AMS and standalone QE

  1. AMS internally enforces scf_must_converge = .true. to ensure it can reliably detect the completion status of calculations. However, from the AMS input file, this parameter actually controls how the SCF convergence affects the overall AMS execution. Specifically, if scf_must_converge is set to .true. (which is the default), the entire AMS execution will be halted if the SCF fails to converge, otherwise it allows the AMS execution to proceed even if the SCF does not converge. This behavior is intended to prevent or keep control of inaccurate results from propagating through subsequent steps in the AMS workflow.

  2. The default value for Electrons%mixing_beta is 0.3 (smaller than the pw.x default of 0.7), to make SCF convergence more reliable.

  3. The pseudopotentials are specified in the engine Pseudopotentials block. They will then be appended to the ATOMIC_SPECIES lines in the pw.x input.

  4. AMS automatically sets pseudo_dir, outdir, prefix, title, ntyp and nat

  5. AMS automatically generates a path through the Brillouin zone for band structure calculations by default

  6. For more differences, see the Quick reference (migration guide)