ASE专题

ASE建模与结构格式转换

从分子、晶体、表面和空位出发,实际检查POSCAR、CIF与extxyz转换。

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

本文使用鸢算科技集群实际运行的小算例。先下载输入、完整脚本与参考数据并解压,以下命令从解压目录开始。reference 保存原始参考结果,自己的运行放在 work,避免覆盖。

1 建立晶体、分子、表面和空位#

ASE 3.29.0使用独立Python环境,建模和格式转换不要求MPI或GPU。小规模准备操作即可完成。

module purge
module load ase/3.29.0
mkdir -p work/ase
cp scripts/ase_examples.py work/ase/
cd work/ase
python ase_examples.py build-structures
python ase_examples.py format-roundtrip

完整脚本已包含导入、建模、写文件和检查。关键建模代码如下:

from ase.build import bulk, molecule, fcc111
from ase.io import write
water = molecule('H2O')
cu = bulk('Cu', 'fcc', a=3.6, cubic=True) * (2, 2, 2)
slab = fcc111('Cu', size=(3, 3, 3), a=3.6, vacuum=8)
vacancy = cu.copy()
del vacancy[0]
write('water.extxyz', water)
write('copper.extxyz', cu)
write('surface.extxyz', slab)
write('vacancy.extxyz', vacancy)

a、坐标和真空长度使用Å。表面真空参数表示在上下两侧增加空白;删除原子只创建缺陷结构,还没有进行结构优化。

水分子、32原子铜晶体、27原子表面和31原子空位结构

结构 原子数
H₂O 3
Cu 2×2×2常规胞 32
Cu(111) 3×3×3表面 27
删除一个Cu后的缺陷胞 31

2 格式互转后检查什么#

本例把16原子Si写成POSCAR、CIF和extxyz,再读回来,比较晶格度量和周期最小镜像原子间距。CIF可能改变坐标轴朝向,所以不能仅靠晶格矩阵逐元素相等判断转换是否正确。

from ase.io import read, write
a = read('format-roundtrip/POSCAR')
write('converted.cif', a)
b = read('converted.cif')
print(len(a), len(b))
print(a.cell.cellpar())
print(b.cell.cellpar())

结构格式不一定保存电荷、原子类型、约束、力场拓扑等信息。转成LAMMPS或GROMACS输入前,还要按所选势函数补充相关内容。

查看和复现配图#

下载包 figures 中是高清图片,可点击正文图片放大。reference 中保存数据与结果表;重新绘图可执行:

module purge
module load ase/3.29.0
mkdir -p work/replot
cp -r reference work/replot/
cp plot_reference.py work/replot/
cd work/replot
python plot_reference.py

不同教程共用此资料包;同一个脚本不需要重复下载。重新运行算例时使用新的工作目录。

方法与接口参考:ASE官方教程。

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

查看配图

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

100%查看原图 ↗