GPUMD 原子位置与晶胞优化
原子位置与晶胞优化,包含终端命令、完整输入与集群实际算例。
阅读本篇目录
本文使用鸢算科技集群GPUMD 5.9.1实际运行结果。先下载全部实例与绘图脚本并解压,进入gpumd-examples目录。参考结果在cases,新运行放在work;不要在参考目录重复运行,让输出不断追加。
本篇做什么#
对晶格常数5.50 Å并加入0.03 Å随机位移的硅分别做固定晶胞和晶胞联动优化。

1 准备算例#
python new-case.py 02-relax-atoms
cd work/02-relax-atoms
ls
附件中已包含结构与势文件,不需要自己输入几百行坐标。若要从自己的结构开始,请先阅读建模与输入文件。
本篇对应以下算例,每个都可以用python new-case.py 目录名单独建立工作副本。
| 目录 | 用途或变化 |
|---|---|
02-relax-atoms |
固定晶胞原子优化 |
03-relax-cell |
原子与晶胞联动优化 |
2 查看和修改输入#
minimize fire 0.02 3000只优化原子位置;末尾加入1 1时允许晶胞以静水应变方式改变。0.02是最大力分量阈值,单位eV/Å,不是能量阈值。晶胞优化需考虑周期方向;二维真空方向不能照搬三维等比例缩放。
02-relax-atoms / run.in
potential potential.txt
minimize fire 0.02 3000
velocity 1
time_step 0
ensemble nve
dump_thermo 1
dump_xyz 1 relaxed.xyz force precision double
run 1
03-relax-cell / run.in
potential potential.txt
minimize fire 0.02 3000 1 1
velocity 1
time_step 0
ensemble nve
dump_thermo 1
dump_xyz 1 relaxed.xyz force precision double
run 1
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 查看结果和本次数据#
检查run.log中停止条件和relaxed.xyz里的force;达到最大步数不等于达到力阈值。末尾time_step 0的单步只用于导出优化后的结构与力,不代表进行1 fs动力学。
head -n 12 relaxed.xyz
| 本次集群算例 | 实际数值摘要 |
|---|---|
02-relax-atoms |
最大力分量 (eV/Å):0.0195423;后半程平均温度 (K):1;后半程体积 (ų/atom):20.7969 |
03-relax-cell |
最大力分量 (eV/Å):0.0108337;后半程平均温度 (K):1;后半程体积 (ų/atom):20.0507 |
5 用自己的输出重新画图#
回到附件根目录,加载绘图环境:
cd ../..
module load ase/3.29.0
python plot.py --chapter relax --root work
本篇包含多个目录,需先完成上表全部算例,才能画完整对照图。
如果想先查看附件里的参考数据,执行python plot.py --chapter relax。生成的图片在相应根目录的figures中,脚本只读取数据,不修改结果。

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