Files
funxc/mapOfFunctionals.md

31 KiB
Raw Blame History

Libxc Tree of Knowledge: A Categorical Index of ExchangeCorrelation Functionals by Shared Analytic Kernel

TL;DR

  • Libxc's 600+ functional entries collapse to roughly 5070 distinct analytic enhancement-factor kernels; the great majority of "different" functionals are the same math kernel with a different parameter tuple (e.g. ~30+ PBE-type exchange functionals share one rational Fx(s) form), so a clean-room reimplementation needs only the small kernel set as code plus a parameter database.
  • The tree has four rungs (LDA → GGA → meta-GGA, plus kinetic-energy K functionals), each split into X / C / XC, with hybrids and range-separation treated as a thin recipe layer of mixing coefficients (α, β, ω) over the semilocal kernels — exact exchange is host-supplied, never a kernel to implement.
  • The irreducible "long tail" is small: genuinely unique forms include BeckeRoussel (BR89) exchange-hole inversion, LYP correlation, the VWN/PW92 Padé-and-log local-correlation parametrizations, OPTX, AM05, the B97 power series, and the SCAN/TPSS iso-orbital meta-GGA interpolations.

Key Findings

  1. The compression ratio is dramatic. MolSSI's official page states: "The library currently implements over 600 density functional approximations, and is used by over 30 electronic structure programs ranging from atomic structure calculations to large quantum chemistry and materials modeling programs." The original 2012 implementation (Marques, Oliveira & Burnus, Comput. Phys. Commun. 183, 2272) contained "around 180" functionals, while Marques' own estimate of the total number of known approximations at that time was "of the order of 250300" (quoted in Lehtola's GPAW-2021 talk). Today's 600+ entries reduce to ~5070 distinct analytic kernels because parameter-only variants dominate. The single largest family — PBE-type GGA exchange — alone subsumes dozens of functionals through the (κ, μ) tuple.

  2. The PBE rational enhancement Fx(s) = 1 + κ κ/(1 + μ·s²/κ) is the workhorse kernel. It originated as Becke's B86 form and is shared verbatim (in libxc's maple/gga_x_pbe.mpl, where it reads pbe_f0 := s -> 1 + kappa*(1 - kappa/(kappa + mu*s^2))) by PBE, PBEsol, revPBE, xPBE, APBE, PBEmol, PBEfe, PBEint, PBE_TCA, and the lambda family. The TPSS and SCAN meta-GGAs reuse the same rational shell with a more complex argument x replacing μ·s².

  3. Local correlation is dominated by two parametrization forms: the VWN Padé-in-√rs log/arctan form and the PerdewWang 1992 G(rs) = 2A(1+α₁·rs)·ln[1 + 1/(2A(β₁·rs^½+…))] form. PW92 (lda_c_pw) is the LDA base of nearly all GGA/mGGA correlation (PBE, PW91, TPSS, SCAN).

  4. The B97 power series u(x) = γx²/(1+γx²) with Σ cᵢ·uⁱ is a second universal kernel, spanning B97, B97-1, B97-2, HCTH (all variants), ωB97, ωB97X, B97-D and the meta-GGA B97M extensions — they differ only in the cᵢ coefficient vectors and the γ values.

  5. Meta-GGA exchange splits into three kernel lineages: (a) TPSS/revTPSS/SCAN/rSCAN/r2SCAN — the PBE rational shell with an iso-orbital argument built from z = τW/τ or α = (ττW)/τunif; (b) Minnesota (M06-L, M05, M06, M08, M11, MN15) — PBE/PW86 exchange times a kinetic-energy power series f(w) plus a VS98-style term; (c) BeckeRoussel BR89 exchange-hole inversion (used by BR89, B00, and underlying the MVS, TM, and mBJ potentials).


Details — The Tree

RUNG 0 — Variable dependencies (top-level split)

  • LDA: ε depends on ρ (and ζ = spin polarization) only.
  • GGA: adds σ = |∇ρ|². Reduced gradient s = |∇ρ|/(2(3π²)^(1/3)ρ^(4/3)), or x = |∇ρ|/ρ^(4/3); note s = x/(2(3π²)^(1/3)).
  • meta-GGA: adds τ (kinetic energy density) and/or ∇²ρ (Laplacian). Key dimensionless ingredients: z = τW/τ, α = (ττW)/τunif, where τW = |∇ρ|²/(8ρ), τunif = (3/10)(3π²)^(2/3)ρ^(5/3).
  • Each rung × {X exchange, C correlation, XC combined, K kinetic}.

LDA RUNG

Kernel L-X1: DiracSlater exchange

  • Variables: ρ. Reference: Dirac/Slater (LDA_X).
  • Form: εx = (3/4)(3/π)^(1/3) ρ^(1/3) per particle; spin via εx[ρ↑,ρ↓] = ½(εx[2ρ↑]+εx[2ρ↓]).
  • Members / parameters: LDA_X (canonical Cx), LDA_X_REL (relativistic correction factor), LDA_X_2D, LDA_X_1D_SOFT/_EXPONENTIAL, XALPHA (Slater Xα, adjustable α default 0.7), LDA_X_RAE, LDA_X_SLOC (a=1.67, b=0.3), LDA_X_YUKAWA/_ERF (screened). Variation = the prefactor Cx and the dimension.
  • Citation: Dirac, Proc. Camb. Phil. Soc. 26, 376 (1930); Slater, Phys. Rev. 81, 385 (1951).

