ATAT 专题

ATAT 二元簇展开实算

用29个Cu–Au的实际VASP能量建立簇展开,阅读形成能、交叉验证及参数精度对照。

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

ATAT 专题导读 · 查看全部文章

29 个 Cu–Au 结构的 DFT 能量与簇展开#

先生成结构#

本例采用 FCC 母晶格,固定晶格常数 3.85 Å,枚举至 4 原子原胞:

genstr -n=4 > genstr.out

不同结构以独立的 end 行分隔。配套脚本将它们拆成编号目录,每个目录保存一个 str.out。这一范围共得到 29 个对称不等价结构。

计算每个结构的能量#

参数 主数据集 对照计算
软件、泛函 VASP 6.4.2、PBE PAW 相同
ENCUT 450 eV 550 eV
k 网格规则 各倒格矢方向间距不大于 0.25 Å⁻¹ 不大于 0.20 Å⁻¹
SCF EDIFF=1e-7、NELM=120 相同
展宽 ISMEAR=1、SIGMA=0.1 eV 相同
自旋、结构 非自旋极化;固定原子位置及晶胞 相同
其他 LREAL=.FALSE.、LASPH=.TRUE. 相同

这是一组固定 FCC 晶格的教学数据,用于完整走通训练和分析过程。纯 Cu、纯 Au 参考也在相同晶格常数下计算;它不是充分弛豫的 Cu–Au 基态相图,不能把其中的相稳定性直接等同于实验。

全部 29 个结构完成电子收敛后,按以下式子计算每原子的形成能:

ΔE = Ecell / N − (1 − cAu) ECu − cAu EAu

这里两种纯元素的参考能也是每原子能量。固定格点的氮化物等体系不能直接照搬这条二元全占据公式。

纯 Cu 参考为 -3.5941924 eV/atom,纯 Au 为 -2.6522221 eV/atom。以下列出全部 29 个结构;完整输入、晶胞总能和 k 网格见算例包与 data/cuau_dft.csv。

结构编号 原子数 Au 分数 总能 / eV·atom⁻¹ 形成能 / meV·atom⁻¹
0 1 0.0000 -3.5941924 0.000
1 1 1.0000 -2.6522221 0.000
2 2 0.5000 -3.4081158 -284.909
3 2 0.5000 -3.4939959 -370.789
4 3 0.3333 -3.4696467 -189.444
5 3 0.6667 -3.1642891 -198.077
6 3 0.3333 -3.5851530 -304.951
7 3 0.6667 -3.2725757 -306.364
8 3 0.3333 -3.5329657 -252.763
9 3 0.6667 -3.2247177 -258.505
10 4 0.2500 -3.5056958 -146.996
11 4 0.5000 -3.2768442 -153.637
12 4 0.7500 -3.0430870 -155.372
13 4 0.2500 -3.5879675 -229.268
14 4 0.5000 -3.4454390 -322.232
15 4 0.7500 -3.1226112 -234.897
16 4 0.2500 -3.5872062 -228.506
17 4 0.7500 -3.1247288 -237.014
18 4 0.2500 -3.6289195 -270.220
19 4 0.5000 -3.4847748 -361.568
20 4 0.7500 -3.1702820 -282.567
21 4 0.2500 -3.5819815 -223.282
22 4 0.5000 -3.3943340 -271.127
23 4 0.7500 -3.1193702 -231.656
24 4 0.2500 -3.5462233 -187.523
25 4 0.5000 -3.3125925 -189.385
26 4 0.7500 -3.0777845 -190.070
27 4 0.2500 -3.6302830 -271.583
28 4 0.7500 -3.1797142 -292.000

29 个结构的形成能与有限枚举范围内的下凸包

图中的连线是本次已计算结构的下凸包,不意味着已经穷尽所有更大周期结构、其他晶格或磁态。

建立簇展开#

把 lat.in 与各编号目录的 str.out、energy 放在同一项目树中。本文对已有 29 个能量使用:

maps -d -t=1 -g=4 -mv=4

-t=1 每秒检查一次输入变化;-g=4 将基态搜索延伸到指定规模;-mv=4 限制新结构的体积范围。程序会持续等待新的结构或能量,看到拟合结果后,在同一目录创建 stop 正常结束。

如果从零开始让 ATAT 持续选择结构,则使用自动工作流:先启动 maps,由 pollmach 请求并派发结构,再由 runstruct_vasp 写回能量。现行 sub_maps_vasp.sh 将它们放在同一个 Slurm 分配内。关系如下:

有空闲计算资源
    ↓ 创建 ready
maps 产生 编号/str.out 和 编号/wait
    ↓ pollmach 领取结构
VASP 计算 → extract_vasp → 编号/energy
    ↓
maps 更新拟合、交叉验证和基态预测

wait 表示结构等待计算,busy 表示处理中,energy 是成功得到的输入数值,error 用于暂时排除不适合参与拟合的结构。正常结束自动流程需要等待当前 VASP 计算完成,再创建 stop 和 stoppoll。重新开始前先确认旧进程已经退出,再清除自己这次计算留下的停止标记。

怎样判断拟合是否有用#

文件 应关注的内容
maps.log 交叉验证分数、已知结构基态是否一致、搜索范围
fit.out 每个结构的真实形成能、拟合形成能、误差与标识
predstr.out 待计算结构的预测;不应当作 DFT 真值
clusters.out + eci.out 团簇和有效相互作用,必须成套保存
gs_str.out 当前拟合识别的基态结构
ref_energy.out 形成能所用参考
指标 本次结果
训练结构 29
ECI 数量 13
训练 RMSE 3.479 meV/atom
交叉验证 CV 5.440 meV/atom
训练集最大绝对误差 10.423 meV/atom

实际能量与簇展开预测

训练集误差小,不代表未知结构误差也小。交叉验证用于检查泛化能力;涉及多个接近的候选基态时,还要单独补算候选结构。不要把某个固定的“CV 小于多少”当作所有体系的统一合格线,精度应与目标相之间的能量差相比。

eci.out 的系数通常不包含团簇重数;重构能量时需要乘相应重数。clusterexpand 同时输出 .eci 和 .ecimult,后者已经乘过重数,不要再乘一次。

clusterpredict energy 会写出名为 energy 的预测结果,并可能覆盖同名的已算能量。预测新结构时建立独立目录,只放入对应的 str.out;保留原来的 DFT 训练目录。配套脚本在 prediction-example/ 中演示这一步。

对照更高精度参数#

结构 主网格 → 对照网格 主形成能 对照形成能 差值
0 12×12×12 → 15×15×15 0.000 0.000 0.000
1 12×12×12 → 15×15×15 0.000 0.000 0.000
2 11×11×11 → 14×14×14 -284.909 -269.040 15.868

后三列单位均为 meV/atom。结构 2 的形成能改变约 15.87 meV/atom,提示在定量使用前仍应继续做精度收敛。

形成能对更高 ENCUT 与更密 k 网格的响应

这次对照同时改变了两类参数,只能说明这一组联合变化的影响,不能分别归因于 ENCUT 或 k 网格。它也没有覆盖展宽、结构弛豫、赝势选择及所有 29 个结构,因此保留上述教学适用范围。

数据和配套算例#

下载完整实算资料包,保留 examples/common,进入所需算例目录执行 sbatch submit.sh。输入、参考结果、科学设置和重跑方式均在各目录的 README 中。

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

查看配图

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

100%查看原图 ↗