GPUMD 热导率的尺寸与温度对照
热导率的尺寸与温度对照,包含终端命令、完整输入与集群实际算例。
阅读本篇目录
本文使用鸢算科技集群GPUMD 5.9.1实际运行结果。先下载全部实例与绘图脚本并解压,进入gpumd-examples目录。参考结果在cases,新运行放在work;不要在参考目录重复运行,让输出不断追加。
本篇做什么#
对512、1728、4096原子硅,在300、600、900 K各运行两组1 ns的HNEMD轨迹。
1 准备算例#
python new-case.py si-hnemd-n4-t300-s41
cd work/si-hnemd-n4-t300-s41
ls
附件中已包含结构与势文件,不需要自己输入几百行坐标。若要从自己的结构开始,请先阅读建模与输入文件。
本篇对应以下算例,每个都可以用python new-case.py 目录名单独建立工作副本。
| 目录 | 用途或变化 |
|---|---|
si-hnemd-n4-t300-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n4-t300-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n4-t600-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n4-t600-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n4-t900-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n4-t900-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n6-t300-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n6-t300-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n6-t600-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n6-t600-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n6-t900-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n6-t900-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n8-t300-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n8-t300-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n8-t600-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n8-t600-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n8-t900-s41 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
si-hnemd-n8-t900-s42 |
名称中的n为各方向晶胞重复数,t为K、s为随机种子 |
2 查看和修改输入#
所有组保持相同步长、驱动力、势函数和输出间隔。改变温度时先独立平衡;比较大小盒子时用每组相同统计长度,避免把采样长短当成尺寸效应。
si-hnemd-n4-t300-s41 / run.in
potential potential.txt
velocity 300 seed 41
time_step 1
ensemble nvt_nhc 300 300 100
run 20000
ensemble nvt_nhc 300 300 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
展开其余实例的完整控制输入
si-hnemd-n4-t300-s42 / run.in
potential potential.txt
velocity 300 seed 42
time_step 1
ensemble nvt_nhc 300 300 100
run 20000
ensemble nvt_nhc 300 300 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n4-t600-s41 / run.in
potential potential.txt
velocity 600 seed 41
time_step 1
ensemble nvt_nhc 600 600 100
run 20000
ensemble nvt_nhc 600 600 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n4-t600-s42 / run.in
potential potential.txt
velocity 600 seed 42
time_step 1
ensemble nvt_nhc 600 600 100
run 20000
ensemble nvt_nhc 600 600 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n4-t900-s41 / run.in
potential potential.txt
velocity 900 seed 41
time_step 1
ensemble nvt_nhc 900 900 100
run 20000
ensemble nvt_nhc 900 900 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n4-t900-s42 / run.in
potential potential.txt
velocity 900 seed 42
time_step 1
ensemble nvt_nhc 900 900 100
run 20000
ensemble nvt_nhc 900 900 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n6-t300-s41 / run.in
potential potential.txt
velocity 300 seed 41
time_step 1
ensemble nvt_nhc 300 300 100
run 20000
ensemble nvt_nhc 300 300 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n6-t300-s42 / run.in
potential potential.txt
velocity 300 seed 42
time_step 1
ensemble nvt_nhc 300 300 100
run 20000
ensemble nvt_nhc 300 300 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n6-t600-s41 / run.in
potential potential.txt
velocity 600 seed 41
time_step 1
ensemble nvt_nhc 600 600 100
run 20000
ensemble nvt_nhc 600 600 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n6-t600-s42 / run.in
potential potential.txt
velocity 600 seed 42
time_step 1
ensemble nvt_nhc 600 600 100
run 20000
ensemble nvt_nhc 600 600 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n6-t900-s41 / run.in
potential potential.txt
velocity 900 seed 41
time_step 1
ensemble nvt_nhc 900 900 100
run 20000
ensemble nvt_nhc 900 900 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n6-t900-s42 / run.in
potential potential.txt
velocity 900 seed 42
time_step 1
ensemble nvt_nhc 900 900 100
run 20000
ensemble nvt_nhc 900 900 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n8-t300-s41 / run.in
potential potential.txt
velocity 300 seed 41
time_step 1
ensemble nvt_nhc 300 300 100
run 20000
ensemble nvt_nhc 300 300 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n8-t300-s42 / run.in
potential potential.txt
velocity 300 seed 42
time_step 1
ensemble nvt_nhc 300 300 100
run 20000
ensemble nvt_nhc 300 300 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n8-t600-s41 / run.in
potential potential.txt
velocity 600 seed 41
time_step 1
ensemble nvt_nhc 600 600 100
run 20000
ensemble nvt_nhc 600 600 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n8-t600-s42 / run.in
potential potential.txt
velocity 600 seed 42
time_step 1
ensemble nvt_nhc 600 600 100
run 20000
ensemble nvt_nhc 600 600 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n8-t900-s41 / run.in
potential potential.txt
velocity 900 seed 41
time_step 1
ensemble nvt_nhc 900 900 100
run 20000
ensemble nvt_nhc 900 900 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
si-hnemd-n8-t900-s42 / run.in
potential potential.txt
velocity 900 seed 42
time_step 1
ensemble nvt_nhc 900 900 100
run 20000
ensemble nvt_nhc 900 900 100
compute_hnemd 1000 0.00001 0 0
dump_thermo 1000
run 1000000
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 查看结果和本次数据#
本组弱驱动力、有限时间的结果仍有明显统计波动,部分均值为负;目前不能据此得出热导率的尺寸或温度趋势。 本例保留这些数据,演示为什么要增加独立重复、延长采样,并在保持线性响应的前提下检查驱动力。
图中逐条显示末半程均值,并保留两个独立重复的差异。只有两组重复不足以建立可靠置信区间;1 ns也不自动意味着收敛。本图用于学习如何安排尺寸/温度对照,不能直接当成材料定值。
head -n 12 kappa.out
| 本次集群算例 | 实际数值摘要 |
|---|---|
si-hnemd-n4-t300-s41 |
后半程平均温度 (K):300.217;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):-148.397 |
si-hnemd-n4-t300-s42 |
后半程平均温度 (K):299.724;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):-124.11 |
si-hnemd-n4-t600-s41 |
后半程平均温度 (K):601.468;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):441.641 |
si-hnemd-n4-t600-s42 |
后半程平均温度 (K):600.138;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):-84.1772 |
si-hnemd-n4-t900-s41 |
后半程平均温度 (K):899.179;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):-96.2098 |
si-hnemd-n4-t900-s42 |
后半程平均温度 (K):899.727;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):214.887 |
si-hnemd-n6-t300-s41 |
后半程平均温度 (K):299.918;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):156.628 |
si-hnemd-n6-t300-s42 |
后半程平均温度 (K):299.676;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):71.5254 |
si-hnemd-n6-t600-s41 |
后半程平均温度 (K):599.169;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):48.8645 |
si-hnemd-n6-t600-s42 |
后半程平均温度 (K):599.684;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):-1.10492 |
si-hnemd-n6-t900-s41 |
后半程平均温度 (K):901;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):49.3909 |
si-hnemd-n6-t900-s42 |
后半程平均温度 (K):900.362;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):-36.9327 |
si-hnemd-n8-t300-s41 |
后半程平均温度 (K):299.842;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):189.566 |
si-hnemd-n8-t300-s42 |
后半程平均温度 (K):299.826;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):102.436 |
si-hnemd-n8-t600-s41 |
后半程平均温度 (K):600.108;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):98.5721 |
si-hnemd-n8-t600-s42 |
后半程平均温度 (K):599.909;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):46.7242 |
si-hnemd-n8-t900-s41 |
后半程平均温度 (K):901.135;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):38.0832 |
si-hnemd-n8-t900-s42 |
后半程平均温度 (K):899.086;后半程体积 (ų/atom):20.0239;后半程κx (W/mK):-91.3559 |
本次kappa.out开头的数据(完整文件在附件中):
-307.801327848509459 -38.182399642824507 -612.114821189521535 763.799548629168271 1803.567896624835385
-67.714134612919267 -480.992716785962045 -969.804501402535720 488.840148739061249 1698.249020346251200
-419.051181741503399 -216.105658729372692 -692.580900890828275 968.686394154072104 1609.711436873081311
-91.215218433778091 -542.790774976087505 194.851255215265411 285.746641424434699 1672.478685781814420
5 用自己的输出重新画图#
回到附件根目录,加载绘图环境:
cd ../..
module load ase/3.29.0
python plot.py --chapter thermal-size --root work
本篇包含多个目录,需先完成上表全部算例,才能画完整对照图。
如果想先查看附件里的参考数据,执行python plot.py --chapter thermal-size。生成的图片在相应根目录的figures中,脚本只读取数据,不修改结果。

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