Kernel L-C1: VWN Padé log/arctan local correlation

  • Variables: ρ, ζ. Reference: VoskoWilkNusair 1980 (LDA_C_VWN).
  • Form: ec(rs,ζ) = ec^P + [ec^F ec^P]·fc(ζ)ζ⁴ + (fc(ζ)/fc''(0))(1ζ⁴)αc(rs), each of ec^P, ec^F, αc parametrized by G(y) = A{ln(y²/X(y)) + (2b/Q)arctan(Q/(2y+b)) (b·y0/X(y0))[ln((yy0)²/X(y)) + (2(b+2y0)/Q)arctan(Q/(2y+b))]}, with y = √rs, X(y) = y²+by+c, Q = √(4cb²), fc''(0) = 4/[9(2^(1/3)1)]. Paramagnetic channel constants: A = 0.0310907, b = 3.72744, c = 12.9352, x0 = 0.10498.
  • Members: LDA_C_VWN (=VWN5), LDA_C_VWN_RPA, LDA_C_VWN_1, _2, _3, _4 — variants differ in (A,b,c,x0) tuples and whether the RPA or CeperleyAlder fit is used. VWN3 and VWN5 are the historically confused pair (VWN3 = RPA-fit body parametrization; VWN5 = Table-5 Monte-Carlo parametrization).
  • Citation: Vosko, Wilk & Nusair, Can. J. Phys. 58, 1200 (1980), doi:10.1139/p80-159.

Kernel L-C2: PerdewWang 1992 G(rs) local correlation

  • Variables: ρ, ζ. Reference: PW92 (LDA_C_PW).

  • Form: G(rs) = 2A(1+α₁·rs)·ln[1 + 1/(2A(β₁·rs^(1/2) + β₂·rs + β₃·rs^(3/2) + β₄·rs^(p+1)))], spin-interpolated with the von BarthHedin fc(ζ).

  • Parameter table (three channels: ec0 paramagnetic, ec1 ferromagnetic, αc spin-stiffness):

    param ec0 ec1 αc
    A 0.031091 0.015545 0.016887
    α₁ 0.21370 0.20548 0.11125
    β₁ 7.5957 14.1189 10.357
    β₂ 3.5876 6.1977 3.6231
    β₃ 1.6382 3.3662 0.88026
    β₄ 0.49294 0.62517 0.49671

    p = 1 for LDA_C_PW; p = 3/4 for LDA_C_PW_RPA; LDA_C_PW_MOD uses higher-precision A (0.0310907…).

  • Members: LDA_C_PW, LDA_C_PW_RPA, LDA_C_PW_MOD, LDA_C_OB_PW (OrtizBallone refit).

  • Citation: Perdew & Wang, Phys. Rev. B 45, 13244 (1992).

Kernel L-C3: PZ81 piecewise (high/low-density) correlation

  • Form: for rs ≥ 1, ec = γ/(1+β₁√rs+β₂·rs); for rs < 1, ec = A·ln rs + B + C·rs·ln rs + D·rs. Members: LDA_C_PZ, LDA_C_PZ_MOD, LDA_C_OB_PZ. Citation: Perdew & Zunger, Phys. Rev. B 23, 5048 (1981). Stability note: second-derivative discontinuity at rs = 1.

Kernel L-C4: Chachiyo single-formula correlation

  • Form: ec = a·ln(1 + b/rs + b/rs²)-type closed two-parameter expression. Members: LDA_C_CHACHIYO, LDA_C_CHACHIYO_MOD, GGA_C_CHACHIYO (gradient extension). Citation: Chachiyo, J. Chem. Phys. 145, 021101 (2016).

Kernel L-C5: Wigner / small-rational one-offs

  • LDA_C_WIGNER (ec = a/(rs+b)), LDA_C_RPA, LDA_C_HL (HedinLundqvist), LDA_C_GL (GunnarssonLundqvist), LDA_C_vBH, LDA_C_RC04, LDA_C_W20, LDA_C_GOMBAS — each a distinct small rational/log form; mostly irreducible.
  • Warm-dense-matter / finite-T XC: LDA_XC_KSDT, LDA_XC_GDSMFB, LDA_XC_CORRKSDT — temperature-dependent Padé parametrizations (shared form, different fits).
  • Electronproton (NEO): LDA_C_EPC17, _17_2, _18_1, _18_2 — implemented via the spin-channel trick (electron density as "up", proton density as "down").

Kernel L-K1: ThomasFermi kinetic

  • Form: τ = CF·ρ^(5/3), CF = (3/10)(3π²)^(2/3). Members: LDA_K_TF, LDA_K_LP (LeeParr Gaussian), LDA_K_ZLP. Citation: Thomas (1927), Fermi (1928).

