VASP 专题

libbeef随机种子与VASP集合复现

libbeef 0.1.3实际编译运行:C接口、导数、随机种子与VASP集合核对。

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

下载完整C源码、原始数据与一键运行脚本。

使用已有DFT输出,不再做一次自洽计算#

本例读取四份真实VASP 5.4.4 BEEF输出:干净Cu表面、气相CO、顶位和fcc位吸附结构。OUTCAR中除了2000个集合值,还给出32项BEEF xc energy contributions。将这32项传给同版本libbeef,可重建默认集合,再比较自定义随机种子对有限样本统计的影响。

第一步:编译与运行#

bash run.sh
cat REAL-RESULTS.json
ls real/

replay_real.py从input/*/OUTCAR提取32项贡献,regenerate.c调用库生成2000个成员。整个流程仅需一个CPU核。完整源码和四份OUTCAR均在下载包中。

也可以直接对已经提取的基展开贡献运行:

# 不传参数:使用库默认随机种子
./regenerate < real/CO-top-basis.txt > top-default.txt
# 指定一个种子
./regenerate 27129 < real/CO-top-basis.txt > top-seed27129.txt

第二步:检查默认结果能否复现#

默认种子重建的四组2000成员,与原始OUTCAR逐成员最大差异不超过1.11×10⁻¹¹ eV,属于本例文本输出精度量级。它验证了当前库、贡献顺序和VASP接口在这些文件中的对应关系。

这里输入是VASP输出的能量贡献,单位eV,因此生成值也为eV;库只做线性组合,不会自动转换单位。

第三步:同一种子下组合反应能#

对顶位吸附,逐成员计算top − clean − CO。每个体系生成之前都重置到同一个种子,使成员代表相同参数扰动。不要连续生成四次而不重置状态,否则成员之间失去应有的配对关系。

种子设置 顶位吸附集合标准差/eV
默认 0.136251
27129 0.133058
12345 0.137112

默认与自定义随机种子的实际配对结果

图中各组已减去本组平均值。三种种子的结果接近但不完全相等,这是有限集合抽样的变化,不是重新训练泛函或重新自洽得到的三个吸附能。改变种子不能用于挑选“更好看”的不确定性。

默认参数、自定义种子和自定义泛函不要混淆#

本例自定义的是随机种子,不修改BEEF-vdW的拟合参数。beefsetmode_允许调用交换展开的单个基函数及关联分量,用于构造贡献和后处理;它不是普通VASP用户任意提交一套新泛函系数的通用输入接口。改变32项贡献也不等于为一个新泛函完成自洽计算。

regenerate读入32个数,固定输出2000个成员,这与libbeef 0.1.3源码的规模一致。需要改变集合规模或训练参数时,应另行开展方法验证,不能只改CSV标题。本文和配对集合分析配合使用,先保证能量定义、成员配对和物理模型一致,再解释不确定性。

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

查看配图

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

100%查看原图 ↗