GPUMDkit与OVITO、LAMMPS格式衔接
实测POSCAR转LAMMPS data及Ni轨迹转extxyz,核对元素、晶胞和坐标。
阅读本篇目录
先下载本批输入、参考数据与绘图脚本,解压进入 full-function-wave1。参考数据在 cases、tools,自己的新计算在 work,避免覆盖或向旧输出追加数据。
unzip full-function-wave1-*.zip
cd full-function-wave1
python start.py
1 使用OVITO完成POSCAR到LAMMPS转换#
GPUMDkit 1.5.8的 pos2lmp.py 使用OVITO。基础GPUMDkit环境未包含该依赖时,可以直接调用集群已部署的OVITO 3.16.1独立Python环境,无需修改自己的或公共的Python环境。
mkdir conversion-work
cd conversion-work
cp ../tools/gpumdkit-pos2lmp/POSCAR .
/public/toolkit/miniconda3/envs/ovito-3.16.1/bin/python \
/public/software/gpumdkit/1.5.8/Scripts/format_conversion/pos2lmp.py \
POSCAR structure.data
head -n 18 structure.data
集群软件版本及环境说明见数据分析工具。上面的长路径用于明确选择带OVITO依赖的解释器;坐标转换不要求GPU。
2 本次结构对照#
本例把同一Si结构写成POSCAR和LAMMPS data,两边原子数、元素、晶胞和坐标逐项一致。下图由转换前后的真实文件分别读取绘制,没有另建理想晶体代替输出。

LAMMPS data中的整数type需要与势函数的元素映射一致。单元素Si只有一种类型;多元素结构要逐一检查 Masses、type编号与 pair_coeff 的顺序。还要核对所选LAMMPS单位制,格式转换本身不负责为模型挑选势函数。
3 把真实LAMMPS dump转为extxyz#
cp ../tools/gpumdkit-lmp2exyz/final.dump .
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python \
/public/software/gpumdkit/1.5.8/Scripts/format_conversion/lmp2exyz.py \
final.dump Ni
head -n 3 dump.xyz
该例来自已完成的2048原子Ni模拟。Ni 对应type=1;两种类型时按type=1、type=2依次写两个元素符号,不能按自己喜欢的顺序排列。输出2048个Ni原子,保留dump中实际存在的坐标字段。
只有坐标、类型或局部分析量的dump,转换后仍然不具备完整的DFT能量、受力与virial标签。若要建立NEP训练集,应从真实带标签的第一性原理输出转换,参阅GPUMDkit格式转换总览。
4 如何核对自己的结果#
from ase.io import read
import numpy as np
before = read("POSCAR")
after = read("structure.data", format="lammps-data", atom_style="atomic")
print(len(before), len(after))
print(before.get_chemical_symbols() == after.get_chemical_symbols())
print(np.allclose(before.cell, after.cell))
print(np.allclose(before.positions, after.positions))
本例三项比较均为True。一般晶胞可能发生等价旋转、原子重排或周期折回,此时先做对应映射,再比较几何;不能只凭文件能打开就认为类型和坐标正确。
工具源码与用途见GPUMDkit官方项目。