GGA RUNG — EXCHANGE

Kernel G-X1: PBE-type rational enhancement (THE big family)

  • Variables: ρ, σ. Reference: PBE (GGA_X_PBE); form first from Becke B86.

  • Form (libxc maple/gga_x_pbe.mpl): Fx(s) = 1 + κ κ/(1 + μ·s²/κ), εx = εx^LDA·Fx(s). Gradient expansion Fx = 1 + μ·s² + O(s⁴).

  • Member / parameter table:

    Functional κ μ
    GGA_X_PBE 0.804 0.2195149727645171
    GGA_X_PBE_SOL (PBEsol) 0.804 10/81 = 0.12345679
    GGA_X_PBE_R (revPBE) 1.245 0.2195149727645171
    GGA_X_XPBE (XuGoddard) 0.91954 0.23889
    GGA_X_APBE 0.804 0.260
    GGA_X_PBE_MOL 0.804 ≈0.27583
    GGA_X_PBEFE 0.437 0.346
    GGA_X_PBE_TCA 1.227 0.2195149727645171
    GGA_X_PBEINT 0.804 μ(s) interpolating 10/81→0.21951, α=0.197
    GGA_X_LAMBDA_{LO,CH,OC2}_N N-dependent κ (tightened LiebOxford) 0.2195149727645171

    Also share this rational shell (refit params): GGA_X_PBE_JSJR, PBE_GAUSSIAN, mPBE (AdamoBarone), and vdW reparametrizations (PBEK1_VDW, OPTPBE_VDW). The VASP wiki documents the PBE→PBEsol move concisely: PBE's "μ=0.21951 in exchange and β=0.066725 in correlation are changed to μ=10/81≈0.12345679 and β=0.046 to get the PBEsol functional."

  • Citation: Perdew, Burke & Ernzerhof, PRL 77, 3865 (1996); Becke, J. Chem. Phys. 84, 4524 (1986).

Kernel G-X2: RPBE exponential enhancement

  • Form: Fx(s) = 1 + κ(1 exp(μ·s²/κ)). Same (κ, μ) = (0.804, 0.21951) as PBE but a distinct functional form (exponential, not rational), hence a separate kernel.
  • Members: GGA_X_RPBE; related GGA_X_PBEpow. Citation: Hammer, Hansen & Nørskov, Phys. Rev. B 59, 7413 (1999).

Kernel G-X3: B88 arcsinh exchange

  • Variables: ρ, σ. Form: Fx = 1 + (β/Cx)·x²/(1 + γ·β·x·arcsinh(x)), x = |∇ρ|/ρ^(4/3), γ = 6.
  • Member / parameters: GGA_X_B88 (β = 0.0042), GGA_X_B88_6311G (β = 0.0051), GGA_X_OPTB88_VDW, GGA_X_MB88, GGA_X_EB88 (excogitated β≈0.0050), GGA_X_B88M, LRC variants (β = 0.323). All differ only in β (and γ for some).
  • Citation: Becke, Phys. Rev. A 38, 3098 (1988). Stability note: arcsinh is well-behaved; the asymptotic exchange potential is unbounded (the 1/(2r) energy-density decay is designed-in).

Kernel G-X4: B86 / B86b family

  • Form: Fx = 1 + (μ s²)/(1 + γ s²)^p with p ∈ {1, 4/5}. Members: GGA_X_B86, GGA_X_B86_MGC, GGA_X_B86_R, GGA_X_OPTB86B_VDW. (A close cousin of the PBE rational shell with the added power p.)
  • Citation: Becke, J. Chem. Phys. 84, 4524 (1986); 85, 7184 (1986).

Kernel G-X5: PW91 exchange (sinh-based rational)

  • Form: Fx = (1 + a₁·s·arcsinh(a₂·s) + (a₃ + a₄·exp(b·s²))s²)/(1 + a₁·s·arcsinh(a₂·s) + a₅·s⁴). Members: GGA_X_PW91, GGA_X_MPW91 (AdamoBarone), GGA_X_PW91_MOD. Citation: Perdew et al., Phys. Rev. B 46, 6671 (1992).

Kernel G-X6: OPTX (sum-of-rational-squared)

  • Form: Fx = a₁ + a₂·(γx²/(1+γx²))², x = |∇ρ|/ρ^(4/3). Parameters: a₁ = 1.05151, a₂ = 1.43169, γ = 0.006.
  • Members: GGA_X_OPTX, GGA_X_ITYH_OPTX (short-range erf recipe). Citation: Handy & Cohen, Mol. Phys. 99, 403 (2001).

Kernel G-X7: G96 (Gill 1996)

  • Form: Fx with an x^(3/2) gradient term, simpler than B88. Member: GGA_X_G96. Citation: Gill, Mol. Phys. 89, 433 (1996).

Kernel G-X8: AM05 (Airy-gas / subsystem interpolation)

  • Form: interpolation between LDA and Airy-gas (Laplacian-level) limits with a LangrethVosko-style index. Members: GGA_X_AM05, GGA_X_AIRY, GGA_X_LAG. Citation: Armiento & Mattsson, Phys. Rev. B 72, 085108 (2005). Largely irreducible.

