ATAT三元拟合结果:形成能、残差与作图
逐列读取原生fit.out,区分总能量和形成能,并用真实数据作图。
阅读本篇目录
本篇接三元MPI拟合教程,使用同一套实例包。不重新计算也可以直接读取包内reference。
1 先确定元素顺序#
cat reference/atoms.out
head -n 5 reference/fit.out
cat reference/maps.log
本例原生atoms.out的顺序是Al Au Cu,所以fit.out前三列依次是这三个元素的浓度;不要按lat.in里的字符串先入为主地指定图轴。
本例八列依次为三种浓度、真实形成能、预测形成能、真实减预测的残差、拟合权重、构型目录编号。能量与残差单位为eV/原子。
2 总能量怎样变成形成能#
输入energy是每个晶胞的总能量;程序结合原子数和纯元素参考能,将结果转换为每原子形成能:
形成能 = 构型总能量 / 原子数
- x_Al × 纯Al参考能/原子
- x_Au × 纯Au参考能/原子
- x_Cu × 纯Cu参考能/原子
参考态必须来自一致的方法与设置。本例纯元素同样使用固定3.9 Å的FCC晶格和EMT,因此不能把这里的形成能当作各元素完全弛豫基态定义下的合金形成能。
head -n 8 reference/labels.csv
awk 'NR<=5 {print $4, $5, $6}' reference/fit.out
最后一列编号用于回到inputs/编号/str.out查看具体构型。同一浓度可以对应多种占位结构,因此成分三角形上的点可能重合,结构数量并不等于不同浓度点数量。
3 用实算数据画图#
bash plot.sh
ls plots
脚本使用配套ASE Python环境中的NumPy与Matplotlib,读取已有reference/fit.out,不会重新算EMT标签或重新拟合。

左图越靠近对角线,表示预测越接近训练标签;右图给出原生残差列。训练拟合残差和交叉验证分数含义不同,不能只挑训练误差报告模型精度。
4 换成自己的体系时#
先准备一致的母晶格,逐个生成真实str.out和能量标签,再执行同样的MPI拟合和结果检查。若用VASP产生标签,保持赝势、泛函、截断能、k点精度和能量定义一致;明确是否允许晶胞或离子弛豫。结构发生重构、不再属于选定母晶格时,应重新判断簇展开模型是否适用。
要继续Monte Carlo或相图计算,还需要检查有效簇、构型覆盖与模型适用域。30个小体系示例说明文件怎样接起来,不足以自动构成收敛的三元材料相图。