ATAT 专题

ATAT张量簇展开:拟合、预测与误差

用lsfit拟合八个张量基系数,通过gce原生预测并比较留出误差。

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

完成构型和应力标签准备后,在同一个ATAT-tensors目录操作。完整实例包。

1 看原生设计矩阵与系数#

每个构型内,实际调用gce -2=2.8 -3=2.8 -4=2.8 -sig=12生成张量簇基。距离单位为Å,对、三体、四体簇最长边均限制为2.8 Å;它们与这里的3.9 Å母晶格共同定义具体模型。

source /etc/profile
module load atat/3.52-8173m
cat new-work/coefficients.eci
lsfit -x=new-work/design-train.txt -y=new-work/stress-train.txt > new-work/refit.eci

本例实际得到八个系数:

0.04113
-0.24967
-0.08332
-0.04371
-0.03493
-0.00501
0.00725
-0.00006

基矩阵已经含有对称性允许的空簇张量项,不另外加-1标量截距。这里安装版本的lsfit实际输出保留五位小数;后续原生预测就使用这份输出,不自行补造更多有效数字。独立NumPy最小二乘结果按同样输出精度舍入后与它一致。

2 直接执行一次原生张量预测#

cd new-work/case32
gce -c -eci=coefficients.eci -mi -sig=12 > predicted-again.out
head -13 predicted-again.out
cd ../..

-c读取已生成的张量clusters.out。本例通过设计矩阵拟合的系数已经包含相应多重度约定,因此预测使用-mi。不要删掉这个标志后,仍把同一份系数当成相同模型。

输出开头2、3、3、9依次描述张量阶数、两个维度与元素数,随后是九个分量。本例case32的预测对角元约为−0.142397961966 eV/ų,对应约−22.815 GPa;非对角元接近零。负号沿用ASE应力约定,表示该分量受压。

3 读取全部留出构型的误差#

bash plot.sh
ls -lh new-work/figures/*.png

留出张量的原生预测与实际标签

8个留出构型的九分量RMSE约0.000556249 eV/ų,即0.08912 GPa。用训练集常数平均张量预测的同一定义误差约0.0435568 eV/ų,说明这批构型上的拟合确实学到了变化。图中散点使用全部8个留出张量,右侧矩阵展示其中偏应力最明显的构型,便于观察方向差异和预测误差。

这只是有限固定晶格、给定组元与EMT标签下的示例误差。新增结构、应变或材料时,要重新准备一致的真实标签,检查构型覆盖和留出误差,不能把这里的系数直接当成其他材料的应力模型。

4 接到自己的数据时检查什么#

先保证母晶格与结构映射正确,再统一标签坐标系、单位和应力符号。按独立原始构型划分训练与测试,避免把对称等价或旋转副本放进不同集合。保持gcetensor.in、clusters.out、系数文件和预测时的多重度约定成套使用。

需要拟合弹性常数等更高阶张量时,应先定义对应指标置换对称性,并提供相应物理标签。下面的广义应变方向基教程介绍gencs的数学基,它本身不提供材料弹性常数。

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

查看配图

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

100%查看原图 ↗