DeePMD专题

DeePMD原子布居与Mulliken标签

用真实氨分子量化电荷构造逐原子电子布居,区分自旋通道、分子性质与电荷定义。

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

本例介绍DeePMD的逐原子电子布居 population 模型。数据来自鸢算科技集群已经实际计算的24个NH₃ RHF/6-31G(d)结构;先准备标签,再进行闭壳层训练,最后读取电荷和自旋布居。

1 下载和解压#

下载量化输入、真实标签、起始权重、训练结果和绘图程序:

mkdir NH3-population
python3 -m zipfile -e nh3-deepmd-atomic-population-*.zip NH3-population
cd NH3-population
head -n 40 reference/SELECTED-MULLIKEN-LABELS.json

包内提供实际Mulliken电荷及其换算的标签,没有Gaussian程序、完整FCHK或轨道系数。本例重算直接使用这些已完成的量化标签,不需要再次提交Gaussian。

2 真实结构与电子数#

NH₃为中性闭壳层单重态,总电子数10,RHF的α、β电子各5个。以下为其中一个真实测试结构的Mulliken电荷和电子布居:

实际NH3结构、Mulliken电荷与两个自旋通道的真实标签

Mulliken是一种电子布居划分方法;这里的原子电荷是这套方法和基组下的结果,不是Bader电荷。更换电子结构方法、基组或布居划分方案时,需要保持标签定义一致。

本例是全电子Gaussian计算,核电荷为Zₙ=7、Zₕ=1。由实际Mulliken电荷q构造:

  • 原子电子总布居:nα+nβ=Z−q;
  • 闭壳层RHF两通道相等:nα=nβ=(Z−q)/2;
  • 反算原子电荷:q=Z−nα−nβ。

α/β标签依据本例闭壳层关系换算,并非另做了一套开壳层自旋分辨计算。 来自赝势程序的数据还需核对统计的是哪些显式电子,不能直接照搬全电子Z值。

3 数据怎样排列#

bash labels.sh

按原始几何划分16个训练、4个验证、4个测试结构,每个再生成三种刚体姿态,得到48、12、12帧。脚本将真实标签重新整理为 labels-rebuilt/,与参考NumPy数组逐项比较。

逐原子两通道数组、实际标签数值和全部量化结构的电子数核对

atomic_population.npy 每帧按N、H1、H2、H3依次存储各自的α、β布居,因此每帧8列。训练数组为48×8,验证和测试各12×8。coord.npy 每帧12个坐标分量,type.raw 为 0 1 1 1、type_map.raw 为N和H;目录有 nopbc。

与通用性质双输出区别在于:后者每个分子只有两个标量;这里每个原子都有两个电子布居通道,不能混用数组形状。三种刚体姿态也不是三个独立量化结构。

4 量化输入参考#

cat reference/gaussian-inputs/NH3-test-01.gjf
%NProcShared=1
%Mem=1GB
%chk=calc.chk
#p HF/6-31G(d) SCF=(Tight,Conver=10) Polar NoSymm

NH3 actualtensorlabel NH3-test-01

0 1
N 0.00000000000000 0.00000000000000 0.00000000000000
H 0.93645569311246 0.00000000000000 -0.37835265935007
H -0.46822784655623 0.81099441975395 -0.37835265935007
H -0.46822784655623 -0.81099441975395 -0.37835265935007

标签来自Gaussian16 C.01 AVX版,方法HF/6-31G(d)、严格SCF收敛与 NoSymm;实际原输入还计算极化率,当前只取Mulliken电荷。需要自己生成标签且具有Gaussian权限时,可运行 g16 < input.gjf > native.log,再用 formchk calc.chk calc.fchk 得到格式化检查点中的 Mulliken Charges。继续模型训练。

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

查看配图

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

100%查看原图 ↗