GPUMD专题

GPUMD LJ 截断与能量差分

真实Ar结构展示截断跳变,独立逐对求和核对能量、力、virial与应变差分。

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

用能量的差分检查力或virial时,要先确认差分区间没有跨过不连续点。GPUMD的普通LJ势没有自动平移或平滑截断,本篇用真实Ar晶体静态计算说明这一点。

LJ势的截断跳变及实际Ar结构应变数据

1. 完整输入与参数#

本例采用5.9.1官方随附的Ar参数:

lj 1 Ar
1.032e-2 3.405 10.0


它表示ε=0.01032eV、σ=3.405Å、截断10Å。在截断内使用 4ε[(σ/r)^12-(σ/r)^6],截断外为零;截断处的内侧能量一般不等于零,因此会跳变。

控制输入如下:

potential potential.txt
time_step 0
ensemble nve
dump_thermo 1
dump_xyz 1 snapshot.xyz precision double force potential virial
run 1

结构在资料包 inputs/ar-lj-cutoff-control/model.xyz。256个Ar原子位于有小随机位移的FCC结构中,因此有些原子对非常接近截断。它是截断敏感性演示,不是液体平衡或扩散模拟。

2. 运行并查看结果#

bash run.sh ar-lj-cutoff-control
tail -n 1 work/ar-lj-cutoff-control/base/thermo.out
head -n 2 work/ar-lj-cutoff-control/base/snapshot.xyz

脚本在原结构之外计算±0.2%、±0.1%的等比例晶胞应变,坐标一起缩放。比较的是同一个定义好的势,没有改写势参数。

数据 实际结果
原结构势能 -20.959981784 eV
原生virial的迹 -26.134294 eV
±0.2%能量差分的负导数 -34.329899 eV
±0.1%能量差分的负导数 -34.577277 eV

两种差分结果没有靠近局部virial。原因是缩放过程中,部分原子对从截断内变到截断外,有限的能量跳变也进入了差分商。图中的连续细线由完全独立的逐对LJ求和得到,圆点来自原生GPUMD,两者在同一结构和截断定义下吻合。

3. 怎样独立检查,而不是只看程序是否结束#

分析脚本按周期最小镜像逐对计算距离,使用相同ε、σ、截断,分别求总能量、力和virial;本例原生结果与独立求和的能量差为 7.159e-07 eV,最大原子力差为 1.475e-07 eV/Å。

常规的 ar-lj 例子则使用5.5Å晶格常数,仅对一个原子给小位移,远离截断边界,用于平滑区间的差分检查。两者都使用原有势文件,没有为了让差分好看而篡改计算公式。

4. 客户实际计算中怎么处理#

差分不一致时,先检查原子对是否跨过截断,再看差分步长及浮点精度。改变步长要有物理原因,不能只挑一个看起来吻合的结果。动力学里也应关注截断导致的能量波动,并针对势和研究目标检查时间步、盒尺寸、截断处理及采样;不能把零步静态一致性当作NVE守恒证明。

需要平滑或平移的势时,应选择明确提供该定义的实现和相应参数,不要以为普通GPUMD lj 已经自动处理。本篇也不把示例自定义双组分LJ系数作为真实混合物模型。官方LJ说明明确给出了该实现的截断形式。

下载、提交与分析#

下载完整结构、势参数、控制输入、参考结果和绘图脚本,解压后进入目录。先分析随包真实结果:

bash analyze.sh

输出在 reference/analysis/RESULTS.json 和 reference/figures/。提交默认硅实例:

sbatch run.slurm

需要其他实例时,只修改 run.slurm 中的 CASE_NAME。整套19条件及依赖分析可以在新解压目录提交:

bash submit.sh

只看生成的脚本、不提交,用 bash submit.sh --dry-run。工作结果写入 work/条件名;整套19条件完成后运行 bash analyze.sh work。只运行一个条件时,直接查看对应的 snapshot.xyz、thermo.out 和日志;这个统一分析入口需要全套条件。已有 work/jobs 不覆盖,重新执行整套流程请重新解压。

默认分区为 gpu-8p100-hs,单进程、一张P100、一个CPU核。套餐用户按自己可用的分区修改,例如 gpu-8p100-tc;整套提交同时修改 submit.py 中的partition。正文的 bash run.sh 条件名 只在已分配的计算资源内执行,不在登录或管理节点直接启动计算,也不套 mpirun。

环境固定为 gpumd/5.9.1-p100,GCC13.3、CUDA12.9,公共构建含PLUMED2.10.1和NetCDF-C4.10.1;本批没有施加PLUMED偏置。CPU分析使用ASE3.29.0环境中的NumPy/Matplotlib。公开运行脚本按集群现有模块加载,不需要另行安装软件。

这些实例做静态输入和数值关系演示,不是材料精度、物性收敛或GPU性能评测。换成客户体系时,先确认元素、化学环境、边界与势的适用范围,再做优化和动力学。

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

查看配图

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

100%查看原图 ↗