VASP 专题

VASP的BEEF反应能与集合分析

用水生成反应的实际计算,学习BEEF-vdW能量与相关集合误差的组合。

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

不同交换关联近似可能给出不同反应能。BEEF-vdW及其泛函集合提供了一种观察这种模型敏感性的方法。本例计算H₂+½O₂→H₂O,重点是反应能的参照和集合配对,不把集合宽度当作所有误差的保证范围。

1. 准备三个一致的分子模型#

三个分子均放在12 Å立方盒中心,使用Gamma k点、550 eV、EDIFF=1E-6、PBE PAW64。H₂键长0.75 Å,O₂键长1.23 Å,水使用此前优化得到的几何。O₂采用自旋极化,NUPDOWN=2,固定三重态对应的总自旋差。

这里保持原子位置固定;没有分别进行BEEF几何优化。三个电子总能量组合得到的是这套指定几何下的电子反应能,尚未加入零点能、有限温度、熵或气相标准态修正,不能称作标准生成焓。

2. 加载支持libbeef的分支#

本例使用vasp/5.4.4-8173m-beef的vasp_std,链接libbeef 0.1.3,oneAPI 2023.2中的ICC/ifort 2021.10构建。它是CPU可执行程序,要求相应指令集;附件通过Slurm选择具有兼容宿主CPU的V100资源,计算不等于BEEF GPU加速。

GGA = BF
LUSE_VDW = .TRUE.
ZAB_VDW = -1.8867
LBEEFENS = .TRUE.

使用配套vdw_kernel.bindat,并在OUTCAR中确认读取到核文件及BEEFens集合结果。只有标签存在而库未链接,不能认为相应功能已经启用。SUNCAT的BEEF用法

三个分子分别提交run.sh,完成后保留OUTCAR和vasprun.xml。附件脚本已包含模块、核文件位置和Slurm资源设置。

3. 先计算中心泛函的反应能#

ΔE = E(H₂O) − E(H₂) − 0.5E(O₂)
模型 反应系数 电子能 / eV 集合条目数
water 1.0 -12.82907588 2000
hydrogen -1.0 -7.17252554 2000
oxygen-triplet -0.5 -6.65837991 2000

本次ΔE为 -2.327360 eV/生成一个H₂O。系数1、−1、−0.5保证两边H、O原子数守恒;不要把O₂整分子的能量直接当作一个O原子的化学势。

4. 集合必须逐项配对#

对第i套泛函参数,先形成同一个反应组合:

δEi = δEi(H₂O) − δEi(H₂) − 0.5δEi(O₂)

再对2000个反应组合求标准差。本次相关集合标准差为 0.088564 eV。图中展示减去集合均值后的反应集合分布,不把输出中的单体系集合条目直接当作中心泛函的绝对总能量。

vasp-beef-uncertainty 实算结果

若忽略同一泛函参数在不同分子之间的相关性,分别求标准差后再独立平方相加,本次会得到8.151990 eV;这不是本反应应使用的BEEF集合宽度。不能打乱各文件的集合顺序,也不能混用不同集合参数生成的输出。

libbeef提供的bee工具同样按化学计量系数组合输出,再计算标准差;本包脚本采用相同的逐项组合思路,并用协方差矩阵交叉核对。libbeef官方说明

5. 这个宽度没有包含什么#

集合主要反映该方法中的交换关联模型变化,不自动包含盒子大小、基组截断、SCF误差、几何选择、遗漏反应路径、热力学校正或自旋态选择的全部影响。较窄的集合也不代表实验误差一定小。

比较两个吸附位点或反应步骤时,同样要先在每个集合成员内做能量差,再分析分布。针对新材料,应保留实际的参照和适用范围,避免只展示一个没有定义的“误差棒”。

输入、脚本和结果#

下载输入、结果与提取脚本(ZIP)

三项计算完成后,加载ASE环境运行python extract_beef.py,读取自己的三份OUTCAR与vasprun.xml,生成BEEF-DATA.json。参考结果和图为本次实际计算;附件不含POTCAR、波函数或vdW核文件。

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

查看配图

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

100%查看原图 ↗