ATAT 专题

ATAT结构优化:固定晶胞与晶胞联动

用真实Cu EMT例子演示infdet能量、力、应力文件接口,区分原子位置优化与晶胞优化。

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

infdet可以通过文件接口调用外部能量、力和应力计算器。本篇先做最直观的结构优化:固定晶胞时只移动原子,允许应变时同时调整晶胞和原子。下载实例包。示例使用ATAT3.52、GCC13.3工具环境与ASE3.29.0的EMT势;这是Cu小体系的真实势函数计算,不是VASP或DFT结果。

1 解压后先做固定晶胞优化#

mkdir ATAT-infdet
python3 -m zipfile -e atat-infdet-*.zip ATAT-infdet
cd ATAT-infdet
bash fixed.sh

fixed.sh加载环境并运行run_fixed.py。脚本生成两个Cu原子的周期结构,启动原生infdet,按请求返回真实EMT能量、力和应力。结果写入relax,已有同名目录时应换一个新目录运行。

原始str.in完整内容如下。第一行定义直角、单位长度的坐标基,后面三行是晶胞矢量,最后两行是以该坐标基表示的原子位置,长度单位Å。

1 1 1 90 90 90
0.000000000000 3.600000000000 3.600000000000
1.800000000000 0.000000000000 1.800000000000
1.800000000000 1.800000000000 0.000000000000
0.000000000000 0.000000000000 0.000000000000 Cu
0.060000000000 1.770000000000 1.840000000000 Cu

脚本启动的核心命令是:

infdet -r -ds=0 -igt=0.02 -ns -st=0 -iic=60

-r选择普通结构弛豫,-ds=0禁止晶胞应变;原子位置仍然可以改变。-igt是原生优化梯度容差,不能直接当作最大原子力;示例在结束后另算最大原子力,并确认小于0.02 eV/Å。-ns、-st=0便于这个轻量文件接口及时响应。

不要在没有力回调脚本的目录单独启动上面的命令,否则程序会等待外部计算器。

2 文件之间怎样衔接#

每轮按以下顺序进行:infdet写str.out和busy → 回调读取结构 → 计算器写结果文件 → 删除busy → infdet继续优化。

文件 要写什么
energy 当前结构的总能量,eV/晶胞,一行一个数
force.out 与结构原子顺序一致的N×3原子力,eV/Å
stress.out 3×3应力矩阵,压缩为正,kbar
str_relax.out 对应本次能量和力的结构

本例由infdet负责优化,回调只做当前几何的单点计算,所以回调的str_relax.out与当前str.out相同。EMT应力是拉伸为正的eV/ų,转换为接口要求时使用-stress × 1602.1766208。接其他软件时,应核对其应力正负号与单位。

3 查看结构和结果#

cat relax/cenergy.out
cat relax/cstr_relax.out
tail -n 8 relax/infdet.log

本站固定晶胞算例有7次真实力调用,最终总能量约−0.01337739 eV/两原子晶胞,最大原子力0.001507 eV/Å。EMT能量零点由势函数定义,绝对能量不能与DFT总能量直接比较。

4 同时优化晶胞和原子#

bash cell.sh
cat cell-relax/cstr_relax.out
cat cell-relax/cenergy.out

该脚本从晶格参数3.7 Å的初始Cu结构出发,核心选项改为infdet -r -ds=3,允许三维晶胞应变与原子位置共同优化。-ds描述允许应变的维度;不要把-ds=2直接当作所有二维材料的通用设置,二维真空层和受限方向需要按具体晶胞设计。

本站联动优化有15次真实力调用,最终能量−0.01406680 eV/晶胞、最大原子力0.001851 eV/Å,体积23.13023 ų。两种模式初始晶格不同,因此图中的初始能量不同。

固定晶胞与晶胞联动的真实能量和原子力

bash plot.sh

绘图读取包中reference实算数据,在plots输出图片。自己的结构接VASP等后端时,仍应在获分配的计算资源内执行,保持原子顺序及能量、力、应力的一致性。

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

查看配图

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

100%查看原图 ↗