DeePMD Hessian量化标签准备
用真实H2量化能量、梯度和二阶矩阵构造训练标签,并以独立位移力核对完整Hessian。
阅读本篇目录
Hessian是能量对原子笛卡尔坐标的二阶导数,可用来描述局部力常数。本例在鸢算科技集群真实计算H₂的能量、力和完整6×6 Hessian,再训练DeePMD模型。先整理标签,接着联合训练,最后查看检查点与二阶矩阵分析。
1 下载与目录#
mkdir H2-Hessian
python3 -m zipfile -e h2-deepmd-hessian-*.zip H2-Hessian
cd H2-Hessian
本包提供已经真实计算的数值标签,训练不需重新运行Gaussian。Gaussian程序、CHK、完整FCHK与轨道系数没有打包;包内的 model.pt 是DeePMD神经网络检查点,两者不是同一种文件。
2 实际结构与量化计算#
H₂为中性单重态、2电子,固定H—H距离计算。训练6个原始结构:0.64、0.68、0.72、0.76、0.80、0.84 Å;验证0.70、0.78 Å;测试0.74、0.82 Å。每个原始几何再取三种刚体姿态,生成18、6、6帧,先分组再旋转,避免同一个几何同时进入训练和测试。

左图各行是不同分子的展示位置,红色箭头表示实际原子力方向。结构固定,没有在每个键长做优化。量化方法为HF/6-31G(d),Gaussian16 C.01 AVX版,每次1核、1GB内存。
cat reference/gaussian-inputs/H2-test-01.gjf
%NProcShared=1
%Mem=1GB
%chk=calc.chk
#p HF/6-31G(d) SCF=(Tight,Conver=10) Freq=NoRaman NoSymm
H2 actual energy-gradient-Hessian H2-test-01
0 1
H -0.37000000000000 0.00000000000000 0.00000000000000
H 0.37000000000000 0.00000000000000 0.00000000000000
10个基本结构用 Freq=NoRaman 求解析二阶导数。另对两个测试几何的每个原子、每个坐标分别位移±10⁻⁴ Å,执行24次独立的 Force 计算,核对Hessian全部6个笛卡尔列。实际共34次Gaussian与34次 formchk。
对应原生命令是 g16 < input.gjf > native.log 和 formchk calc.chk calc.fchk;NoSymm 保留本例坐标与原子对应。这里只取SCF电子能量,没有把频率输出中的零点能或热修正加到训练能量里。
3 矩阵、顺序与单位#
| 标签 | 源量与换算 | 本例每帧形状 |
|---|---|---|
| 能量 | SCF能量×27.211386245988,Hartree→eV | 1 |
| 力 | −Cartesian Gradient×27.211386245988/0.529177210903 | 2×3,eV/Å |
| Hessian | Cartesian Force Constants×27.211386245988/0.529177210903² | 6×6,eV/Ų |
Gaussian格式化检查点中的二阶矩阵以21个下三角元素保存,先按行展开并补齐对称项,再写为完整36个分量。原子与坐标顺序固定为 H1x H1y H1z H2x H2y H2z;hessian.npy 每帧36列,不能把21个三角元素直接当训练输入。
bash labels.sh
脚本核对独立力差分,再重建 labels-rebuilt/ 的能量、力和Hessian数组,与参考数组逐项比较。分子旋转时力按F′=RF变换,Hessian按H′=AHAᵀ变换,其中A为两个R组成的块对角矩阵。非周期目录有 nopbc,20 Å的盒矩阵是格式占位。
head -n 32 reference/selected-labels/H2-test-01.json

力差分采用Hᵢⱼ=−[Fᵢ(xⱼ+δ)−Fᵢ(xⱼ−δ)]/(2δ)。两个测试结构的全矩阵最大差异约1.75×10⁻⁶和4.51×10⁻⁶ eV/Ų,用于核对负号、单位和行列顺序。差分控制结构没有混进训练集。继续联合训练;标签格式见DeePMD官方Hessian说明。