Kernel G-X9: Asymptotically-corrected potentials (LB94/LBα)

  • Form: modeled on the potential (not energy): vx = −β x²/(1+3β x·arcsinh(x)) added to the LDA potential. Members: GGA_X_LB94, GGA_X_LBM, GGA_X_FD_LB94. Potential-only — flag as a special case (no consistent εx).

Kernel G-X10: HJS screened exchange-hole models

  • Form: error-function-screened exchange-hole integral, parametrized per base functional. Members: GGA_X_HJS_PBE, _PBE_SOL, _B88, _B97X, _B88_V2 — same HJS machinery, parameters per base. Citation: Henderson, Janesko & Scuseria, J. Chem. Phys. 128, 194105 (2008). Underlies HSE / range-separated builds.

Misc one-off GGA exchange (irreducible long tail)

  • GGA_X_WC (WuCohen; PBE rational with x = 10/81·s² + (μ10/81)s²·e^(s²) + ln(1+c·s⁴)), GGA_X_SOGGA/SOGGA11 (two-term second-order GGA), GGA_X_C09X, GGA_X_HTBS (switches between RPBE & PBEsol), GGA_X_EV93 (EngelVosko rational poly in s²), GGA_X_AK13, GGA_X_KT1, GGA_X_FT97_A/B, GGA_X_BAYESIAN, GGA_X_BCGP, the GGA_X_2D_* 2D forms, and the TozerHandy XC forms.

GGA RUNG — CORRELATION

Kernel G-C1: PBE/PW91 correlation H(t) gradient correction

  • Variables: ρ, σ, ζ. Reference: PBE correlation (GGA_C_PBE).

  • Form: εc = εc^LDA(PW92) + H(rs,ζ,t), with H = γφ³·ln[1 + (β/γ)t²·(1+At²)/(1+At²+A²t⁴)], A = (β/γ)[exp(εc^LDA/(γφ³))1]^(1), φ = ((1+ζ)^(2/3)+(1ζ)^(2/3))/2, t = scaled gradient.

  • Member / parameters:

    Functional β γ
    GGA_C_PBE 0.06672455060314922 (1ln2)/π² ≈ 0.0310906909
    GGA_C_PBE_SOL 0.046 (1ln2)/π²
    GGA_C_PBEFE 0.043 (1ln2)/π²
    GGA_C_PBE_JRGX 3μ^GE/π² ≈ 0.0375 (1ln2)/π²
    GGA_C_PBELOC, GGA_C_SG4, GGA_C_PBEINT β = β(rs,t) density-dependent

    Members (all H(t) form, parameter-only): GGA_C_PBE, PBE_SOL, XPBE, PBEFE, PBE_MOL, PBE_JRGX, APBE, PBEINT, PBELOC, SG4, REGTPSS, ZPBESOL.

  • Citation: Perdew, Burke & Ernzerhof, PRL 77, 3865 (1996); PW91: Perdew et al., PRB 46, 6671 (1992).

Kernel G-C2: LYP correlation (ColleSalvetti-derived)

  • Variables: ρ, σ (originally ∇²ρ, eliminated by parts). Form (Miehlich): εc = a·(4/(1+d·ρ^(1/3)))·(ρ↑ρ↓/ρ) a·b·ω(ρ)·[...gradient and ρ^(8/3) terms...], ω(ρ) = exp(ρ^(1/3))/(1+d·ρ^(1/3))·ρ^(11/3).
  • Parameters (libxc gga_c_lyp_set_params): a = 0.04918, b = 0.132, c = 0.2533, d = 0.349.
  • Members: GGA_C_LYP, plus refits used in OLYP, XLYP, MOHLYP, PBELYP1W. Citation: Lee, Yang & Parr, Phys. Rev. B 37, 785 (1988); Miehlich et al., Chem. Phys. Lett. 157, 200 (1989). Irreducible kernel.

Kernel G-C3: P86 (Perdew 1986) gradient correlation

  • Form: εc = εc^LDA + e^(−Φ)·C(rs)·|∇ρ|²/ρ^(4/3) over a spin factor d(ζ); C(rs) is a RasoltGeldart rational. Members: GGA_C_P86, GGA_C_P86VWN, GGA_C_P86VWN_FT, GGA_C_P86_FT. Differ by underlying LDA (PZ vs VWN5) and the ftilde constant. Citation: Perdew, Phys. Rev. B 33, 8822 (1986).

Kernel G-C4: WilsonLevy type

  • Form: εc = √(1ζ²)·(a+b·x)/(c+d(x↑+x↓)+rs). Members: GGA_C_WL (a=0.74860, b=0.06001, c=3.60073, d=0.90000), GGA_C_WI, GGA_C_WI0. Citation: Wilson & Levy, Phys. Rev. B 41, 12930 (1990).

