GPUMD 频谱热流的输出与作图
频谱热流的输出与作图,包含终端命令、完整输入与集群实际算例。
阅读本篇目录
本文使用鸢算科技集群GPUMD 5.9.1实际运行结果。先下载全部实例与绘图脚本并解压,进入gpumd-examples目录。参考结果在cases,新运行放在work;不要在参考目录重复运行,让输出不断追加。
本篇做什么#
在HNEMD轨迹上同时采集频谱热流,识别相关函数与频谱两个数据块。
1 准备算例#
python new-case.py 12-hnemd-0.00001
cd work/12-hnemd-0.00001
ls
附件中已包含结构与势文件,不需要自己输入几百行坐标。若要从自己的结构开始,请先阅读建模与输入文件。
2 查看和修改输入#
compute_shc 5 200 0 200 120依次为取样间隔、相关步数、输运方向、频率点数和最大角频率;0指x方向。SHC不能直接当作声子态密度。
12-hnemd-0.00001 / run.in
potential potential.txt
velocity 300
time_step 1
ensemble nvt_nhc 300 300 100
run 10000
ensemble nvt_nhc 300 300 100
compute_hnemd 1000 0.00001 0 0
compute_shc 5 200 0 200 120
dump_thermo 1000
run 200000
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 查看结果和本次数据#
图中先展示GPUMD原生谱热流。若要换算频谱热导率,需要按体积、温度和驱动力做归一化;二维体系还涉及厚度约定,不可只给纵轴改名。
head -n 12 shc.out
| 本次集群算例 | 实际数值摘要 |
|---|---|
12-hnemd-0.00001 |
后半程平均温度 (K):299.727;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):59.0551 |
本次shc.out开头的数据(完整文件在附件中):
-0.995 -0.000123587 0.00020523
-0.99 6.58547e-05 0.00103041
-0.985 0.00124428 0.00269296
-0.98 0.00364941 0.00515828
工具选择与输入格式#
GPUMDkit的HNEMD/NEMD绘图包含谱积分,但1.5.8会把负总谱值裁剪为正小数。本篇未收敛谱必须保留正负波动,因此使用附件plot.py画原始带符号SHC,不能用裁剪后的正面积宣称收敛谱热导。
5 用自己的输出重新画图#
回到附件根目录,加载绘图环境:
cd ../..
module load ase/3.29.0
python plot.py --chapter spectral --root work
如果想先查看附件里的参考数据,执行python plot.py --chapter spectral。生成的图片在相应根目录的figures中,脚本只读取数据,不修改结果。

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