Atomsk多帧操作与辅助流程
轨迹合并拆分、平均、匹配、周期展开、插值和速度去漂移的完整命令。
阅读本篇目录
下载本组输入、脚本、参考输出与高清图。解压后使用新的工作目录;examples保存各例输入,reference保存实际结果。
1 先准备模型,再选操作#
Atomsk 0.13.1用于生成、变换和分析原子结构,不执行电子结构或能量优化。当前构建使用GFortran 13.3、OpenMP、LAPACK/BLAS 3.12.1;这里的小模型使用单线程,配套检查/绘图使用已有ASE和NumPy环境。Atomsk本身运行在CPU上。
module purge
module load atomsk/0.13.1 gpumdkit/1.5.8
atomsk --create fcc 4.05 Al -duplicate 2 2 2 base.cfg
得到32原子FCC Al,晶胞三边均为8.1 Å、体积531.441 ų。这里的晶格常数用于教学;换成自己的材料时,应使用与势函数或泛函一致的晶格参数。
直接运行单个下载实例:
python run.py option_shift
输出在work/option_shift。脚本拒绝覆盖已有目录;再次计算请复制一份新的资料包。批量运行所有示例:
sbatch run.sbatch all
这个批处理使用现有P100队列中的CPU资源,并不表示Atomsk有GPU加速。提交前可按自己获配分区调整SBATCH头部。不要把建模输出当成已经弛豫的结构。
2 多帧合并、拆分和平均#
list.lst只列文件名,一行一个:
base.cfg
shifted.cfg
atomsk --gather list.lst snapshots exyz
atomsk --unfold snapshots.xyz cfg
atomsk --average list.lst average.cfg
atomsk --list list.lst xsf
平移后的第二帧为(0.2,0.1,0.05) Å;平均结构相对第一帧平移(0.1,0.05,0.025) Å。本例有同一原子顺序、相同晶胞,坐标没有跨越周期边界。
合并使用无扩展名前缀加exyz,保留晶胞;拆分在本安装版省略自定义输出前缀。平均轨迹前先去掉周期跳跃、核对原子对应关系;否则平均结构可能没有物理意义。
3 匹配原子、展开周期坐标和差分#
atomsk --matchid base.cfg reversed.cfg matched.cfg
atomsk --unwrap base.cfg wrapped.cfg unwrapped.cfg
atomsk --diff base.cfg shifted.cfg
atomsk --ddplot base.cfg shifted.cfg result.dd
反序输入经匹配恢复原子对应关系。周期展开例沿x平移1 Å后包裹,再恢复连续坐标;差分输出dx=0.2、dy=0.1、dz=0.05 Å,位移范数0.2291288 Å。result.dd是给差分位移可视化工具使用的数据,不是轨迹能量。
近邻匹配适合小位移且原子身份清楚的情形;扩散或化学反应中不要靠最近邻自动认定同一个原子。
4 三个中间图的线性插值#
每个中间图应是r(i)=(1−f)r初+f r末,f=i/4,含端点共5帧。本安装版原生--interpolate 3会把最后端点重复,不作为该五帧路径的生成命令。使用下载脚本:
cp -a helpers interpolate-work
cd interpolate-work
python model_tools.py interpolate
ls interpolated
得到image-0.cfg到image-4.cfg。平均x位移依次0、0.05、0.10、0.15、0.20 Å。该脚本不做最小镜像路径选择;自己的端点必须先处理周期跳跃并保持原子顺序。线性路径还需要NEB等下游优化,不能据此得到势垒。

5 随机速度:检查整体运动,再设置温度#
atomsk base.cfg -velocity 300 thermal.cfg
有限32原子样本的随机速度不会每次相同。本次原生样本存在整体运动,因此资料包提供质量加权去漂移和缩放脚本:
cp -a helpers velocity-work
cd velocity-work
python model_tools.py center-velocities
cat VELOCITY-CORRECTION.json
输出thermal-centered.cfg。先减去Σmᵢvᵢ/Σmᵢ,再按3N−3=93个平动自由度缩放,内部动能温度为300 K,质量中心速度为数值零。真实体系若有约束、刚体或固定原子,必须重新计算自由度;最好由最终MD引擎按自己的单位和约束初始化速度。
6 交互式、合并结构和多晶#
可以把交互命令写入script.ats:
read base.cfg
duplicate 2 2 1
write result.cfg
quit
atomsk < script.ats
atomsk --merge z 2 base.cfg base.cfg merged.cfg
atomsk --polycrystal unit.cfg poly.txt grains.cfg
交互例得到128原子;沿z拼接两份得到64原子,z边长16.2 Å。多晶例使用明确的两个晶核位置和取向,得到576原子、grainID=1/2。选择随机晶核会生成另一种结构,不能拿它和这份固定晶核结果逐原子比较。
重画全部数据:
python plots.py
命令运行方式参见官方模式清单。下载包保留原生支持范围;不能将几何平均或线性插值称为热力学平均或最小能量路径。