Misc GGA correlation one-offs

  • GGA_C_AM05 (paired with AM05-X), GGA_C_OPTC (CohenHandy), GGA_C_W94 (Wilson 94), GGA_C_CS1, GGA_C_BMK, GGA_C_CCDF, GGA_C_SOGGA11, GGA_C_GAPC, GGA_C_TCA.

GGA RUNG — KINETIC ENERGY (orbital-free)

Kernel G-K1: TFλvW linear combination

  • Form: T = λ·TW + γ·TTF. Members (by λ): GGA_K_VW (pure von Weizsäcker), GGA_K_GE2 (λ=1/9), GGA_K_GOLDEN (λ=13/45), GGA_K_YT65 (λ=1/5), GGA_K_BALTIN (λ=5/9), GGA_K_TFVW. Parameter-only (the λ coefficient). Citation: von Weizsäcker, Z. Phys. 96, 431 (1935).

Kernel G-K2: PBE-type kinetic enhancement (reuses the G-X1 shell)

  • Form: Ft(s) = 1 + κ κ/(1+μs²/κ) applied to τTF. Members: GGA_K_APBE, GGA_K_APBEINT, GGA_K_REVAPBE, GGA_K_LC94, GGA_K_PERDEW, GGA_K_TW14 (TranWesolowski), GGA_K_LLP, GGA_K_THAKKAR, GGA_K_OL1/OL2, GGA_K_FR_PW86, GGA_K_DK (DePristoKress rational), GGA_K_VSK, GGA_K_VJKS, GGA_K_ERNZERHOF. Most are PBE/B88-shell forms refit for the kinetic energy. Citation: Constantin et al., PRL 106, 186406 (2011) (APBE).

META-GGA RUNG — EXCHANGE

Kernel M-X1: TPSS-type rational shell with iso-orbital argument

  • Variables: ρ, σ, τ. Reference: TPSS (MGGA_X_TPSS).
  • Form: Fx = 1 + κ κ²/(κ + x(s,z,α)), where x is a long polynomial in s, z = τW/τ, α = (ττW)/τunif, and the reduced-Laplacian mimic q̃b = (9/20)(α1)/√(1+b·α(α1)) + (2/3)s².
  • Member / parameters: MGGA_X_TPSS (κ=0.804, μGE=10/81, μPBE=0.21951, b=0.40, c=1.59096, e=1.537), MGGA_X_REVTPSS (μ=0.14, c=2.35203946, e=2.16769874, f=3), MGGA_X_TPSSLOC, MGGA_X_BLOC, MGGA_X_REGTPSS, MGGA_X_PKZB (precursor), MGGA_X_MBEEF, MGGA_X_TM (TaoMo), MGGA_X_REVTM. Citation: Tao, Perdew, Staroverov & Scuseria, PRL 91, 146401 (2003).

Kernel M-X2: SCAN-type iso-orbital interpolation

  • Variables: ρ, σ, τ (via α). Reference: SCAN (MGGA_X_SCAN).
  • Form: Fx(s,α) = {h1x(s,α) + fx(α)[h0x h1x]}·gx(s), with h0x = 1.174 = 1+κ0, h1x = 1 + k1 k1/(1 + x/k1), gx(s) = 1 exp(a1·s^(1/2)), fx(α) = exp(c1x·α/(1α))·θ(1α) dx·exp(c2x/(1α))·θ(α1).
  • Parameters: SCAN: μGE=10/81, k1=0.065, c1x=0.667, c2x=0.8, dx=1.24, a1=4.9479, with b1, b2≈0.12083, b3=0.5, b4 fixed by GE4. revSCAN: c1x=0.607, c2x=0.7, dx=1.37. r2SCAN regularizes via α̃ with floor η=10^(3): per Furness et al. (2020), "the constants Cη = 20/27 + 5η/3, depending on the α̅ regularization parameter η = 10⁻³, and C2x ≈ 0.162742 eliminate erroneous contributions from dfx(α̅)/dα̅ at α̅ → 1." The damping constant is dp2 = 0.361 — note the original paper's main text printed 0.316, corrected to 0.361 in the published Correction (J. Phys. Chem. Lett. 11, 9248). rSCAN replaces the θ-step switches with smooth polynomials.
  • Members: MGGA_X_SCAN, MGGA_X_RSCAN, MGGA_X_R2SCAN, MGGA_X_R2SCAN01, MGGA_X_R4SCAN, MGGA_X_SCANL (deorbitalized, Laplacian instead of τ), MGGA_X_REVSCAN, MGGA_X_TASK, MGGA_X_RPPSCAN. Citation: Sun, Ruzsinszky & Perdew, PRL 115, 036402 (2015); Furness, Kaplan, Ning, Perdew & Sun, J. Phys. Chem. Lett. 11, 8208 (2020), doi:10.1021/acs.jpclett.0c02405 (r2SCAN). Stability note: SCAN's fx(α) step switches are highly grid-sensitive near α≈1; rSCAN/r2SCAN explicitly regularize this (α̃ with the η floor in density tails where τW/τ diverges).

