ATAT 入门与输入文件
从加载环境、提交任务和读懂结构文件开始,按顺序进入SQS、簇展开和热力学工作流。
阅读本篇目录
ATAT 将结构生成、簇展开与有限温度统计连接起来。本专题按实际操作拆成 11 篇教程与 7 篇命令参考;包含真实计算的表格、16 张图片和可重跑附件。先从环境与结构文件开始,再按自己的任务选择阅读。
下载完整 PDF · 下载算例与全部资料(约 4.9 MB,含输入、参考输出、作业脚本与重绘脚本)。
操作与实算阅读顺序#
| 顺序 | 内容 | 学到什么 |
|---|---|---|
| 01 | ATAT 入门与输入文件 | 从加载环境、提交任务和读懂结构文件开始,按顺序进入SQS、簇展开和热力学工作流。 |
| 02 | ATAT SQS 结构生成 | 生成16/32/64原子Cu–Au、三元Nb–Mo–Ta及固定N子晶格SQS,检查关联误差并导出结构。 |
| 03 | ATAT 与 VASP 自动计算 | 准备vasp.wrap,理解结构、赝势、总能和受力的传递,连接自动结构计算。 |
| 04 | ATAT 二元簇展开实算 | 用29个Cu–Au的实际VASP能量建立簇展开,阅读形成能、交叉验证及参数精度对照。 |
| 05 | ATAT 蒙特卡洛与相边界 | 用给定哈密顿量执行独立重复采样和phb追踪,读懂浓度、关联函数和统计误差。 |
| 06 | ATAT 多元簇展开与统计 | 以Cu–Au–Al的30个EMT结构说明mmaps、memc2及多元化学势与组分设置。 |
| 07 | ATAT 声子与振动自由能 | 从Al的实际EMT位移受力计算出发,完成fitfc色散及fitsvsl/svsl自由能。 |
| 08 | ATAT 电子自由能与温度 ECI | 用实际VASP态密度计算电子自由能,并通过clusterexpand和mkteci构建温度相关模型。 |
| 09 | ATAT 体模量、应变与缺陷 | 包含Al五点VASP扫描、Cu–Au的150个EMT应变结构,以及模型APB和缺陷生成。 |
| 10 | ATAT SQS 到 CALPHAD | 逐步复制SQS、计算静态能量、选择拟合项并输出TDB,说明模型的材料覆盖范围。 |
| 11 | ATAT 常用操作与问题排查 | 查结构、拟合、文件处理和常见运行问题,并将流程用于自己的材料与结果分析。 |
按用途查命令#
- ATAT 结构与对称性命令:结构生成、坐标转换、近邻、原型、路径、缺陷及离散磁态等21个命令。
- ATAT SQS 与簇展开命令:mcsqs、关联函数、maps/mmaps、回归、模型预测及张量/CVM的15个命令。
- ATAT 蒙特卡洛与应变命令:emc2、memc2、phb、mcdroplast、csfit、gencs和apb的完整选项。
- ATAT VASP 与自由能命令:VASP接口、声子、电子项、体模量与高级弛豫工具的14个命令。
- ATAT CALPHAD 与绘图命令:sqs2tdb、OpenCalphad驱动、坐标及网格转换的6个命令。
- ATAT 任务组织与 MPI 命令:任务状态、负载工具、集群MPI入口和命令列表划分的8个命令。
- ATAT 文本与批处理命令:表达式、数值提取、换行转换、向上查找及按目录执行的7个命令。
以下从环境和输入文件开始。全部参数以当前模块 atat/3.52-8173m 为准;命令参考覆盖其 78 个入口。完整材料计算还需相应能量程序、数据与方法设置。
ATAT 能解决什么问题#
ATAT 是一组相互配合的合金理论工具。它既能寻找代表无序固溶体的原子排列,也能把许多结构的能量组织为簇展开,再用蒙特卡洛研究有限温度下的构型行为。
| 你想做的事情 | 主要程序 | 得到什么 |
|---|---|---|
| 给定晶格和组分,生成无序合金超胞 | mcsqs |
bestsqs.out、关联函数误差 |
| 列出对称性不同的有序结构 | genstr |
多个 ATAT 结构 |
| 用结构能量建立二元/多元簇展开 | maps / mmaps |
ECI、拟合误差、基态候选 |
| 计算温度、化学势变化下的构型性质 | emc2 / memc2 |
能量、浓度、关联函数等 |
| 跟踪两个相之间的共存边界 | phb |
两相浓度随温度的变化 |
| 从位移—受力数据计算声子 | fitfc |
力常数、声子谱、振动自由能 |
| 用键刚度随键长的关系近似声子 | fitsvsl + svsl |
可迁移的弹簧模型、振动自由能 |
| 加入电子自由能 | felec、clusterexpand、mkteci |
温度相关 ECI |
| 生成 CALPHAD 数据库 | sqs2tdb |
由 SQS 数据拟合的 .tdb 文件 |
ATAT 本身不会自动把一种元素组合变成可靠的相图。结构能量或受力需要由 VASP 等电子结构程序或适合该材料的势函数提供;晶格选择、磁性、弛豫方式、能量一致性、训练集覆盖和统计收敛都影响最终结果。
本文明确区分三类数据:Cu–Au 能量和 Al 体积扫描使用 VASP/PBE;Al 声子、三元合金和应变能的部分教学例使用 ASE 的 EMT 势;二元蒙特卡洛使用 ATAT 自带 examples/mc 的已给定哈密顿量。这些方法都实际执行过,但不能把它们互相替代,也不能将教学模型曲线称为实验相图。
开始使用:环境、目录和任务提交#
加载环境#
module load atat/3.52-8173m
yskit atat-init
也可以输入 yskit,在软件环境配置入口中完成 ATAT 初始化。初始化只创建缺失的个人配置,已有配置保持不变。
| 软件部分 | 本文使用的环境 |
|---|---|
| ATAT | 3.52,GNU G++ 13.3.0,常规 CPU 构建 |
| ATAT MPI 程序 | 独立 OpenMPI 5.0.10 |
| VASP 接口 | CPU 普通版 VASP 6.4.2,Intel oneAPI 2024.2 |
| 势函数教学例 | ASE 3.29.0,EMT;需要时加载 ase/3.29.0 |
ATAT 的常规搜索与蒙特卡洛没有通用的 GPU 加速开关。MPI 版 ATAT 与 VASP 使用的 MPI 环境不同,分别使用对应作业模板,避免在同一终端反复混装 MPI。不要在 atat-vasp 或 atat-mpigenstr 外面再套一层 mpirun。
下载算例后如何使用#
先解压算例包。在某个算例的副本中工作,保留原来的输入和参考结果:
cp -r examples my-atat
cd my-atat/01-sqs-fcc32
算例包将 input/ 与 reference/ 分开。保留相邻的 common/ 目录,它提供随文的能量、受力和拟合接口。在算例根目录提交 sbatch submit.sh,脚本会自动进入 input/。如果逐条操作正文命令,再手动进入干净的 input/;不要把 stop、stopsqs、旧 bestsqs.out、旧 error 等状态文件带入新计算。
在集群里提交#
普通计算通过 Slurm 提交。yskit 能找到对应的 ATAT 脚本;核时用户的模板位于:
/public/slurm_scripts/hs_user/atat/3.52/8173m/
套餐用户使用同层的 tc_user 入口。通常先把对应模板复制到自己的算例目录,再使用短命令提交:
sbatch sub_mcsqs_multi.sh 32 250000
这里 32 是 SQS 总原子数,250000 是每个搜索进程的步数上限,都不是申请的 CPU 核数。现行 CPU 模板默认申请 56 核整节点;sub_mcsqs_single.sh 是历史文件名,目前也按模板设置启动多个搜索进程,不能仅凭文件名判断资源数量。
| 任务 | 拷贝后提交的脚本 |
|---|---|
| 多个独立 SQS 搜索并选优 | sub_mcsqs_multi.sh |
| 单个结构的 VASP 能量/受力 | sub_atat_vasp.sh |
| 二元簇展开与 VASP 自动配合 | sub_maps_vasp.sh |
| MPI 枚举结构 | sub_mpigenstr.sh |
| MPI 多元簇展开 | sub_mpimmaps.sh |
正文展示的 mcsqs、maps、fitfc 等科学计算命令,应放在获得计算资源的作业里运行。不能因为某个程序只开一个进程,就默认适合在登录终端长时间运行。
先读懂 ATAT 的结构文件#
lat.in:允许出现哪些原子排列#
下面是 FCC Cu–Au 母晶格:
3.85 3.85 3.85 90 90 90
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0
0 0 0 Cu,Au
第一行定义参考坐标轴:三个轴长及其夹角。接下来的三行定义晶胞矢量,使用这些参考轴作基底。最后一行给出一个格点的位置,以及该位置可以放置的元素。逗号表示可替换的物种,不能写成带空格的 Cu, Au。
这不是“第一行已经给出了晶胞,下面三行可以随便填”的格式。上例的实际晶胞是 FCC 原胞,体积为 3.85³/4,每个原胞只有一个可替换格点。原子坐标也相对于第一行定义的参考轴,不自动等于相对于后面三条晶胞矢量的分数坐标。
参考轴也可以写成三行笛卡尔向量;这时一个结构通常有六行几何信息,之后才是原子列表。看见 str.out 的六行开头不要误删前三行。
str.out:一个已经确定的结构#
例如 Cu₃Au 的 L1₂ 常规胞:
3.8 3.8 3.8 90 90 90
1 0 0
0 1 0
0 0 1
0 0 0 Au
0 0.5 0.5 Cu
0.5 0 0.5 Cu
0.5 0.5 0 Cu
lat.in 写“允许 Cu 或 Au”,str.out 写“这里实际是 Cu”。固定子晶格只写一种元素,例如 N;空位可以使用 Vac。同一项研究中的元素命名、格点允许占据种类和坐标轴要保持一致。
rndstr.in:目标无序态#
SQS 输入把最后一行改成概率:
0 0 0 Cu=0.5,Au=0.5
每个可替换子晶格上的概率和应为 1,超胞中的各元素数还必须能取整数。例如三元等比例 24 原子对应 8/8/8;10 原子的三元等比例超胞不能严格满足这个组分。固定 N 子晶格也占总原子数,不能从 -n 中漏掉。
转换、检查和可视化#
cellcvrt -pn < str.out
cellcvrt -pv < str.out
str2poscar < str.out > POSCAR
str2cif < str.out > structure.cif
str2xyz 1 1 1 str.out > structure.xyz
前两条分别输出原子数和晶胞体积;后三条用于 VASP、晶体可视化软件和 XYZ 查看器。str2poscar 会按物种组织原子顺序,拼接 POTCAR 时必须使用输出 POSCAR 的元素顺序。str2poscar -r < POSCAR > str.out 可以反向转换,但旧式 POSCAR 没有元素名,反向结果的物种标签需要核对。
cellcvrt -c 输出笛卡尔坐标;-f 把晶胞用作分数坐标基底;-ss=2 按参考轴方向生成超胞。对于非正交原胞,不要想当然地把 -ss=2 理解为“恰好 8 倍的原胞”——先检查原子数和晶胞矢量,再决定是否使用 -uss=文件 给定超胞。
数据和配套算例#
下载完整实算资料包,保留 examples/common,进入所需算例目录执行 sbatch submit.sh。输入、参考结果、科学设置和重跑方式均在各目录的 README 中。
实算数据下载#
下列CSV可在Python、Origin等工具中直接读取;数值单位和方法设置见对应文章,结构与完整输出在资料包中。