Libxc专题

Libxc泛函选择:LDA、PBE、SCAN与r²SCAN

实际查询编号、VASP参数组合和六种泛函分量的数值曲线。

更新于 2026-10-27约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载输入、C程序、真实结果与绘图脚本。

1 用标签查清楚泛函含义#

本篇针对集群实际安装的Libxc 7.1.2。X表示交换、C表示关联、XC表示合在一起的交换关联;LDA、GGA、MGGA表示输入依赖不同,不能仅按编号大小判断“更准确”。在CPU环境执行:

XCINFO=/public/software/vasp/deps/libxc/7.1.2/oneapi-2024.2/8173m-nofhc/bin/xc-info
"$XCINFO" 101
"$XCINFO" 130
"$XCINFO" 497

实际输出分别对应PBE交换、PBE关联和r²SCAN交换。查询结果还列出参考文献、参数、可用导数阶数。下载包的api/functional-*.txt保存本次查询结果。

功能 7.1.2编号 标签 需要的局域输入
LDA交换 1 LDA_X ρ
PW关联 12 LDA_C_PW ρ
PBE交换 101 GGA_X_PBE ρ、σ
PBE关联 130 GGA_C_PBE ρ、σ
SCAN交换/关联 263 / 267 MGGA_X_SCAN / MGGA_C_SCAN ρ、σ、τ
r²SCAN交换/关联 497 / 498 MGGA_X_R2SCAN / MGGA_C_R2SCAN ρ、σ、τ
PBE0 406 HYB_GGA_XC_PBEH 半局域输入与宿主精确交换

这里σ是密度梯度平方,τ为动能密度。其他meta-GGA还可能需要密度拉普拉斯,不能把所有MGGA都当成相同接口要求。

2 在VASP里写哪一组参数#

PBE:

GGA = LIBXC
LIBXC1 = GGA_X_PBE
LIBXC2 = GGA_C_PBE

SCAN:

METAGGA = LIBXC
LIBXC1 = MGGA_X_SCAN
LIBXC2 = MGGA_C_SCAN

r²SCAN:

METAGGA = LIBXC
LIBXC1 = MGGA_X_R2SCAN
LIBXC2 = MGGA_C_R2SCAN

PBE0:

LHFCALC = .TRUE.
AEXX = 0.25
GGA = LIBXC
LIBXC1 = HYB_GGA_XC_PBEH

一次只保留一种方案。PBE0的XC标签已经含交换与关联,不再添加LIBXC2;精确交换仍由VASP计算。包内四种方法都有Si实算输入和OUTCAR,可以从已有目录复制修改。

meta-GGA分支的Libxc按VASP要求以--disable-fhc编译;普通用户不需重新配置。库里有某个泛函,并不等于每个宿主、每个版本都完整支持它。VASP 6.3.x与6.4及之后的接口范围也有差别,尤其涉及密度拉普拉斯与meta-GGA杂化时,先核对版本说明。

3 用小程序观察各族泛函#

下载包api/xc_demo.c在ρ=0.01至0.20 electron/bohr³的20个点上,分别调用LDA交换、PW关联、PBE交换/关联、r²SCAN交换/关联。GGA和meta-GGA使用σ=0.02ρ²,meta-GGA使用τ=0.3+ρ、拉普拉斯为0,全部为原子单位。

bash api/run.sh
head api/results.csv
module load py4vasp/0.11.3
python plots.py

编译入口加载oneAPI 2024.2,用icx链接实际Intel编译的Libxc静态库。该例是局域泛函函数值演示,不是Si或水的自洽计算,也不代表这些局域变量对应唯一真实材料。图中的交换和关联分量未相加,不应把单独的关联曲线当作完整XC能量。

LDA、PBE、r²SCAN局域分量及导数核对

左图为每电子能量,右图为解析导数与中心有限差分的最大绝对差。120个点最大差为9.43×10⁻¹⁰(各导数原子单位)。不同导数的量纲不同,图用于检查数值调用一致性,不用于比较物理量大小。

参考:VASP LIBXC1接口、组合规则与版本条件、Libxc项目与源码。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