Libxc实操:Si与水分子的VASP计算
完整输入、提交命令、内置与Libxc PBE的真实能量和受力对照。
阅读本篇目录
1 先选择计算程序,再选择泛函#
Libxc提供交换关联泛函及其导数,本身不负责结构优化、赝势、基组或自洽迭代。普通VASP用户通过INCAR调用即可,不需要自己编译C程序。鸢算科技的VASP 6.6.1、6.5.1、6.4.3、6.4.2、6.3.2均有独立CPU Libxc分支;编译环境为Intel oneAPI 2024.2、Intel MPI、MKL、Libxc 7.1.2和HDF5 1.14.6。版本入口见VASP Libxc使用指南。
本篇使用已经在集群CPU节点实际完成的VASP 6.6.1结果。下载包中的Si是略微扰动的2原子晶胞,便于同时观察能量、非零受力和应力;水分子放在8 Å立方盒中。这些是方法使用例,不是收敛后的材料基准值。

2 复制Si输入并准备赝势#
cp -r vasp/si-libxc-pbe my-si
cd my-si
cat POSCAR
cat KPOINTS
POSCAR完整内容:
Libxc validation si
1.0
0.00000000000000 2.71500000000000 2.74200000000000
2.70000000000000 0.00000000000000 2.71500000000000
2.71500000000000 2.69000000000000 0.00000000000000
Si
2
Direct
0.00000000000000 0.00000000000000 0.00000000000000
0.26300000000000 0.24600000000000 0.25400000000000
KPOINTS完整内容:
Validation mesh
0
Gamma
2 2 2
0 0 0
使用你有权使用的匹配Si PAW赝势生成POTCAR;下载包不分发POTCAR。对照两种泛函实现时必须使用同一个POTCAR。下列INCAR来自真实计算,历史对照使用较严格的EDIFF=1E-10;普通流程可先使用1E-6,再按目标精度测试。
SYSTEM = si-libxc-pbe
ENCUT = 600
PREC = Accurate
EDIFF = 1E-10
NELM = 250
ALGO = Normal
ISMEAR = 0
SIGMA = 0.05
IBRION = -1
NSW = 0
ISIF = 3
ISYM = -1
LREAL = .FALSE.
LASPH = .TRUE.
ADDGRID = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
LH5 = .TRUE.
ISTART = 0
ICHARG = 2
NBANDS = 24
NCORE = 1
KPAR = 1
GGA = LIBXC
LIBXC1 = GGA_X_PBE
LIBXC2 = GGA_C_PBE
3 提交、检查和读取能量#
yskit
# 复制Slurm脚本 → VASP → Libxc泛函库(CPU)→ 6.6.1
sbatch sub_vasp_6.6.1_8173m.sh
# 等作业结束后
grep -E "Libxc|GGA_X_PBE|GGA_C_PBE" OUTCAR
grep "free energy TOTEN" OUTCAR | tail -1
tail -20 OUTCAR
脚本名称以yskit实际复制的文件为准。确认电子收敛与正常结束,再读取能量,不能只凭OUTCAR文件存在判断计算完成。此分支按CPU资源提交,不能直接把P100模板改名当作Libxc GPU版。
Si本例内置PBE的总能量为-8.26157292 eV,Libxc PBE为-8.26157327 eV。对照时复制一个新的目录,把GGA=LIBXC改为GGA=PE并删除LIBXC1、LIBXC2,保持其他输入一致。
4 水分子怎样照着做#
cd ..
cp -r vasp/water-libxc my-water
cd my-water
cat POSCAR
cat KPOINTS
yskit
若你刚从my-si返回,当前目录应是下载包根目录。水分子POSCAR为:
Libxc validation water
1.0
8.00000000000000 0.00000000000000 0.00000000000000
0.00000000000000 8.00000000000000 0.00000000000000
0.00000000000000 0.00000000000000 8.00000000000000
O H
1 2
Direct
0.50000000000000 0.50000000000000 0.50000000000000
0.59800000000000 0.50200000000000 0.56500000000000
0.40700000000000 0.50000000000000 0.56000000000000
根据POSCAR中的元素顺序准备O/H赝势并复制CPU脚本。水分子使用Γ点,完整INCAR和KPOINTS均在下载包。内置PBE与Libxc PBE分别得到-13.96917719和-13.96921250 eV。本例总能量差约−0.03531 meV,最大力分量差约9×10⁻⁶ eV/Å。这个微小但可测的绝对能量偏移提醒我们:反应能、吸附能等应保持同一实现,不能将两种路线的绝对能量混合相减。

5 自己提取并画图#
module load py4vasp/0.11.3
python plots.py
绘图脚本读取下载包的vasp/results.json,生成figures/host-comparison.png。图中不同材料的能量差单位为meV/晶胞,并未跨材料比较总能量大小。做自己的研究时,仍需分别检查截断能、k点、真空层和结构收敛。