ATAT Wyckoff建模:填参数、导出与检查
从FCC模板生成铝结构,导出POSCAR并用周期距离和对称性检查结果。
阅读本篇目录
完成原型检索教程的bash run.sh后,在同一个ATAT-prototypes目录继续操作。完整实例包。
1 生成并填写FCC模板#
source env.sh
wycked 225 a > Al-fcc.wyck
sed -i 's/a=;/a=4.05;/; s/A="A"/A="Al"/' Al-fcc.wyck
cat Al-fcc.wyck
空间群225的a位点得到FCC原胞模板。填好参数后完整内容为:
#const a=4.05;
{a} {a} {a} {90} {90} {90}
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0
#const A="Al";
{0} {0} {0} {A}
a是常规立方晶格参数,单位Å;后面三个向量选择FCC原胞,体积为a³/4,并非a³。大写A是模板的元素占位符,需替换成目标元素。对于包含x/y/z自由坐标的其他Wyckoff位点,也要填写相应参数后再处理。
2 展开模板并导出POSCAR#
sspp < Al-fcc.wyck > Al-fcc.out
str2poscar < Al-fcc.out > Al-fcc.POSCAR
str2cif < Al-fcc.out > Al-fcc.cif
cat Al-fcc.out
sspp计算花括号中的表达式、写入具体数值;str2poscar与str2cif负责格式转换。得到的ATAT结构是:
4.05 4.05 4.05 90 90 90
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0
0 0 0 Al
这是输入几何,不包含POTCAR、能量或电子收敛结果。开始VASP计算前仍需选择赝势、INCAR、KPOINTS和自己的任务脚本。
多元素导出时,POSCAR可能按元素重新排列原子行。例如NaCl的Cl/Na输出顺序可不同于输入的Na/Cl顺序。应同时检查元素顺序、数量和对应坐标;比较两份文本是否逐行相同不能替代结构核对。
3 检查是否出现过近原子#
mindist -r=2.8 -s=Al-fcc.out
echo $?
if mindist -r=2.9 -s=Al-fcc.out; then
echo "最小距离满足2.9 Å"
else
echo "有原子距离小于2.9 Å"
fi
本例FCC铝最近邻距离为4.05/√2 = 2.863782 Å。因此第一条返回0,第二项判断进入else。mindist是阈值检查工具,不会打印最小距离数值;返回1表示存在小于阈值的原子对,不应只凭返回1就认为程序坏了。
4 对照四个例子的几何#
cat new-work/VALIDATION.json
ls -lh new-work/*.POSCAR new-work/*.cif
| 例子 | 空间群 | 原胞原子数 | 体积(ų) | 最近邻距离(Å) |
|---|---|---|---|---|
| Al FCC,a=4.05 Å | 225 | 1 | 16.607531 | 2.863782 |
| W BCC,a=3.1652 Å | 229 | 1 | 15.855264 | 2.741144 |
| NaCl,a=5.64 Å | 225 | 2 | 44.851536 | 2.820000 |
| CsCl,a=4.123 Å | 221 | 2 | 70.087409 | 3.570623 |

检查同时读取POSCAR/CIF,核对原子元素、周期位置和体积,用ASE邻居表求周期距离、spglib识别空间群,并用原生mindist在距离两侧各测试一次。这些是几何与格式检查,不表示晶格参数已经优化或材料稳定。
Wyckoff位置信息来自已安装ATAT附带的Bilbao数据。需要文献引用时可查看wycked -h列出的ATAT/Bilbao来源。本例不调用需要GULP的-r软球弛豫;几何生成与能量优化是不同步骤。