GPUMDkit专题

GPUMDkit结构互转:POSCAR、LAMMPS与extxyz

用真实NaCl结构完成格式往返,核对元素类型、晶胞、周期距离和环境选择。

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

下载完整输入、转换脚本与结构图。本篇以2原子NaCl原胞演示POSCAR→LAMMPS data→LAMMPS dump→extxyz。源结构来自集群实际VASP计算;转换本身不生成DFT能量、力或分子力场。

1 为什么先选择Python环境#

GPUMDkit 1.5.8的pos2lmp.py依赖OVITO;GPUMDkit基础环境与OVITO 3.16.1独立部署。因此这一脚本使用OVITO模块的Python运行,后续ASE分析和lmp2exyz再切回GPUMDkit环境,不要把两个环境的site-packages混在一起。

module purge
module load ovito/3.16.1
export QT_QPA_PLATFORM=ovitoheadless
python /public/software/gpumdkit/1.5.8/Scripts/format_conversion/pos2lmp.py POSCAR nacl.data

脚本仍是集群GPUMDkit提供的工具,不需要重新安装OVITO,也不需要修改公共环境。

2 核对原子类型和晶胞#

本例POSCAR元素顺序为Cl、Na,转换输出中类型1为Cl,类型2为Na:

Masses

1 35.453  # Cl
2 22.98977  # Na

输出为atom_style atomic的数据。当前OVITO会保留一般三斜晶胞,文件以avec/bvec/cvec列出晶格向量;本次实际用LAMMPS 30Sep2026读入成功。旧版LAMMPS未必支持相同格式,不能只看扩展名相同就判断可读。

3 让LAMMPS实际读入并输出dump#

附件in.read完整内容:

units metal
atom_style atomic
boundary p p p
read_data nacl.data
pair_style zero 2.0
pair_coeff * *
run 0
write_dump all custom nacl.dump id type x y z modify sort id

在已分配的CPU资源中执行:

module purge
module load lammps/30Sep2026-8173m
export OMP_NUM_THREADS=1
lmp -in in.read > lammps.log

这个LAMMPS模块采用Intel oneAPI 2024.2 CPU编译环境。pair_style zero和run 0只检查结构读取、邻居表和输出链路,没有进行NaCl动力学模拟,也没有提供可用于研究的相互作用模型。正式计算应换成适用的势函数、原子类型、电荷和其他物理设置。

4 把dump转回extxyz#

module purge
module load gpumdkit/1.5.8
gpumdkit.sh -lmp2exyz nacl.dump Cl Na

这里Cl Na必须按dump中的类型1、类型2顺序填写。调换顺序会把化学元素对调,即使转换命令仍能正常结束。输出固定为dump.xyz,因此请在自己的工作副本中运行。

extxyz保留晶胞、PBC和元素坐标。这个dump只有id type x y z,所以不会包含真实能量、力或virial标签;要构建NEP训练集,仍需单独读取对应第一性原理结果。

5 怎样判断往返正确#

python validate.py
python check_roundtrip.py
cat ROUNDTRIP.json

脚本核对原子数与元素顺序、晶胞体积、晶格度量和最小镜像距离。原始体积为 46.29825 ų,Cl–Na最小镜像距离为 2.85 Å。LAMMPS可将晶胞旋转到内部约定,因此原始笛卡尔坐标不一定逐分量相同;应检查旋转不变的距离和晶格度量。

NaCl原始晶胞与经LAMMPS往返后的结构

图中的视角相同,但晶胞可能经过整体旋转;这不等于结构变形。下载包的JSON记录数值差,全部低于本例的1×10⁻⁴检查尺度。

整条流程可以运行:

bash run.sh

它依次切换三个现有模块,转换、读入、导出并生成结构对照图。请在新副本运行,同名输出会被覆盖。

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

查看配图

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

100%查看原图 ↗