Atomsk专题

Atomsk 原子编号匹配与周期边界

用实际32Cu构型演示一般乱序、周期边界和逐原子属性保留,说明原生命令的适用边界与可复现辅助操作。

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

两个结构看起来相同,文件里的原子行序却可能不同。直接按行作位移差、传递逐原子属性或比较两帧时,应先建立对应关系。本例提供32原子FCC Cu构型、已知乱序和三个匹配流程;所有几何操作都已实际运行。

1. 先准备文件#

下载Atomsk命令与原子对应实例包:

unzip atomsk-command-map-wave147-*.zip -d atomsk-examples
cd atomsk-examples

集群模块为 atomsk/0.13.1,实际为beta0.13.1,GFortran13.3、OpenMP、双精度与独立NetlibLAPACK/BLAS3.12.1。辅助流程使用 ase/3.29.0 的Python3.11.16、ASE3.29.0、NumPy2.3.5和SciPy1.17.1。包内脚本使用已分配范围内的1个CPU线程,无需GPU。

模型采用a=3.6Å的FCC常规晶胞,复制2×2×2得到32Cu;它是明确构造的几何模型,没有结构优化,也不是MD轨迹。乱序由固定种子147生成,原始排列在 NEW-INPUTS.json中。

直接做一般乱序匹配:

bash match.sh 1
head -n 12 helper-work/match-random-helper/matched.mapping.json

结果 matched.xyz采用扩展XYZ,行序对应参考结构;matched.mapping.json记录参考行到目标原始行的1起始编号、每对距离、输入输出哈希和实际库版本。目标坐标没有被改成参考坐标,只调整行序。

2. 为什么不只看equivalences提示#

原生命令的基本形式是:

atomsk --match-id reference.xyz target.xyz matched.cfg

本包第104例使用明确的倒序构型,实际可以恢复原行序:

bash run.sh 104
head -n 20 work/match-reversal-native/result.cfg

但在本次一般乱序模型中,当前版本虽提示32个equivalences,输出的32行顺序仍未对应参考。倒序恰好是自身的逆排列,不能用倒序例推断任意排列也一样。reference/native-limit-comparison.json保留这次真实对照的排列关系,不是可直接用于后续计算的匹配结果。

已知一般乱序、当前原生对照及辅助流程恢复的顺序

对一般乱序、跨周期边界和逐原子属性传递,建议使用本包明确的ASE/SciPy辅助流程。它不是Atomsk原生命令,也没有改变集群上的Atomsk程序。

3. 处理周期边界#

bash match.sh 2
head -n 16 helper-work/match-periodic-helper/matched.mapping.json

该例把目标结构实际平移 (0.11,-0.07,0.09)Å后折回7.2Å周期晶胞。所有原子的最小镜像距离应为:

sqrt(0.11^2 + 0.07^2 + 0.09^2) = 0.1584297952 A

靠近边界的原子,直接坐标差可能达到7.13Å左右,而实际最短周期距离只有0.15843Å。辅助脚本使用ASE的最小镜像距离,再按元素分别由SciPy进行一一指派;当前所测原生距离匹配不处理该周期折回情况。

一个实际跨边界原子的坐标与三维最小镜像距离

4. 保留每个原子的所有属性#

bash match.sh 3
head -n 5 helper-work/match-auxiliary-helper/matched.xyz

该例附带人工跟踪列 aux_index、vx、vy、vz,用来检查属性是否随原子一起移动;这里的vx/vy/vz是示意标签,不是MD速度。匹配后的aux_index恢复为1000、1001……1031;其余三列也恢复与参考原子一一对应的数值。

实际逐原子列在乱序前、乱序后和匹配后的对应关系

传递辅助字段时本例使用扩展XYZ。若从其他程序导入CFG,应同时检查列名与数值,不只检查“文件能打开”。想删去一个字段,当前规范命令的实际例子为:

bash run.sh 106

其原生操作是:

atomsk decorated.xyz -remove-property aux_index result.cfg

本例结果不再包含aux_index,而vx/vy/vz及32个原子坐标仍保留。

5. 对自己的文件执行#

加载环境,在新的输出路径运行:

module load ase/3.29.0
python match.py reference.xyz target.xyz matched.xyz

脚本使用相同元素之间的最小平方距离全局指派,保持目标结构的坐标、晶胞、周期性和逐原子数组。输入须满足:原子数与组成相同、晶胞与PBC相同、1–1000个原子,默认对应距离不超过0.5Å;近邻存在歧义时会停止,不写出一个看似匹配的文件。

这提供的是 接近构型之间的几何对应。大幅扩散、同元素交换、反应、增减原子或相变中的真实历史ID,不能仅靠几何猜测;应在原模拟输出中保留ID。晶胞发生变化时也要先明确坐标变换,本脚本不会自动猜测晶胞关系。

6. 重算、看图与继续使用#

只分析包内附带的实际匹配结果:

bash analyze.sh
ls figures-reference

完整重跑全部原生与辅助例:

bash run-all.sh

完整重算的匹配检查在 analysis/MATCHING-CHECKS.json,新图在 figures/;参考分析对应 analysis-reference/与 figures-reference/。已有结果目录不覆盖,重跑使用新解压目录。其他命令按完整命令导航查找。

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

查看配图

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

100%查看原图 ↗