GPUMD 力常数势 FCP 实操
从Si二三阶力常数到GPU静态计算,讲清参考坐标、文件布局和两类误差。
阅读本篇目录
手里已有二阶、三阶力常数时,可以用GPUMD的FCP接口把位移展开模型带到GPU上计算。本篇把真实Si力数据拟合得到的模型,与原始力常数参考分别运行,说明文件怎么放、原子怎么对齐、结果如何比较。

1. 力常数势计算什么#
相对于参考坐标r₀,位移为u=r−r₀。二阶能量是Φ₂uu/2,三阶增加Φ₃uuu/6;力由这个多项式求负导数。它适合参考结构附近的晶格振动,不自动成为可描述任意扩散、反应或熔化的通用势。
本例包含四种模型:original-order2/3 是已有ABACUS位移数据导出的力常数;fit-order2/3 是hiPhive仅用28个训练构型重新拟合的模型。8个留出构型对后者没有进入拟合;原始力常数用过整套历史数据,所以只能作接口参考,不能用同样的8个构型声称独立预测。
2. 文件放在同一套参考结构下#
以三阶模型为例,potential.txt 完整内容:
fcp 1 Si
3 3
fc
第一个3是力使用的最高阶数;第二个3是热流使用的最高阶数,后者仅能选2或3。fc 是相对目录,末尾不加斜杠。目录内有:
fc/r0.in
fc/fcs_order2.in
fc/clusters_order2.in
fc/fcs_order3.in
fc/clusters_order3.in
r0.in 每行对应一个原子的参考笛卡尔坐标,单位Å;必须与 model.xyz 原子顺序和周期镜像一致。这里的GPUMD5.9.1 FCP按x−r₀直接取位移,不会替你做最小镜像。把其中一个文件wrap进盒子、另一个不wrap,会把小位移变成接近整格的位移。不要单独排序原子。
3. 先做静态检查#
bash run.sh fit-order3-random1
cat work-fcp/fit-order3-random1/base/potential.txt
cat work-fcp/fit-order3-random1/base/thermo.out
此入口在已分配GPU的任务内运行。完整 run.in 为:
potential potential.txt
time_step 0
ensemble nve
dump_thermo 1
dump_xyz 1 snapshot.xyz precision double mass force potential virial
run 1
每组计算原构型与第0个原子x方向±0.001、±0.0005Å四个位移。44组覆盖四种模型、真实位移构型与三种随机位移幅度。

4. 分开看两类误差#
本次220个FCP静态状态中,GPUMD与独立float64多项式的最大力差约6.18×10⁻⁶eV/Å、能量差约2.37×10⁻⁷eV。hiPhive的ASE计算器也独立计算同一套张量。它们说明导出文件、原子对应及引擎调用一致,不等于对DFT的误差这么小。
GPUMD5.9.1 FCP的部分参考坐标、系数和内部累加使用float32;输出设置 precision double 只提高文本精度,不会改变内部计算精度。实际对DFT的留出力误差见hiPhive力拟合,约0.013–0.015eV/Å,量级明显不同。
FCP驱动文件和r₀格式见官方FCP说明。本文实际运行二、三阶;更高阶、长期MD和热导计算需要各自的数据、模型稳定性与采样检查,不能从这一静态例子直接推出。
下载与完整运行#
下载输入、真实力数据、参考输出和全部绘图脚本,解压到自己的工作目录。先重画随包结果,不重新计算:
bash analyze.sh
输出在 reference/analysis/ 和 reference/figures/。在新解压目录提交完整的两种hiPhive拟合、7组层状结构和44组FCP条件:
sbatch run.slurm
默认一张P100、一个CPU核、30分钟,分区为 gpu-8p100-hs;GPU套餐用户按自己的权限改为例如 gpu-8p100-tc。需要按条件并行提交时:
bash submit.sh
这会生成带依赖的拟合、51个条件和分析作业。只生成脚本用 bash submit.sh --dry-run。全部结束后查看 work/analysis/ 和 work/figures/,或重新分析:
bash analyze.sh work work-fcp fit
bash fit.sh 是CPU拟合入口,bash run.sh 条件名 是已经分配计算资源后的单例入口;不要在登录节点直接启动GPUMD。拟合脚本不覆盖已有 fit/,计算也不覆盖已有结果;重新计算整套请重新解压。单例完成后可以直接查看输出,统一分析需要整套条件齐全。
本例使用GPUMD5.9.1 P100构建(GCC13.3、CUDA12.9)、hiPhive1.5及ASE环境,读取导出文件使用Phonopy4.8.3、phono3py4.8.2。入口脚本会加载对应模块或已安装的工具环境。当前示例是短小的操作参考,不代替势函数、超胞、截断、位移幅度与采样的收敛检查。