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 格式往返:先检查晶胞,再检查属性#
输入decorated.cfg含32个Al、8.1 Å立方胞、marker=1…32及固定速度vx=0.1、vy=0.2、vz=0.3 Å/ps。在新目录逐条转换:
atomsk decorated.cfg export.cfg
atomsk export.cfg back-cfg.cfg
atomsk decorated.cfg export exyz
atomsk export.xyz back-exyz.cfg
atomsk decorated.cfg pos
atomsk POSCAR back-pos.cfg
atomsk decorated.cfg export.lmp
atomsk export.lmp back-lmp.cfg
pos输出名为POSCAR。生成extended XYZ时使用无扩展名前缀export exyz,避免.xyz扩展名同时触发普通XYZ输出而覆盖扩展格式。
| 格式 | 坐标/元素 | 晶胞 | 速度三列 | 自定义marker |
|---|---|---|---|---|
| cfg | 保留 | 保留 | 保留 | 保留 |
| xsf | 保留 | 保留 | 不保留 | 不保留 |
| exyz | 保留 | 保留 | 保留 | 保留 |
| pos | 保留 | 保留 | 不保留 | 不保留 |
| lmp | 保留 | 保留 | 保留 | 不保留 |
| gin | 保留 | 保留 | 保留 | 不保留 |
| cif | 保留 | 保留 | 不保留 | 不保留 |
| pdb | 保留 | 保留 | 不保留 | 不保留 |
| xyz | 保留 | 缺失后由边界估计 | 不保留 | 不保留 |
本例普通XYZ再读回时,程序估计出12.15 Å的边界,不能替代原8.1 Å周期晶胞。CFG和extended XYZ适合保留自定义列;POSCAR适合交给VASP,但不携带这里的速度/marker。LAMMPS的type必须与实际元素映射核对,多元素模型不要仅凭编号猜元素。

3 给结构增加属性#
准备velocities.txt:
velocity
1 0.1 0.2 0.3
2 0.1 0.2 0.3
这里只展示前两原子,下载文件列出全部32个。另建properties.txt:
auxiliary marker
1 1
2 2
3 3
同样补齐到32;marker是自定义标签,不是能量。按下面顺序读取:
atomsk base.cfg -properties velocities.txt -properties properties.txt decorated.cfg
本安装版应先读速度,再读其他自定义列;将速度追加到已有auxiliary后面存在读取兼容问题。每类属性使用独立文件,避免字段之间误读。
复制属性、删除属性和改变数值:
atomsk --copy-properties decorated.cfg shifted.cfg copied.cfg
atomsk decorated.cfg -rmprop marker without-marker.cfg
atomsk decorated.cfg -unit vx 2 vx-doubled.cfg
--copy-properties按照原子顺序对应;源/目标必须是同一批原子且顺序匹配。实际倍增后vx=0.2 Å/ps,vy、vz保持0.2和0.3。
原生-swap vx vy在本安装版不能作为已验证的数值列交换方式。资料包提供明确交换两列的脚本:
cp -a helpers my-helpers
cd my-helpers
python model_tools.py swap-velocities
得到swapped.cfg:vx=0.2、vy=0.1 Å/ps。
4 长度单位、分数坐标和原子约束#
atomsk base.cfg -unit A nm scaled exyz
atomsk base.cfg -fractional fractional.xyz
atomsk base.cfg -select below 2 z -fix all fixed.cfg
第一条将8.1 Å变为数值0.81 nm,同时坐标缩小十倍。此例使用extended XYZ;小于1的笛卡尔坐标写CFG时,本版可能误判成分数坐标。文件接入下游软件前,必须按它要求的单位转换回来;文件中的数值不会自动告诉所有程序“这是nm”。
-fractional表示坐标除以晶胞基矢后的无量纲数;它与Å→nm不是同一种操作。-fix添加fixx/fixy/fixz标签;并不会阻止之后的Atomsk几何操作。导入LAMMPS/VASP后,还应使用各软件的约束语法。
5 芯壳电荷与速度#
芯壳偶极的实际例子使用人为指定的Na/Cl电荷;速度去除整体运动脚本按质量加权处理,避免把随机样本当成恰好无漂移的速度。
格式能力可核对官方格式清单,属性语法参见properties。表格仅表示本例实际往返保留的字段,不代表格式规范允许的全部内容。