GPUMD 轨迹导出与重启续算
轨迹导出与重启续算,包含终端命令、完整输入与集群实际算例。
阅读本篇目录
本文使用鸢算科技集群GPUMD 5.9.1实际运行结果。先下载全部实例与绘图脚本并解压,进入gpumd-examples目录。参考结果在cases,新运行放在work;不要在参考目录重复运行,让输出不断追加。
本篇做什么#
对同一段硅轨迹输出XYZ、NetCDF和restart.xyz,再从重启文件继续运行。
1 准备算例#
python new-case.py 17-netcdf
cd work/17-netcdf
ls
附件中已包含结构与势文件,不需要自己输入几百行坐标。若要从自己的结构开始,请先阅读建模与输入文件。
本篇对应以下算例,每个都可以用python new-case.py 目录名单独建立工作副本。
| 目录 | 用途或变化 |
|---|---|
17-netcdf |
目录名标明温度、尺寸、随机种子或应变;完整输入见下方与附件 |
21-restart |
目录名标明温度、尺寸、随机种子或应变;完整输入见下方与附件 |
2 查看和修改输入#
NetCDF适合存储大轨迹,XYZ便于查看。restart.xyz用于延续坐标和速度;续算时不要再写velocity随机化初速度。复制到新的目录可避免把新旧输出混写。
17-netcdf / run.in
potential potential.txt
velocity 300
time_step 1
ensemble nvt_nhc 300 300 100
run 10000
ensemble nve
dump_netcdf 1000 trajectory.nc velocity force
dump_xyz 1000 trajectory.xyz
dump_restart 10000
dump_thermo 100
run 10000
21-restart / run.in
potential potential.txt
time_step 1
ensemble nve
dump_thermo 100
dump_xyz 1000 trajectory.xyz
run 10000
真实续算时,先完成17-netcdf,再在新建的21-restart工作目录中替换初始结构:
cp ../17-netcdf/restart.xyz model.xyz
附件21-restart的model.xyz是本次实际重启快照;可以直接复现这段续算,也可以按上面命令改成自己的快照。
3 提交并检查进度#
sbatch run.sh
squeue -u "$USER"
tail -n 20 run.log
默认脚本用于V100核时队列。P100或套餐用户先运行yskit,选择复制Slurm脚本及匹配的用户类型、GPUMD版本、GPU型号。单进程启动,不要再套mpirun启动多个相同实例。
本例在计算节点执行的命令为:
gpumd > run.log 2>&1
这条命令已经在提交脚本内,平时只需sbatch run.sh。等待任务结束、查看日志,再读取结果。
4 查看结果和本次数据#
恢复坐标和速度不等于所有恒温器内部状态和统计累积器都被完整恢复;续算应重新安排平衡与统计。NetCDF的速度为Å/ps、力为kcal/mol/Å,与其他文本输出单位可能不同,必须按变量单位读取。
head -n 12 thermo.out
| 本次集群算例 | 实际数值摘要 |
|---|---|
17-netcdf |
后半程平均温度 (K):303.872;后半程体积 (ų/atom):20.0239 |
21-restart |
后半程平均温度 (K):304.686;后半程体积 (ų/atom):20.0239 |
本次thermo.out开头的数据(完整文件在附件中):
3.0601176331e+02 2.0252223947e+01 -2.3499569343e+03 6.6271545247e-01 6.6670190771e-01 7.0782731335e-01 -1.3988790862e-01 -3.7439372705e-01 -1.6109799111e-01 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01
2.8626270642e+02 1.8945207777e+01 -2.3486493098e+03 6.8750026902e-01 6.5592633056e-01 6.6591939603e-01 2.6916513686e-01 3.7964792309e-01 2.7769212271e-01 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01
3.0586286615e+02 2.0242369756e+01 -2.3499474602e+03 6.9560254148e-01 6.7359220849e-01 7.2382246491e-01 -2.7467642198e-01 -2.8799511618e-01 -2.6470651484e-01 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01
3.1178336903e+02 2.0634195706e+01 -2.3503398400e+03 6.7759619141e-01 6.9767383139e-01 7.0736179513e-01 2.8294177549e-01 1.0379425672e-01 1.7664832723e-01 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1724000000e+01
5 用自己的输出重新画图#
回到附件根目录,加载绘图环境:
cd ../..
module load ase/3.29.0
python plot.py --chapter trajectory --root work
本篇包含多个目录,需先完成上表全部算例,才能画完整对照图。
如果想先查看附件里的参考数据,执行python plot.py --chapter trajectory。生成的图片在相应根目录的figures中,脚本只读取数据,不修改结果。

换成自己的体系时#
先确认结构、元素和势函数适用范围,再确定温度、边界条件、时间步长与统计长度。随机初速度会使短程数值不同;复现时先比较数量级、趋势、能量稳定性和输出维度。正式研究应做势函数可靠性、尺寸与时间收敛检查。