Functionals

XC functionals are resolved through libxc at runtime. Any functional name libxc accepts works: short names ("LDA", "PBE", "B3LYP") and libxc XC_… identifiers both work.

Common choices

Name

Type

HF-exchange

Notes

LDA / SVWN

LDA

0 %

Slater + VWN5. Fast sanity check.

PBE

GGA

0 %

Workhorse for solid state.

BLYP

GGA

0 %

Classic molecular GGA.

PBE0

hybrid

25 %

PBE + Fock exchange.

B3LYP

hybrid

20 %

de-facto for organics.

HSE06

range-sep hybrid

25 % short-range

Needs range-separated Coulomb (coming later).

Accessing HF-exchange fraction

from vibeqc import Functional
fn = Functional("PBE0")
print(fn.hf_exchange_fraction())    # 0.25
print(fn.kind())                    # XCKind.GGA

Custom functional strings

libxc supports composition via ,:

fn = Functional("XC_LDA_X,XC_LDA_C_VWN")     # explicit Slater + VWN
fn = Functional("XC_GGA_X_PBE,XC_GGA_C_PBE")  # PBE made of separate components