ATAT 全功能说明
ATAT (Alloy-Theoretic Automated Toolkit) 是材料科学领域最广泛使用的合金理论自动化工具之一。本文档基于 ATAT v3.36 官方文档和示例,系统梳理了 80+ 个命令的功能、参数和使用案例,覆盖团簇展开、SQS 建模、蒙特卡洛模拟、结构枚举、第一性原理接口等全模块。
📦 一、ATAT 简介
什么是 ATAT?
ATAT (Alloy-Theoretic Automated Toolkit) 是由 Axel van de Walle 开发的合金理论自动化工具包,
用于第一性原理相图计算。核心功能包括:团簇展开 (Cluster Expansion)、特殊准随机结构 (SQS)、
蒙特卡洛模拟 (Monte Carlo)、结构枚举与搜索,以及多种第一性原理代码接口。
📌 版本: 3.36 | 📌 官网: https://alum.mit.edu/www/avdw/atat/
📌 论坛: http://alum.mit.edu/www/avdw/forum
🔧 二、核心命令速查表
团簇展开 (Cluster Expansion)
• corrdump — 从晶格结构生成团簇文件 clusters.out
• getclus — 提取团簇信息
• clusterexpand — 团簇展开拟合
• clusterpredict — 团簇展开预测
• csfit — 结构反演拟合 (Concentration-dependent)
• mkteci — 生成 ECI 输入文件
• gce — 广义/张量团簇展开
SQS 建模 (Special Quasi-random Structure)
• mcsqs — Monte Carlo SQS 生成 (最常用)
• gensqs — 从 SQS 数据库生成 SQS 结构
• sqs2tdb — SQS 结构转热力学数据库格式
📌 SQS 数据库支持 33 种常见晶体结构 (FCC_A1, BCC_A2, HCP_A3, L12, B2, ...)
蒙特卡洛模拟 (Monte Carlo)
• emc2 — 半 grand-canonical 系综蒙特卡洛 (Easy Monte Carlo)
• memc2 — 多组分 emc2
• phb — 相界追踪 (Phase Boundary)
• triph — 三相平衡计算
• mcdroplast — 丢弃 MC 初始步
结构操作 (Structure Manipulation)
• genstr — 枚举所有超胞结构
• checkcell — 检查晶胞合理性
• cellcvrt — 晶胞转换 (原胞↔惯用胞)
• makelat — 生成 lat.in 文件
• fixcell — 修正晶胞为标准形式
• str2cif / str2xyz — 结构格式转换
• strpath — 结构路径可视化
• getproto — 识别结构原型
第一性原理接口 (VASP/ABINIT/QE/...)
• ezvasp — 一键 VASP 作业提交
• runstruct_vasp — 批量结构 VASP 计算
• robustrelax_vasp — 稳健结构弛豫
• extract_vasp — 提取 VASP 能量
• cleanvasp — 清理 VASP 输出文件
• 支持接口: VASP, ABINIT, Quantum ESPRESSO, CASTEP, SIESTA, GULP, FLAPW
辅助工具
• svsl — 应变-体积-结构-晶格参数拟合
• fitsvsl — 拟合 svsl 输出
• fitfc — 拟合力常数
• felec — 电子自由能计算
• maps / mmaps — 团簇函数映射分析
• nnshell — 近邻壳层分析
• wycked — Wyckoff 位置分析
• calc — 通用表达式计算器
• kmesh — k 点网格生成
• infdet — 行列式无穷大检测
📐 三、晶格结构输入 — lat.in 格式
lat.in 文件格式
第1行: a b c α β γ (晶格常数 + 角度)
第2-4行: 三个晶格矢量 (笛卡尔坐标)
后续行: 原子分坐标 + 占位元素列表
🔹 示例1: FCC Cu-Au 合金
3.8 3.8 3.8 90 90 90
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0
0 0 0 Cu,Au
🔹 示例2: HCP 结构
1 1 1.63299 90 90 120
1 0 0
0 1 0
0 0 1
0 0 0 A,B
0.6666666 0.3333333 0.5 A,B
内置晶格数据库 (data/str/)
ATAT 内置 30+ 种常见晶体结构模板,包括:
• 单质: FCC_A1, BCC_A2, HCP_A3, DIAMOND_A4, SC
• 有序合金: L12 (Cu₃Au), L10, B2 (CsCl), B32, D0₃, L2₁
• 陶瓷/矿物: ROCKSALT_B1, ZINCBLENDE_B3, WURTZITE_B4, RUTILE_C4, FLUORITE_C1, PEROVSKITE_E21
• 拓扑密堆: C15 (MgCu₂), C14, SIGMA_D8B, A15 (Cr₃Si)
• 访问: ls atat/data/str/
📊 四、团簇展开 (Cluster Expansion) 完整流程
Step 1: 生成团簇文件
corrdump -2=4 -3=6 -4=8 -l=lat.in -ro -noe -nop -clus
参数说明:
• -2=4: 对团簇 (pair) 截断距离 (Å),建议设在 NN1~NN2 之间
• -3=6: 三体团簇截断距离
• -4=8: 四体团簇截断距离
• -l=lat.in: 输入晶格文件
• -ro: 读取占位信息
• -noe: 不输出能量文件
• -nop: 不输出点团簇
• -clus: 输出团簇信息
输出: clusters.out (团簇定义文件)
Step 2: 提取团簇信息
getclus
读取 clusters.out,输出团簇的几何信息和多重度。
Step 3: 准备训练结构能量
对于每个训练结构,需要:
-
生成 lat.in / rndstr.in 格式的结构文件
-
用 VASP/ABINIT 等计算总能量
-
创建能量文件: 结构文件名 + 能量值
能量文件格式:
str1.out -10.5
str2.out -10.3
...
Step 4: 团簇展开拟合
clusterexpand -l=lat.in -cf=clusters.out -e=energy_file
或使用交叉验证:
csfit -l=lat.in -cf=clusters.out -e=energy_file -cv=5
输出:
• eci.out: 有效团簇相互作用 (ECI) 参数
• fit.out: 拟合结果与统计信息
Step 5: 预测新结构能量
clusterpredict -l=lat.in -cf=clusters.out -eci=eci.out
输入新结构,输出预测能量。可与 DFT 结果对比验证。
🎲 五、SQS 特殊准随机结构建模
mcsqs — Monte Carlo SQS 生成
核心命令:
mcsqs -n=32 -l=rndstr.in -cf=clusters.out
参数说明:
• -n=N: 目标超胞原子数
• -l=rndstr.in: 输入结构 (含占位信息)
• -cf=clusters.out: 团簇定义文件
• -rc: 恢复运行 (继续上次计算)
• -2=, -3=, -4=: 团簇截断距离
• -ip: 打印团簇关联函数
• -T=: 模拟温度
典型工作流:
-
corrdump ... → clusters.out
-
mcsqs -n=32 → bestsqs.out (最佳 SQS)
-
sqscell.out → 超胞矩阵
-
解析 bestsqs.out → SQS_POSCAR
📌 多核加速: mpirun -np 48 mcsqs -n=32 -rc
gensqs — 从数据库生成 SQS
ATAT 内置 SQS 数据库 (data/sqsdb/),支持 33 种结构:
gensqs -l=lat.in -d=sqsdb -n=32
可用数据库: FCC_A1, BCC_A2, HCP_A3, DIAMOND_A4,
L12, L10, B2, B32, D0₃, L2₁, C15, D0₂₂, 等...
📌 优势: 直接从预计算 SQS 选取,无需 Monte Carlo 搜索
SQS 质量评估
评估指标 (在 bestsqs.out 中):
• Objective function: 目标函数值 (越小越好)
• Pair correlation: 对关联函数与理想值的偏差
• Triple correlation: 三体关联函数偏差
• 匹配原子数: perfect_match / total_atoms
经验法则: objective function < 0.01 为优秀 SQS
🌡️ 六、蒙特卡洛模拟 (Monte Carlo)
emc2 — 半 Grand-Canonical MC
emc2 -T0=50 -T1=700 -dT=25 -mu0=0.5 -mu1=1.5 -dmu=0.05
-er=40 -gs=0 -o=mc.out -k=8.617e-5 -dx=0.005
参数说明:
• -T0/T1/dT: 起始/终止/步长温度 (K)
• -mu0/mu1/dmu: 起始/终止/步长化学势 (eV)
• -er=N: 平衡步数 × N×N×N (N 为原子数)
• -gs=N: 使用 gs_str.out 的第 N 个结构为初始构型
• -k=: Boltzmann 常数 (eV/K)
• -dx=: 成分步长
输出: mc.out (能量、成分、比热等热力学量)
phb — 相界追踪
phb -dT=10 -dmu=0.001 -ltep=1e-3 -er=40
-gs1=0 -gs2=1 -o=phb.out -k=8.617e-5 -dx=1e-4
用途: 追踪两相之间的相边界,确定相图
输出: phb.out (相界上的温度-化学势-成分数据)
memc2 — 多组分 MC
memc2 支持多组分体系的半 grand-canonical 模拟
用法与 emc2 类似,但支持多个化学势变量。
🔍 七、结构枚举与搜索
genstr — 枚举所有超胞结构
genstr -l=lat.in -n=4 -d=dir.in
• -n=N: 超胞原子数
• -d=dir.in: 方向文件 (指定搜索方向)
dir.in 格式 (每行一个方向向量):
1 0 0
1 1 0
1 1 1
2 0 1
输出: 所有非等价超胞结构的 POSCAR 格式
checkcell — 晶胞合理性检查
checkcell -l=lat.in
检查项目:
• 原子间距是否过近
• 晶胞形状是否合理
• 对称性是否正确
• 原子位置是否在晶胞内
cellcvrt — 晶胞转换
cellcvrt -p # 原胞 ↔ 惯用胞转换
cellcvrt -s=M # 转换为超胞 (M 为超胞矩阵)
支持格式: ATAT, VASP POSCAR, XYZ, CIF
⚡ 八、第一性原理接口 (VASP 为主)
vasp.wrap — VASP 输入模板
ATAT 通过 .wrap 文件定义 VASP 计算参数:
[INCAR]
PREC = high
ISMEAR = 1
SIGMA = 0.1
NSW = 41
IBRION = 2
ISIF = 3
KPPRA = 1000 # 每个原子 k 点密度
USEPOT = PAWPBE # 使用 PBE 泛函
DOSTATIC # 静态计算
📌 内置模板: vasp.wrap, svasp.wrap (静态), cvvasp.wrap (弛豫),
fvasp.wrap (固定体积), vasp_par.wrap (并行), csvasp.wrap (ISIF=2)
ezvasp — 一键提交
ezvasp -s=str.out -w=vasp.wrap
自动生成 VASP 输入文件并提交作业。
支持多种作业调度系统 (PBS, SLURM, LSF)。
runstruct_vasp — 批量结构计算
runstruct_vasp -w=vasp.wrap -d=structures/
批量处理结构目录中的所有结构文件。
其他接口
• ABINIT: abinit.wrap + ezvasp
• Quantum ESPRESSO: pwscf/ 目录下的 glue 脚本
• CASTEP: castep/ 目录下的 glue 脚本
• SIESTA: siesta/ 目录下的 glue 脚本
• GULP: gulp/ 目录下的 glue 脚本
• FLAPW: flapw/ 目录下的 glue 脚本
🧪 九、完整案例演示 — Cu-Au 合金体系
案例: FCC Cu₁₋ₓAuₓ 合金相图计算
晶格常数: a = 3.8 Å (FCC, 4 atoms/unit cell)
Step 1 → 准备 lat.in:
3.8 3.8 3.8 90 90 90
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0
0 0 0 Cu,Au
Step 2 → 生成团簇:
corrdump -2=3.5 -3=5 -4=6 -l=lat.in -ro -noe -nop -clus
Step 3 → 生成 SQS:
mcsqs -n=32 -l=lat.in -cf=clusters.out
→ 得到 bestsqs.out (32 原子 SQS 结构)
案例续: 团簇展开 + 蒙特卡洛
Step 4 → 准备训练集: 用 genstr 枚举多个 Cu-Au 有序结构
genstr -l=lat.in -n=4 -d=dir.in
→ 对每个结构进行 VASP 计算
Step 5 → 团簇展开拟合:
csfit -l=lat.in -cf=clusters.out -e=energy_file -cv=5
→ 得到 eci.out (ECI 参数)
Step 6 → 蒙特卡洛模拟:
emc2 -T0=50 -T1=700 -dT=25 -mu0=-0.5 -mu1=0.5 -dmu=0.05
-er=40 -gs=0 -o=cuau_mc.out -k=8.617e-5 -dx=0.005
→ 得到 cuau_mc.out (热力学性质)
Step 7 → 相界追踪:
phb -dT=10 -dmu=0.001 -ltep=1e-3 -er=40 -gs1=0 -gs2=1
-o=cuau_phb.out -k=8.617e-5 -dx=1e-4
→ 得到 cuau_phb.out (相边界)
💡 十、实用技巧与常见问题
corrdump -2= 参数设置
🔸 问题: -2= 过小导致段错误 (Segfault)
🔸 原因: 团簇对距离截断 < 第1近邻距离
🔸 解决: 将 -2= 设为 NN1 和 NN2 之间的值
🔸 参考: FCC 中 NN1≈0.707a, NN2≈1.0a → -2≈0.85a
BCC 中 NN1≈0.866a, NN2≈1.0a → -2≈0.93a
📌 提示: 可使用 ATAT-SQS Builder 的智能建议功能自动计算
SQS 超胞大小选择
🔸 原子数建议: 32-128 atoms (平衡精度与计算成本)
🔸 成分约束: 超胞原子数 × 占位比例 = 整数
🔸 2D 切面: c 轴不扩展,仅 ab 轴扩胞
🔸 多核加速: mpirun -np 48 mcsqs -n=128 -rc
ECI 拟合收敛性
🔸 训练集: 至少 30-50 个结构
🔸 交叉验证: csfit -cv=5 (5-fold CV)
🔸 团簇截断: 逐步增加 -2,-3,-4 参数
🔸 过拟合检测: CV score vs fit score 差距过大
MC 模拟收敛性
🔸 平衡步数: -er ≥ 20 (通常 40-80)
🔸 温度步长: -dT ≤ 25K (相变附近 ≤ 10K)
🔸 化学势步长: -dmu ≤ 0.05 eV
🔸 超胞大小: 与 SQS 类似,≥ 32 atoms
📖 参考: ATAT Manual v3.36 | Axel van de Walle | https://alum.mit.edu/www/avdw/atat/ | 整理: ATAT-SQS Builder 项目组 | 2026-08