Kernel M-X3: Minnesota (M06/M11/MN) PBE×power-series + VS98 term

  • Variables: ρ, σ, τ. Reference: M06-L (MGGA_X_M06_L).
  • Form: εx = Σσ [εx^PBE(ρσ,∇ρσ)·f(wσ) + εx^UEG(ρσ)·hx(xσ,zσ)], with f(wσ) = Σ_{i=0}^{11} aᵢ·wσ a power series in wσ = (t1)/(t+1), t = τLSDA/τ; hx is the VS98 inhomogeneity rational.
  • Members / parameters: the aᵢ vectors (and the VS98 a,b,c constants) differ per functional: MGGA_X_M06_L, M06, M06_2X, M06_HF, M06_SX, M05, M05_2X, M08_HX, M08_SO, M11, M11_L, MN12_L, MN15_L, MN12_SX, MN15. Parent: MGGA_X_VS98; also MGGA_X_GVT4. Citation: Zhao & Truhlar, J. Chem. Phys. 125, 194101 (2006); Van Voorhis & Scuseria, J. Chem. Phys. 109, 400 (1998). Stability note: Minnesota Fx shape is basis-set-dependent and slowly grid-convergent (Mardirossian & Head-Gordon, JCTC 9, 4453 (2013)); MGGA_X_MK00 has a τ−υ/4 denominator that can vanish or go negative.

Kernel M-X4: BeckeRoussel exchange-hole inversion

  • Variables: ρ, σ, τ (and ∇²ρ). Form: models the spherically-averaged exchange hole as a displaced exponential, solving a transcendental relation x·e^(x)/… = (curvature) for the nonlinear hole parameter; energy density = (1e^(x)½x·e^(x))/b. Requires a Newton root-find per grid point (or the analytic Proynov approximation).
  • Members: MGGA_X_BR89, MGGA_X_BR89_EXPLICIT (ProynovGanKong 2008 analytic refit, γ usually 0.8 or 1.0), MGGA_X_BR89_EXPLICIT_1, MGGA_X_B00, MGGA_X_MBR, and the mBJ (TranBlaha modified BeckeJohnson) potential MGGA_X_TB09/MBJ (potential-only). Citation: Becke & Roussel, Phys. Rev. A 39, 3761 (1989); Proynov et al., Chem. Phys. Lett. 455, 103 (2008). Stability note: the explicit refit raises quadrature noise ~3 orders of magnitude vs the iterative BR89 (Lehtola et al., arXiv:2206.14062); needs the Laplacian and is affected by libxc's Fermi-hole-curvature handling (--disable-fhc).

Kernel M-X5: MVS / MS (made-simple) interpolation

  • Form: PBE-rational h-function interpolated via a rational fx(α) (no step functions). Members: MGGA_X_MS0, MS1, MS2, MS2B, MVS, MGGA_X_MVSB. Citation: Sun et al., J. Chem. Phys. 137, 051101 (2012); Sun, Perdew & Ruzsinszky, PNAS 112, 685 (2015).

meta-GGA exchange one-offs

  • MGGA_X_PKZB, MGGA_X_2D_PRHG07, MGGA_X_GX/PBE_GX (Loos; step-function, numerically ill-behaved per Lehtola 2022), MGGA_X_TLDA, MGGA_X_EDMGGA, MGGA_X_MK00/MK00B, MGGA_X_RTPSS, MGGA_X_JK.

META-GGA RUNG — CORRELATION

Kernel M-C1: TPSS/revTPSS correlation (self-interaction-corrected PBE)

  • Form: εc^TPSS = εc^revPKZB·[1 + 2.8·z³·εc^revPKZB], with εc^revPKZB = εc^PBE[1+C(ζ,ξ)z²] [1+C(ζ,ξ)]z²·Σσ (ρσ/ρ)·max(εc^PBE,σ, εc^PBE), z = τW/τ. Members: MGGA_C_TPSS (enforces z = τW/τ ≤ 1), MGGA_C_REVTPSS, MGGA_C_TPSSLOC, MGGA_C_BLOC. Citation: TaoPerdewStaroverovScuseria, PRL 91, 146401 (2003). Stability note: libxc applies a τW/τ ≤ 1 clamp; a historical factor-of-½-in-τ interface bug caused NaNs in some host codes (QE issue).

Kernel M-C2: SCAN correlation

  • Form: εc = εc^1 + fc(α)[εc^0 εc^1], interpolating a single-orbital εc^0 (revised PW92-based) and a slowly-varying εc^1 (PBE-like with β(rs)); fc(α) analogous to the exchange switch. Members: MGGA_C_SCAN, MGGA_C_RSCAN, MGGA_C_R2SCAN, MGGA_C_R2SCAN01, MGGA_C_SCANL, MGGA_C_REVSCAN, MGGA_C_R2SCAN_VV10 (composition with VV10 NL). Citation: Sun et al., PRL 115, 036402 (2015).

