GPUMD 恒温恒压与热膨胀参考
恒温恒压与热膨胀参考,包含终端命令、完整输入与集群实际算例。
阅读本篇目录
本文使用鸢算科技集群GPUMD 5.9.1实际运行结果。先下载全部实例与绘图脚本并解压,进入gpumd-examples目录。参考结果在cases,新运行放在work;不要在参考目录重复运行,让输出不断追加。
本篇做什么#
用300 K和600 K两组NPT轨迹演示晶胞尺寸、温度和体积统计。
1 准备算例#
python new-case.py 06-npt-300
cd work/06-npt-300
ls
附件中已包含结构与势文件,不需要自己输入几百行坐标。若要从自己的结构开始,请先阅读建模与输入文件。
本篇对应以下算例,每个都可以用python new-case.py 目录名单独建立工作副本。
| 目录 | 用途或变化 |
|---|---|
06-npt-300 |
目录名标明温度、尺寸、随机种子或应变;完整输入见下方与附件 |
06-npt-600 |
目录名标明温度、尺寸、随机种子或应变;完整输入见下方与附件 |
2 查看和修改输入#
npt_scr采用随机晶胞缩放;0为目标压力GPa,100为估计体模量GPa,1000为压力耦合时间与步长的比值。这里100并不是施加100 GPa压力。
06-npt-300 / run.in
potential potential.txt
velocity 300
time_step 1
ensemble npt_scr 300 300 100 0 100 1000
dump_thermo 100
run 30000
06-npt-600 / run.in
potential potential.txt
velocity 600
time_step 1
ensemble npt_scr 600 600 100 0 100 1000
dump_thermo 100
run 30000
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 查看结果和本次数据#
使用thermo.out最后9列重建晶胞矩阵,取行列式得到体积;不要只乘任意三列。舍弃前半程后比较均值。本例仅30 ps,两个温度点不能作为完整热膨胀曲线或收敛的膨胀系数。
head -n 12 thermo.out
| 本次集群算例 | 实际数值摘要 |
|---|---|
06-npt-300 |
后半程平均温度 (K):301.236;后半程体积 (ų/atom):20.159 |
06-npt-600 |
后半程平均温度 (K):599.353;后半程体积 (ų/atom):20.2361 |
本次thermo.out开头的数据(完整文件在附件中):
2.5877364516e+02 1.7125948874e+01 -2.3603510220e+03 3.8428453040e-01 3.5948119743e-01 3.7218755562e-01 2.9513602769e-02 8.6609796834e-02 1.3540409155e-01 2.1729487253e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1729487253e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1729487253e+01
3.2217181964e+02 2.1321715774e+01 -2.3592300735e+03 4.7069978880e-01 4.4540791436e-01 4.4390158394e-01 -9.9404703905e-02 -2.2116770036e-01 -2.4072345860e-01 2.1726958076e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1726958076e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1726958076e+01
3.1869587310e+02 2.1091673481e+01 -2.3565904247e+03 4.3395356566e-01 4.3805813907e-01 4.1548013661e-01 7.8898555069e-02 2.5667454748e-01 2.9661239579e-01 2.1733372984e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1733372984e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1733372984e+01
3.3994812025e+02 2.2498172578e+01 -2.3546372419e+03 5.8578773856e-01 5.8180047747e-01 6.1595649648e-01 -1.8624819980e-01 -2.2299686454e-01 -3.4511665318e-01 2.1728007325e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1728007325e+01 0.0000000000e+00 0.0000000000e+00 0.0000000000e+00 2.1728007325e+01
优先使用GPUMDkit工具#
任务完成后,在本篇算例输出目录执行:
module load gpumdkit/1.5.8
gpumdkit.sh -plt thermo save
每个温度目录单独执行,先检查温度、压力与体积,再使用下方脚本做多温度对照。
工具的其他用法见GPUMDkit专题。本篇自带plot.py用于结构图、统一版式和多个算例对照,保留原始数据与符号。
5 用自己的输出重新画图#
回到附件根目录,加载绘图环境:
cd ../..
module load ase/3.29.0
python plot.py --chapter npt --root work
本篇包含多个目录,需先完成上表全部算例,才能画完整对照图。
如果想先查看附件里的参考数据,执行python plot.py --chapter npt。生成的图片在相应根目录的figures中,脚本只读取数据,不修改结果。

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