GPUMDkit 能量、力与virial范围实操
真实Si标签、原生范围命令与高清直方图,讲清标签来源、单位和统计对象。
阅读本篇目录
准备NEP数据前,先查看现有标签的范围。这一步读取已经算好的能量、力和virial,不会替缺失数据再做DFT,也不会修改原始标签。本文使用九组真实Si双原子原胞自洽计算,原子位移参数为0、±0.04、±0.08、±0.12、±0.16 Å;这些是既有DFT标签,不是工具生成的预测值。
1. 下载示例并运行#
下载输入、原生命令、结果和绘图脚本,解压后进入附件根目录。整个流程只需一个CPU核心,不需要申请GPU,也不启动新的DFT或MD。先保留一份原始压缩包;重复体验时重新解压到新目录,程序遇到已有work会停下,避免混入上一次输出。
bash run.sh
附件使用module load gpumdkit/1.5.8,对应Python 3.11.16、ASE 3.29.0、NumPy 2.4.6、Matplotlib 3.11.2。GPUMDkit本身是Bash/Python工具,不需要为本例另行编译;也不需要加载GPUMD的GPU程序。
随后查看表格和数据来源:
head -10 work/labels.csv
cat PROVENANCE.json

左图展示未位移的双原子原胞;中图按原始位移参数排序,画出相对零位移构型的总能量。右图分别画最大力矢量模长与最大绝对分量。这里不拟合力常数,也不把九帧作为完整训练集覆盖证明。
2. 输入是什么#
inputs/canonical.xyz是九帧带标签extxyz。第一帧完整内容如下;第二行虽然较长,仍然是一行:
2
Lattice="0.0 2.734462956 2.734462956 2.734462956 0.0 2.734462956 2.734462956 2.734462956 0.0" Properties=species:S:1:pos:R:3:forces:R:3 virial="-0.002068147824030018 1.0974991538108203e-05 2.8075559748648894e-06 1.0974991538108203e-05 -0.0020684030563913693 4.083717781621657e-06 2.8075559748648894e-06 4.083717781621657e-06 -0.002068147824030018" displacement_A=0.0 source_frame_id=0 source_case=si-mode-+0.000 energy=-10.84830721 pbc="T T T"
Si 0.00000000 0.00000000 0.00000000 0.00000000 -0.00000000 0.00000000
Si 1.36723000 1.36723000 1.36723000 -0.00000000 0.00000000 -0.00000000
Lattice给出晶胞,Properties声明元素、位置与三分量力;energy是该构型总能量,virial是现有的九分量张量标签。source_frame_id用于回查原始帧,displacement_A是上游生成结构时的位移参数。工具不会从virial猜测压力单位或自动变换张量排列。
3. 在终端逐项查看#
需要手动体验时,在附件根目录另建目录,复制一份数据:
module load gpumdkit/1.5.8
mkdir inspect-ranges
cp inputs/canonical.xyz inspect-ranges/train.xyz
cd inspect-ranges
gpumdkit.sh -range train.xyz energy hist save
gpumdkit.sh -range train.xyz force hist save
gpumdkit.sh -range train.xyz virial hist save
输出文件依次为range_energy.png、range_force.png、range_virial.png,均为2400×1500像素。save表示保存到磁盘,适合SSH终端;只写hist表示尝试交互显示,无图形桌面时请加save。不需要图片时去掉hist save即可。直方图默认30个区间。
| 属性 | 统计对象 | 本例数量 | 实际范围 |
|---|---|---|---|
| energy | 每帧总能量,eV/构型 | 9 | −10.84830721至−10.23029405 |
| force | 每个原子的力矢量模长,eV/Å | 18 | 0至3.617807 |
| virial | 输入提供的有符号分量,eV | 81 | 具体边界见命令和下图 |
原生终端范围保留三位小数,不能用打印后的四舍五入值替代精确标签来卡筛选边界。九分量张量中的对称重复分量也会参与统计,81个值不是81个独立构型。能量没有除以原子数;原子数不相同的数据不能直接拿总能量大小判断构型质量。



4. 交互菜单怎么操作#
运行gpumdkit.sh,进入分析模块5,再选505。第一处提示输入train.xyz energy save,第二处是否绘图输入y。这和上面的短命令走同一套分析脚本;不要把5 → 505整行当终端命令粘贴。
5. 标签读不到时检查什么#
集群1.5.8已兼容当前ASE将能量、力放入calculator结果的方式,也能读取明确提供的旧Energy能量头和force:R:3力列。缺标签、NaN/Inf或重复字段互相矛盾时会停止,而不是补成零。坐标文件没有DFT标签时,请先用DFT标签转换教程从原始结果生成数据。
读取兼容不等于训练格式转换;旧字段文件筛选后仍保留旧字段。交给NEP训练前,仍需规范字段并按真实标签与抽样流程检查实际数据。接着可看按属性筛选构型。