Kernel M-C3: M06-L / Minnesota correlation (BC95-derived)

  • Form: opposite-spin + same-spin components each = εc^UEG·g(x) (a B97 power series in x) times a τ-dependent factor (1 τW/τ for same-spin self-correlation removal), built on the BC95 (Becke 1995) τ-correlation. Members: MGGA_C_M06_L, M06, M06_2X, M06_HF, M05, M05_2X, M08_HX/SO, M11, M11_L, MN12_L, MN15_L, MN15, MGGA_C_BC95 (parent), MGGA_C_VSXC. Citation: Becke, J. Chem. Phys. 104, 1040 (1996); Zhao & Truhlar.

Kernel M-C4: ColleSalvetti / B94 τ-correlation

  • Members: MGGA_C_CS (ColleSalvetti, the parent of LYP), MGGA_C_B94, MGGA_C_KCIS, MGGA_C_TPSSLOC. Distinct from LYP only in retaining τ.

meta-GGA correlation one-offs

  • MGGA_C_PKZB, MGGA_C_M12C, MGGA_C_TM, MGGA_C_REVTM, MGGA_C_HLTAPW, MGGA_C_RREGTM.

meta-GGA kinetic

  • MGGA_K_PC07 (PerdewConstantin Laplacian-level), MGGA_K_CSK, MGGA_K_PGSL025 — Laplacian + τ kinetic functionals.

HYBRID & RANGE-SEPARATED LAYER (thin recipe layer — mixing data only)

Exact exchange is host-supplied; libxc only stores the mixing coefficients and the semilocal kernel composition. The CAM/Ewald range partition convention is:

1/r₁₂ = [α + β·erf(ωr₁₂)]/r₁₂ (long-range) + [1 α β·erf(ωr₁₂)]/r₁₂ (short-range),

so EX = α·EX^HF(full) + β·EX^HF(LR,erf) + (1α)EX^DFA(SR) + …. As r₁₂→0 the HF fraction = α; as r₁₂→∞ the HF fraction = α+β.

  • Global hybrids (single α): HYB_GGA_XC_PBEH/PBE0 (α=0.25, PBE X+C), HYB_GGA_XC_B3LYP (α=0.20 HF; 0.08 LDA-X + 0.72 B88-X; 0.81 LYP-C + 0.19 VWN-C — note the VWN_RPA vs VWN5 ambiguity: B3LYP uses VWN3/RPA in Gaussian/ORCA/PySCF≥2.3, VWN5 in B3LYP5), HYB_GGA_XC_B3LYP3 (VWN3), B3LYP5 (VWN5), BHANDH (α=0.5), BHANDHLYP, B3PW91, B3P86, X3LYP, O3LYP, PBE0_13 (α=1/3); HYB_MGGA_XC_TPSSH (α=0.10), revTPSSH, SCAN0 (α=0.25); MGGA hybrids B86B95/B88B95 (Becke τ-correlation, α per functional), and the M05/M06/M08/M11/MN15 hybrid members (HF % from 10% to 54%, and 100% for M06-HF).

  • Range-separated (α, β, ω):

    Functional α β ω (bohr⁻¹) convention
    HYB_GGA_XC_CAM_B3LYP 0.19 0.46 0.33 CAM
    LC-ωPBE (LRC_WPBE) 0 1.0 ~0.4 LC
    LC-ωPBEh (LRC_WPBEH) 0.20 0.80 ~0.2 CAM
    HSE03 / HSE06 0.25 (SR) 0.25 0.11 (HSE06) screened (HF SR, DFA LR)
    ωB97 0 1.0 0.40 LC + B97 series
    ωB97X 0.157706 (SR) →1.0 0.30 CAM + B97 series
    ωB97X-V / ωB97M-V as ωB97X + VV10 NL correlation
    CAMY-B3LYP / LCY-* per Yukawa Yukawa screening (not erf)

    Historical libxc bugs to be aware of: LC_BLYP used ω=0.3 vs intended 0.33; CAM_QTP_01 had 81/19 vs intended 80/20 LYP/VWN5; CAP0 had 75% vs intended 25% HF.

  • Yukawa range separation (screening exp(ωr)/r instead of erf): the CAMY / LCY / LC-Yukawa family — a different attenuation kernel, same mixing-data treatment.

  • Composition (recipe, not kernel): many _XC entries are literally an X-kernel + C-kernel glued together: BLYP = B88 + LYP, BP86 = B88 + P86, OLYP = OPTX + LYP, PBE = PBE-X + PBE-C. These are recipes (two kernel references + coefficients), not new kernels.


Compression Summary

  • 600+ libxc entries → ~5070 distinct analytic kernels. Rough kernel counts by rung: LDA ≈ 12 (Dirac-X + relativistic/dim variants; VWN, PW92, PZ, Chachiyo, Wigner, HL/GL, finite-T KSDT/GDSMFB, EPC, TF-kinetic); GGA-X ≈ 1215 (PBE-rational, RPBE-exp, B88, B86, PW91, OPTX, G96, AM05, LB-potential, HJS, WC, SOGGA, EV93, AK13); GGA-C ≈ 6 (PBE-H, LYP, P86, WilsonLevy, AM05, one-offs); GGA-K ≈ 2 (TF-λ-vW, PBE-kinetic-shell); mGGA-X ≈ 6 (TPSS, SCAN, Minnesota, BR89, MVS/MS, one-offs); mGGA-C ≈ 5 (TPSS, SCAN, Minnesota/BC95, CS/B94); hybrids/RSH = 0 new kernels (pure mixing data).
  • The single biggest win: the PBE rational shell Fx = 1+κ−κ/(1+μs²/κ) plus its argument-substitution descendants (TPSS, SCAN h1x) covers well over 100 functional entries across GGA-X, GGA-K and mGGA-X with parameter/argument changes only.

