ABACUS 专题

ABACUS DeePKS:结构、标签与描述符

以八个真实水分子构型生成LDA描述符与PBE目标,说明数据划分、文件形状和新版能量单位。

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

DeePKS学习参考方法与基础方法之间的能量差,并把学习项的密度导数加入自洽势。本组从小型水分子开始,依次完成:准备几何 → LDA与PBE标签 → 投影描述符 → 训练 → 加入模型重新自洽 → 对照目标结果。

八个几何都在本集群实际计算。前六个用于训练,最后两个在训练和停止条件中均不使用,留作独立检查。为展示功能,LDA和PBE使用相同的PBE ONCV赝势与NAO基组;这些结果只比较本组固定基组模型中的两种泛函,不构成完整LDA赝势体系或普适精度基准。

下载本篇输入、脚本与参考数据。

unzip abacus-deepks-water-wave680-*.zip
cd abacus-deepks-water
bash results.sh
bash plot.sh

以上仅读取已完成的参考数据并重绘,未启动新计算。reference-data/是本集群实算参考,重新执行的原生结果放在work/、提取的数值和图片放在analysis/。每次完整重算使用新解压的目录,避免覆盖已有结果。 本组使用独立CPU环境。先编译一次,再在本资料包目录选择它:

bash use-toolchain.sh ../abacus-ml-env/toolchain

程序为固定ABACUS 3.11.0-beta10;编译器icx/icpx/ifx 2024.2、Intel MPI 2021.13、顺序MKL 2024.2,链接现有PyTorch 2.8.0+cu126,本文实际使用CPU。公共3.10.1模块保持原用途。计算脚本通过cpu-8173m申请56核独占整节点,小例内部采用少量进程,仍按整节点计费;本篇不作CPU节点性能对照。CPU资源暂不可用时可先查看参考数据。

1. 看结构和划分#

构型 第一根O–H / Å 第二根O–H / Å H–O–H / ° 用途
0 0.96 0.96 104.5 训练
1 0.94 0.97 102 训练
2 0.98 0.95 107 训练
3 1.00 0.98 105 训练
4 0.96 1.01 110 训练
5 0.93 0.95 108 训练
6 0.97 0.99 103 独立检查
7 0.99 0.94 106 独立检查

所有构型均为给定几何单点,放在14 Å立方周期胞内,未做位置优化。第0个完整STRU为:

ATOMIC_SPECIES
O 15.999 O_ONCV_PBE-1.0.upf
H 1.008 H_ONCV_PBE-1.0.upf

NUMERICAL_ORBITAL
O_gga_6au_60Ry_2s2p1d.orb
H_gga_6au_60Ry_2s1p.orb

NUMERICAL_DESCRIPTOR
jle.orb

LATTICE_CONSTANT
1.8897268777743552

LATTICE_VECTORS
14 0 0
0 14 0
0 0 14

ATOMIC_POSITIONS
Direct
O
0
1
0.500000000000000 0.500000000000000 0.500000000000000 1 1 1
H
0
2
0.568571428571429 0.500000000000000 0.500000000000000 1 1 1
0.482831085436267 0.566387266768784 0.500000000000000 1 1 1

NUMERICAL_ORBITAL指定LCAO基组,NUMERICAL_DESCRIPTOR指定投影文件。这里jle.orb为截断半径2 Bohr、能量参数20 Ry、lmax=2、每个s/p/d各两个径向函数,最终每个原子有18维本征值描述符。基组本身使用6 Bohr半径、60 Ry参数,二者的用途和数值不同。

2. LDA输入与PBE目标#

cat inputs/water0-lda/INPUT
cat inputs/water0-pbe/INPUT

LDA完整输入如下:

INPUT_PARAMETERS
suffix dk
calculation scf
basis_type lcao
ntype 2
ecutwfc 60
scf_thr 1e-6
scf_nmax 120
dft_functional lda
gamma_only 1
ks_solver genelpa
nbands 8
smearing_method fixed
mixing_type broyden
mixing_beta 0.3
cal_force 1
cal_stress 0
out_chg 0
deepks_out_labels 1
deepks_scf 0

PBE目标把dft_functional设成pbe、deepks_out_labels设成0,其余几何、势文件和基组保持匹配。ecutwfc单位Ry,scf_thr为1E-6;gamma_only 1与单个Γ点KPT一起使用。

K_POINTS
0
Gamma
1 1 1 0 0 0

3. 提交标签阶段#

sbatch labels.slurm

脚本先从固定公开源码准备势文件、基组和投影文件,再依次运行八个LDA与八个PBE单点。ZIP不直接附带UPF或轨道文件;实际使用的文件由环境准备步骤提供。

ls work/water0-lda/OUT.dk/*npy
grep FINAL_ETOT_IS work/water0-lda/OUT.dk/running_scf.log

主要文件为deepks_dm_eig.npy、deepks_ebase.npy、deepks_etot.npy及力数组。单个水分子的描述符形状是(3,18);训练集合并后是(6,3,18)。

4. 先把能量单位读对#

本固定beta版本的deepks_ebase.npy和deepks_etot.npy已经是Hartree。水0的原生数组值约−17.0284256548 Ha,对应日志−463.3672337503 eV。这里采用1 Ha = 27.211396 eV与程序常数匹配;不要再照旧版本转换脚本把数组除以2。

source ./env.sh
"$PYTHON_FOR_ANALYSIS" - <<'EOF'
import numpy as np
p='work/water0-lda/OUT.dk/'
print('描述符形状', np.load(p+'deepks_dm_eig.npy').shape)
print('能量 / Ha', np.load(p+'deepks_ebase.npy'))
EOF

训练脚本生成data/train/与data/heldout/,其中l_e_delta.npy = PBE目标能量 − LDA基础能量,全部使用Hartree。几何、描述符与能量必须保持同一帧顺序。

实际独立检查水分子结构,以及八个几何的LDA、固定密度修正与修正自洽总能差

继续模型训练。也可以在全新目录用sbatch job.slurm一次运行整个流程,不需要再分别提交各阶段。

参考数据下载#

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

查看配图

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

100%查看原图 ↗