GPUMD专题

GPUMD NVE 与时间步检查

Cu和Ar六组20ps实算,完整输入、总能量提取、漂移与温度解释。

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

NVE不施加恒温器或恒压器,适合先检查时间步、势函数和积分过程的能量行为。本篇在同一材料准备起点上,对Cu使用0.5、1、2fs,对Ar使用1、2、4fs,各运行20ps。

六组真实NVE能量和温度轨迹

1. 先完成准备,再选择时间步#

在已有计算资源中:

bash prepare.sh
bash run.sh cu-nve-dt0p5
bash run.sh cu-nve-dt1p0
bash run.sh cu-nve-dt2p0

prepare.sh 建立共同Cu/Ar状态,只执行一次。下例保持相同的20ps生产长度:

cu-nve-dt1p0 / run.in

potential potential.txt
time_step 1
ensemble nve
dump_thermo 100
dump_xyz 1000 trajectory.xyz precision double mass velocity force potential virial unwrapped_position
dump_restart 20000
run 20000

0.5fs对应40000步,2fs对应10000步。比较时间步时应比较相同的物理时长,而不是简单给各任务相同的run步数。

展开其余五组完整NVE输入

cu-nve-dt0p5 / run.in

potential potential.txt
time_step 0.5
ensemble nve
dump_thermo 100
dump_xyz 1000 trajectory.xyz precision double mass velocity force potential virial unwrapped_position
dump_restart 40000
run 40000

cu-nve-dt2p0 / run.in

potential potential.txt
time_step 2
ensemble nve
dump_thermo 100
dump_xyz 1000 trajectory.xyz precision double mass velocity force potential virial unwrapped_position
dump_restart 10000
run 10000

ar-nve-dt1p0 / run.in

potential potential.txt
time_step 1
ensemble nve
dump_thermo 100
dump_xyz 1000 trajectory.xyz precision double mass velocity force potential virial unwrapped_position
dump_restart 20000
run 20000

ar-nve-dt2p0 / run.in

potential potential.txt
time_step 2
ensemble nve
dump_thermo 100
dump_xyz 1000 trajectory.xyz precision double mass velocity force potential virial unwrapped_position
dump_restart 10000
run 10000

ar-nve-dt4p0 / run.in

potential potential.txt
time_step 4
ensemble nve
dump_thermo 100
dump_xyz 1000 trajectory.xyz precision double mass velocity force potential virial unwrapped_position
dump_restart 5000
run 5000

2. 从原生输出计算总能量#

thermo.out 中第2列是动能,第3列是势能,单位eV;NVE总能量使用两者之和。

module load ase/3.29.0
python - <<'PYENERGY'
import numpy as np
a=np.loadtxt('work/cu-nve-dt1p0/thermo.out')
t=np.arange(1,len(a)+1)*100*1.0/1000
E=a[:,1]+a[:,2]
print('first/last eV:',E[0],E[-1])
print('span meV/atom:',np.ptp(E)/256*1000)
print('slope eV/atom/ps:',np.polyfit(t,E,1)[0]/256)
PYENERGY

先加载ASE模块取得配套Python与NumPy,再执行上面的命令;完整数值和绘图由资料包的分析入口处理。这里第一条热力学数据是在100步后保存,不是初始0时刻;图上明确使用“相对第一条已保存能量”。

3. 本次实际数据#

材料 时间步/fs 能量线性斜率/eV·原子⁻¹·ps⁻¹ 能量全跨度/meV·原子⁻¹
CU 0.5 3.643e-07 0.060294
CU 1.0 5.372e-07 0.060353
CU 2.0 7.417e-07 0.059481
AR 1.0 5.001e-08 0.036090
AR 2.0 -9.981e-08 0.035858
AR 4.0 -2.182e-07 0.030681

斜率是整段短轨迹的线性拟合,全跨度是最高与最低能量的差,两者表达不同。正负斜率都可能出现,不要只看末值相对初值的符号。

Cu这组数据中更小步长的线性漂移较小;这不是对所有材料、势和采样长度的通用排序。Ar使用未平滑截断LJ,原子对穿过截断会带来能量跳变,减小时间步也不能消除势定义本身的不连续,具体见LJ截断实例。

4. 温度为什么没有一直等于初始目标#

NVE没有控温器,动能与势能不断交换,瞬时温度会起伏;短准备后的NVE均值也不保证正好等于准备时设定的温度。不要为了让温度曲线变平,给NVE任务悄悄加上重标度或重新初始化速度。

5. 换客户体系时检查什么#

从合适的优化和准备状态开始,选择至少两个时间步,比较相同长度的NVE轨迹。检查能量的振荡与漂移、温度、结构是否合理、最短原子间距和势截断处理。含轻元素、高频振动或极端温压的体系不能照抄Cu和Ar步长。20ps的本例不用于证明长时热输运或任何体系的普遍稳定性。

资料包与完整运行#

下载完整输入、真实参考数据、末态重算与绘图脚本,解压后进入目录。先重画随包结果:

bash analyze.sh

输出为 reference/analysis/ 下的CSV、数值摘要和 reference/figures/ 中的图片。原生末态重算结果已经随包,分析会先核对其输入,再处理数据。

新解压目录提交准备加一个Cu NVT-BDP实例:

sbatch run.slurm

提交完整46条件、两个材料准备流程和依赖分析:

bash submit.sh

只生成脚本检查,用 bash submit.sh --dry-run。整套完成后:

bash analyze.sh work common

这一步对每个重启末态做零步静态导出,再独立分析和画图,应在已分配的计算资源内执行;生成的分析作业已包含这些命令。只运行单例时,先直接查看其 thermo.out、trajectory.xyz、restart.xyz,统一分析需要46条件齐全。

run.slurm 默认一张P100、一个CPU核、gpu-8p100-hs;套餐用户按权限改为例如 gpu-8p100-tc。整套提交还需修改 submit.py 中的partition。bash prepare.sh 和 bash run.sh 条件名 是已有任务资源内的入口,不在登录或管理节点直接运行。prepare.sh 只在新目录建立 common/cu、common/ar,已有common/work/jobs保留;重跑整套请重新解压。单进程启动,不使用mpirun。

固定环境:GPUMD5.9.1、GCC13.3、CUDA12.9,模块 gpumd/5.9.1-p100;该构建含PLUMED2.10.1和NetCDF-C4.10.1,本批没有施加偏置。分析使用ASE3.29.0环境中的NumPy/Matplotlib。20ps结果用于操作与数值关系参考,正式材料研究仍需检查准备时长、模型、尺寸、时间步和采样;不据此给出收敛热力学量、相界或性能排名。

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

查看配图

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

100%查看原图 ↗