ATAT 二元簇展开实算
用29个Cu–Au的实际VASP能量建立簇展开,阅读形成能、交叉验证及参数精度对照。
阅读本篇目录
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 |

图中的连线是本次已计算结构的下凸包,不意味着已经穷尽所有更大周期结构、其他晶格或磁态。
建立簇展开#
把 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 网格。它也没有覆盖展宽、结构弛豫、赝势选择及所有 29 个结构,因此保留上述教学适用范围。
数据和配套算例#
下载完整实算资料包,保留 examples/common,进入所需算例目录执行 sbatch submit.sh。输入、参考结果、科学设置和重跑方式均在各目录的 README 中。