GPUMD:准备偶极与极化率标签
用真实ORCA水分子计算准备TNEP矢量和张量标签,说明单位、分组、旋转与有限电场检查。
阅读本篇目录
训练偶极或极化率模型,首先需要真实的矢量或张量标签。能量/力文件不包含这些目标,偶极大小不能直接当成xyz分量,平均极化率也不能代替完整张量。本例从25个孤立中性水分子构型开始,完成电子结构响应计算,再把数据交给GPUMD的nep。
1. 下载并查看本例#
下载水分子标签、完整输入、训练模型、原生输出和绘图脚本,保存为gpumd-tnep-water-wave215.zip。在自己的工作目录执行:
unzip gpumd-tnep-water-wave215.zip -d water-tnep
cd water-tnep
bash view.sh
ls figures
view.sh读取随包参考结果并重新画图,不提交计算。已生成analysis和figures时会停止;再次处理请解压到新的目录,避免混用结果。

左图使用本次实际坐标与电子结构偶极,三组构型沿y方向错开便于观察;箭头按偶极分量绘制。右图将有限电场差分的极化率与解析响应比较。图中的偏移不是额外的分子间距或液态结构。
2. 先做什么电子结构计算#
使用ORCA6.1.1,PBE/def2-SVP、VeryTightSCF和DEFGRID3。25个不同几何的O—H键长在0.90–1.06 Å生成,H—O—H角在98–112°生成;这里只取单点响应,不优化几何。g00的完整input.inp为:
! PBE def2-SVP VeryTightSCF DEFGRID3 NoAutoStart
%maxcore 500
%elprop
Dipole true
Polar true
end
* xyz 0 1
O 0.00000000000000 0.00000000000000 0.00000000000000
H 1.01862528310832 0.00000000000000 0.00000000000000
H -0.33796278070155 0.96149756982995 0.00000000000000
*
Dipole true请求偶极,Polar true请求解析静态极化率;HF/DFT响应通过CP-SCF处理,具体方法范围见ORCA电性质手册。本例使用小基组,目的是演示数据与操作流程,不能把结果当作实验精度的水分子性质。
如需从头计算,在新解压目录执行:
sbatch labels.slurm
squeue -u "$USER"
CPU模板按本站56物理核整节点规则申请,脚本最多同时运行16个单核ORCA任务。当前8173M节点离线,该模板须待节点恢复后使用;资料包已包含本例取得的真实电子结构结果,可以先继续学习训练和分析。
脚本依次执行:
python3 prepare_labels.py
python3 run_orca.py
python3 parse_labels.py --new
第一步准备25次零场、36次有限电场及3次旋转对照,共64次电子结构计算;第二步实际运行;第三步读取输出、检查关系并生成标签。不是64个独立训练几何,训练数据的原始几何只有25个。
3. 看哪些输出,怎么换单位#
grep 'Total Dipole Moment' label-reference/g00/native.out
grep -A3 'raw cartesian tensor' label-reference/g00/native.out
head data/molecular-labels.csv
g00实算偶极为(0.429560893, 0.606500696, 0)原子单位,乘以玻尔半径0.529177210903后,得到(0.2273138353, 0.3209463467, 0) e·Å。原子单位极化率乘以该数的三次方,得到这里采用的ų极化体积约定:
1.1473595636 -0.2065727446 0
-0.2065727446 1.0031994511 0
0 0 0.4699651220
本例统一使用这组单位;GPUMD允许用户自行选择偶极/极化率单位,程序不会自动辨认或转换,见训练数据单位说明。后续输入、误差和图必须保持一致。
4. 数据怎样分组与变换#
25个内禀几何在看到性质标签与训练结果前划分为15训练、5验证、5独立测试;所有旋转版本跟随原几何,绝不跨组。训练每个构型4种朝向,共60帧;验证与测试每个2种朝向,各10帧。因此测试的独立几何数为5,不能把10个朝向称为10个独立量子化学样本。
module load ase/3.29.0
python3 prepare_models.py
head -n 5 cases/dipole-p100-s13579/training.xyz
首个训练帧是实际的g02:
3
Lattice="20 0 0 0 20 0 0 0 20" Properties=species:S:1:pos:R:3 pbc="T T T" dipole="0.2739086295388 0.319921096037 0" pol="1.047184487766 -0.1264089292969 0 -0.1264089292969 1.051807975832 0 0 0 0.4744249201876" parent=g02 transform=orientation0
O 10 10 10
H 10.99113389538 10 10
H 9.850094263283 11.00173643595 10
输入dipole是整分子xyz矢量,pol是整分子张量,按xx、xy、xz、yx、yy、yz、zx、zy、zz展开。水分子放在20 Å周期盒中,截断半径小于半盒长,避免分子与自己的周期像进入本例局域环境。
旋转坐标时,偶极也要按μ′=Rμ旋转,极化率按α′=RαRᵀ变换。只转坐标、不转标签,会把正确数据变成错误训练样本。本例另用3次真实旋转电子结构计算核对,而不只依赖增强公式。
5. 为什么加有限电场对照#
在g00、g12、g24上分别沿xyz加正负电场,步长为0.0003和0.0001原子单位。ORCA输入例如:
%scf
EField 0.0001, 0.0, 0.0
end
保持几何不动,用能量差分检查偶极,用偶极差分检查极化率。该电场关键字与单位见ORCA有限电场手册。本例各方向最大偶极差异约2.02×10⁻⁶原子单位,极化率差异约1.37×10⁻⁴原子单位;这里是在同一方法层级内检查数据提取和响应关系,并非基组收敛或实验验证。
接下来分别做偶极模型训练与极化率模型训练。25个孤立水分子构型不能覆盖液态水、氢键网络、解离、带电分子或体相介电响应;这些问题需要重新设计数据。