Recommendations (for the JAX clean-room reimplementation)

  1. Stage 1 — implement the high-coverage kernels first. In priority order by functional count: (a) DiracSlater LDA-X, (b) PW92 + VWN local correlation, (c) PBE rational exchange shell, (d) PBE H(t) correlation, (e) B88 + LYP (gets you BLYP/B3LYP), (f) the B97 u-power series. These six kernels plus their parameter tables already cover the majority of production functionals (PBE, PBEsol, revPBE, RPBE, BLYP, B3LYP, PBE0, the B97/HCTH family).
  2. Stage 2 — meta-GGA shells: TPSS rational-with-iso-orbital, SCAN/r2SCAN interpolation (implement r2SCAN's regularized α̃ first — it is the numerically robust default; use dp2 = 0.361), Minnesota PBE×power-series. Defer BR89 (it needs a per-point Newton root-find for the exchange-hole parameter — implement as a custom-JVP-wrapped solver).
  3. Represent parameters as a database, kernels as pure functions. Schema per leaf: {functional_id, kernel_family_id, param_tuple, base_LDA_ref, family/kind tags, citation/DOI}. Hybrids/RSH get an extra mixing record {alpha, beta, omega, screening_convention ∈ {erf, yukawa}, component_kernel_refs}.
  4. Encode the numerical guards from libxc source as kernel-level config: density floor (dens_threshold), s→∞ saturation (PBE rational saturates naturally; RPBE/B88 need overflow-safe exp/arcsinh), τ iso-orbital boundaries (α near 1 for SCAN — use r2SCAN regularization; z ≤ 1 clamp for TPSS correlation), and the Laplacian/Fermi-hole-curvature handling for the BR89 class (replicate --disable-fhc behavior).
  5. Validate against libxc reference data per functional (energies + up to 4th derivatives), since libxc's Maple-generated code is the de-facto numerical standard. Mismatches usually trace to (i) the VWN3/VWN5 ambiguity, (ii) the τ factor-of-½ convention, or (iii) the (3π²) vs (6π²) reduced-gradient constants.

Thresholds that change the plan: if you only need the ~20 most-used functionals, Stages 12 minus BR89/Minnesota suffice (~10 kernels). If you need full libxc parity including the long tail, budget for ~6070 kernels and the transcendental BR89 solver; the marginal cost per additional functional then drops to a single database row.


Caveats

  • Parameter precision: three values were corroborated from the peer-reviewed TranLehtolaPittalisMarques review (arXiv:2602.17333, 2026) and program docs rather than read verbatim from the .mpl/.c source blobs — specifically GGA_X_XPBE (κ=0.91954, μ=0.23889), GGA_X_PBE_MOL (μ≈0.27583), and the GGA_X_LAMBDA_OC2_N N-dependent κ. Cross-check these directly against maple/gga_x_xpbe.mpl, gga_x_pbe.c, and gga_x_lambda*.mpl before committing to a database. (GitLab raw blobs render via JavaScript and were not directly fetchable during this research.) The PBE/PBEsol/B88/LYP/PW92/SCAN/r2SCAN constants are confirmed (PBEsol μ=10/81, β=0.046 corroborated by the VASP wiki; r2SCAN dp2=0.361 per the published Correction to Furness 2020).
  • Kernel count is approximate and depends on how finely you split "same form, different power p" cases (e.g. B86 p=1 vs p=4/5, or treating RPBE-exponential as distinct from PBE-rational). The 5070 figure treats distinct analytic expressions as distinct; collapsing near-identical rationals would push it lower.
  • Potential-only functionals (LB94, mBJ/TB09) do not derive from an energy expression and must be flagged specially — they return a vxc directly and have no consistent εxc; libxc lists them but they cannot be used in energy-only or post-SCF energy evaluations.
  • Version drift: functional definitions and even default parametrizations change between libxc releases (the changelog documents corrected parameters for KCIS, OPTC, CAM_QTP_01, LC_BLYP ω, and others). Pin to a specific libxc version (devel as of mid-2026) when building the parameter database.
  • VWN3/VWN5 and PZ/PW92 LDA-base ambiguity is the single most common source of cross-code disagreement; record the exact LDA-correlation base for every GGA/mGGA correlation functional and every hybrid explicitly.
  • Combined-XC vs split functionals: in libxc, most functionals are split into separate _X and _C entries that the host combines; a minority (LYP-based, TozerHandy, the _XC Minnesota and range-separated forms) are delivered as monolithic XC. Your database should mark each leaf as exchange-only, correlation-only, or combined-XC to drive the composition layer correctly.