DeePMD专题

DeePMD压力差分步长怎么选

用真实微应变数据观察压力差分的步长依赖,保留粗步长偏差,理解固定结构与有限温度压力的区别。

更新于 2026-11-11约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

用能量对体积求导,可以检查模型的构型压力。步长过大带来截断误差,过小则可能放大能量的数值噪声。本篇使用DeePMD与LAMMPS完整包中的同一组64原子硅结构,展示实际步长对照。

1 读取步长表格#

在解压目录执行:

bash analyze.sh
head -n 14 tables/pressure-steps.csv

表格包含模型与结构名、微应变 strain、差分压力 pressure_bar 和相对原生压力的绝对差 error_bar,单位均按列名标注。reference/pressure/ 保留每个条件的 source-base.dump、完整输入及实际±应变能量和体积;原10⁻⁵微应变结果留在 reference/original/。

2 结构怎样缩放#

三个方向同时乘1+ε或1−ε,所有坐标随晶胞仿射缩放,保持分数坐标;其它设置和权重固定。分别获得E₊、V₊和E₋、V₋,使用:

P_difference = -(E_plus - E_minus) / (V_plus - V_minus)
P_bar = P_difference × 1602176.5

这里是固定结构能量的导数,没有在每个体积下重新优化原子。若每个点都松弛,便是另一条能量曲线,不能与同一固定结构的原生virial直接混合。

查看默认新算例输入:

cat input-example.lmp

本包默认用ε=10⁻⁶。输入的第二次缩放因子为 (1−ε)/(1+ε),从已经放大的盒子转到缩小的盒子;它不是简单地在放大后再乘1−ε。参考步长扫描则在每次±应变前用 read_dump 重新读入同一实际基准坐标,避免连续缩放累积。

3 实际步长变化带来多大差异#

不同微应变下的实际压力差分误差,原步长与更小步长均保留

本组参考数据的最大绝对差如下:

ε 压力差最大值/bar
3×10⁻⁵ 0.651302
10⁻⁵ 0.072368
3×10⁻⁶ 0.006509
10⁻⁶ 0.000706
3×10⁻⁷ 0.000388

原10⁻⁵条件中有30个结果超过0.01 bar的参考容差,原值保留。小步长对照前固定选择10⁻⁶与3×10⁻⁷两档;这两档各自的误差与相互压力差均低于同一0.01 bar标准,因此默认脚本采用10⁻⁶。没有把粗步长偏差通过改容差变成一致。

图的横轴为对数坐标,纵轴使用靠近零为线性的symlog,零误差仍在零点,不插入人工下限。接近浮点噪声时继续缩小步长不一定改善,因此不能把“越小越好”作为通用规则。换模型、构型、精度或后端时应重新做自己的步长对照。

4 这个结果说明什么#

它表明在这组固定结构上,小步长能量导数与原生构型压力数值一致;没有据此证明教学模型的材料精度。部分模型仍有较大残余压力,见模型接入教程中的实际压力图。

生产使用时,先核对原子类型和单位,检查同模型接口能量/力/virial,再比较两个相邻小步长;随后使用自己的独立参考数据检查模型。有限温度EOS、热膨胀、相变或长时间MD还需要相应的采样和统计。

重新绘制参考图:

bash plot.sh

LAMMPS压力包含哪些项见官方压力定义;同模型张量顺序与符号见能量、力及virial对照。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