LAMMPS 专题

LAMMPS:邻居对、VTK与YAML输出

用真实Ni轨迹保存近邻距离、结构化坐标和原生图片,讲清per-atom与local数据的区别。

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

原子轨迹每行对应一个原子,local 输出却可以每行对应一对原子;两者不能用同一种行数规则解释。本篇同时展示 VTK、YAML 和原生图片的实用入口。

1. 读取与画图#

下载完整输入、实际输出、读取脚本和绘图脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd lammps-dump-formats
bash read.sh
bash plot.sh

reference-results 是本例实际运行结果,analysis-read 是读取后生成的数据,figures 是可重新绘制的图片。单独下载的数据:LAMMPS-dump-roundtrip.csv、LAMMPS-gzip-sizes.csv。

本例使用 LAMMPS 30Sep2026。CPU 入口为 lammps/30Sep2026-8173m,Intel oneAPI 2024.2、Intel MPI、MKL,带 PLUMED 2.9.4。资料包的 CPU 模板申请一个 56 核节点,实际同时启动最多 2 个单线程 MPI 进程。

同一实际Ni轨迹的原生图片和3Å内近邻距离分布

2. 保存近邻原子对#

资料包的完整 local/in.lmp 为:

units metal
atom_style atomic
boundary p p p
read_data ../frame0.data
pair_style zero 3.0
pair_coeff * *
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
thermo 200
thermo_style custom step atoms vol
compute IDs all property/local patom1 patom2
compute DIST all pair/local dist
dump d all local 1 pairs.local index c_IDs[1] c_IDs[2] c_DIST

rerun ../trajectory3.dump dump x y z box yes
undump d

property/local 给出邻居原子的编号,pair/local dist 给出对应距离。此处零势截断半径为 3 Å,作用只是建立几何邻居。本例的独立读取按周期最短距离重新找出原子对,核对全部对集合及距离;最大距离差约 5×10⁻⁶ Å。

head -15 reference-results/local/pairs.local
gzip -cd reference-results/local-gz/pairs.local.gz | head -15

不能把 pair/local 的一行当作一个原子,也不要从零势输出的能量列解释真实 Ni 相互作用。

3. VTK结构输出#

本例采用单 MPI 进程、ASCII、最少属性的实际输入:

units metal
atom_style atomic
boundary p p p
read_data ../frame0.data
pair_style zero 3.0
pair_coeff * *
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
thermo 200
thermo_style custom step atoms vol
dump d all vtk 1 frame.*.vtk id type
dump_modify d sort id
dump_modify d binary no
rerun ../trajectory3.dump dump x y z box yes
undump d

坐标由 VTK 输出器写入,属性列保留 id type。结构文件和包围盒文件分别保存,可用 ParaView 查看;本包脚本直接读取结构点坐标。本例单进程配置的往返坐标差约 7.07×10⁻⁷ Å,先沿用此模板再增加属性或并行规模。

4. YAML与扩展XYZ#

YAML 输入核心是:

dump d all yaml 200 trajectory.yaml id type x y z
dump_modify d sort id format float %.14g

完整文件在 inputs/yaml/in.lmp;每帧有关键字、原子数据及晶胞,读取脚本使用 PyYAML。扩展 XYZ 的本例输入则关闭不属于原轨迹的速度/力标签:

dump d all extxyz 200 trajectory.xyz
dump_modify d element Ni
dump_modify d vel no forces no mass no
dump_modify d format line "%s %.14g %.14g %.14g"

这里 extxyz 使用完整行格式,不能直接套用 custom 的 format float 配方。普通 XYZ 不保存晶胞,扩展 XYZ 会写入额外几何元数据,读取时仍应核对单位和原子身份。

head -4 reference-results/extxyz-position-only/trajectory.xyz
head -16 reference-results/yaml/trajectory.yaml
bash submit.sh
# 作业结束后
bash read.sh work-new analysis-read
bash plot.sh

图片只是查看结果,真实坐标仍由轨迹保存。需要把图片合成为视频,请继续原生图片与视频导出。

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

查看配图

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

100%查看原图 ↗