DP-GEN专题

DP-GEN的VASP、ABACUS与CP2K标注

展示三种DFT后端的实际输入、提交入口、数据转换和能量力应力单位。

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

下载完整输入、教学模型、实算数据和操作脚本(ZIP)。机器学习势需要同一精度口径的真实DFT标签。本例主循环使用VASP,另对同一八原子候选结构实际运行ABACUS和CP2K,演示三种输入与数据读取方式。两个独立后端的标签没有混入VASP训练集。

1 VASP:完整流程自动标注#

bash prepare.sh
bash workflow.sh

已有工作目录直接运行第二条续算,不要重新准备。进入 iter.000000/02.fp 可看到四个候选的POSCAR、INCAR和KPOINTS。

cat inputs/vasp/task.000.000000/POSCAR
cat inputs/INCAR.fp
cat inputs/vasp/task.000.000000/KPOINTS

实际模板:

SYSTEM=Si actual labels PBE
ENCUT=450
EDIFF=1E-6
PREC=Accurate
ISYM=0
ISIF=2
NSW=0
IBRION=-1
ISMEAR=0
SIGMA=0.05
LWAVE=.FALSE.
LCHARG=.FALSE.
LREAL=.FALSE.
ADDGRID=.TRUE.
ALGO=Normal
NELM=120
NCORE=1
GGA=PE

KSPACING=0.5
KGAMMA=.TRUE.

NSW=0 对候选构型做单点,不重新优化。若把候选都弛豫到相同平衡点,便丢失主动学习需要的偏离平衡构型。EDIFF=1E-6 控制电子收敛;ISIF=2 输出应力。KSPACING=0.5 配合Γ中心生成网格,随候选晶胞变化,本例出现2×2×2及3×3×3。

第一个候选实际生成的 KPOINTS 为:

Automatic mesh
0
Gamma
2 2 2

初始48标签与新探索构型的k点密度设置需结合材料另行收敛检查。本专题展示短流程,不把不同体积上的这组稀疏网格当成精确状态方程数据。

find work/loop/iter.000000/02.fp -name energy.npy
find work/loop/iter.000000/02.fp -name force.npy

原生输出是多系统数据,实际标签位于 data.000/Si8/set.000/,不是把所有原子数硬塞进同一数组。

2 ABACUS:生成输入、SCF和原生回收#

bash backend.sh abacus
cat inputs/abacus/INPUT
cat inputs/abacus/KPT

该入口调用DP-GEN生成候选输入,通过Slurm运行ABACUS 3.10.1 GPU PW,再以原生后处理提取标签。

INPUT_PARAMETERS
calculation scf
suffix ABACUS
ntype 1
basis_type pw
device gpu
precision double
ks_solver cg
ecutwfc 60.000000
scf_thr 1.000000e-08
scf_nmax 150
nbands 24
symmetry 0
cal_force 1
cal_stress 1
smearing_method gauss
smearing_sigma 0.003675
mixing_beta 0.300000

ecutwfc 的单位是Ry,本例60 Ry;smearing_sigma 也是Ry,0.003675 Ry约0.05 eV。ABACUS这里用 smearing_method gauss,不要照搬其他程序的 occupations 关键字。cal_force/cal_stress 确保训练所需的力与应力输出。

cat inputs/abacus/STRU
cat work/backend-abacus/RESULTS.json
find work/backend-abacus -name energy.npy

Si质量设28.085;STRU 的 LATTICE_CONSTANT=1.889726... 对应1 Å,晶格向量和坐标需配合该尺度解释,不能再重复乘一次Å转Bohr因子。完整STRU和带来源/许可证的Si ONCV PBE赝势已附。

3 CP2K:GPW力与应力标注#

bash backend.sh cp2k
cat inputs/cp2k/input.inp
cat work/backend-cp2k/RESULTS.json

实际使用CP2K 2026.2、PBE、DZVP-MOLOPT-SR-GTH基组与GTH-PBE-q4,Γ点、400 Ry密度网格截断、50 Ry相对截断,RUN_TYPE ENERGY_FORCE,解析应力,电子收敛1E-6。关键段如下:

&GLOBAL
  PROJECT DPGEN
  RUN_TYPE ENERGY_FORCE
&END GLOBAL
&FORCE_EVAL
  METHOD QS
  STRESS_TENSOR ANALYTICAL
  &DFT
    &MGRID
      CUTOFF 400
      REL_CUTOFF 50
    &END MGRID
    &SCF
      EPS_SCF 1E-6
      MAX_SCF 100
      &OT
        MINIMIZER CG
        PRECONDITIONER FULL_SINGLE_INVERSE
      &END OT
      &OUTER_SCF
        EPS_SCF 1E-6
        MAX_SCF 10
      &END OUTER_SCF
    &END SCF
  &END DFT
&END FORCE_EVAL

这是参数摘录,完整输入还包括基组/势文件、XC、晶胞、坐标及Si元素定义,已在附件中,不要仅拿摘录单独运行。本例真实总能量为−30.9209494734 Hartree;转换为训练数据时统一到eV。

CP2K 2026输出的能量、力、应力行格式与较早读取器不同,附件 cp2k2026_reader.py 在当前进程注册读取适配,保留原始文本不变。应力输出bar转换为GPa,再按晶胞体积转换为virial;不可把bar直接当eV/ų。该适配只随本例脚本装载,不要求修改公共安装。

cat cp2k2026_reader.py
cat post_backend.py
find work/backend-cp2k -name virial.npy

4 三种结果怎么比较#

同一候选结构的三种实际DFT力标签

图中是同一候选的逐原子力模长。三种程序采用不同基组、赝势和k点设置;绝对总能量零点不同,不横向比较总能量大小,也不把三种能量拼成一个训练集。这里展示的是后端实际输入与接口,不是跨软件精度排名。

cat analysis/backend-labels.csv
ls reference/backend-*.json
cat configs/backend-abacus.json
cat configs/backend-cp2k.json

VASP使用6.6.1 P100版本;ABACUS使用3.10.1 V100版本;CP2K使用2026.2 V100版本。入口各自装载匹配模块,包括相应编译器、MPI与CUDA依赖;详细依赖可用 module show 查看,避免把DeePMD所用的MPI环境带进CP2K进程。DP-GEN参数说明列出各DFT后端配置字段。

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

查看配图

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

100%查看原图 ↗