DP-GEN专题

DP-GEN体相初始数据实操

从Si原胞优化、缩放扰动、三条短AIMD到15帧DeepMD标签,说明diamond晶格参数和四个原生阶段。

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

dpgen init_bulk负责准备体相初始数据:先优化结构,再缩放与扰动,进行短AIMD,最后收集能量、力和维里。本篇以2原子Si金刚石原胞实际执行四个阶段,得到3条各5帧的短轨迹,共15帧标签,重点是操作顺序与文件传递。

1 下载与查看参考结果#

下载原生初始化实例包,保存为dpgen-init.zip。

python3 -m zipfile -e dpgen-init.zip .
cd dpgen-init-bulk
bash results.sh

results.sh只读取附件参考数据。需要自己重新计算时再运行bash workflow.sh,该命令使用普通账号,通过Slurm申请每个任务1CPU、1GPU。DP-GEN0.14.0采用Python3.12;VASP6.6.1 GPU版本使用NVHPC25.3、MKL2023.2,实际运行按对应P100或V10016G模块选择。

实际Si两原子原胞与晶胞矢量

2 先看晶格与参数#

cat param-template.json
cat reference-structures/initial.POSCAR

本版diamond生成器使用非正交两原子原胞,latt乘在(0,1,1)、(1,0,1)、(1,1,0)上,所以常规立方晶格常数a=2×latt。这里latt=2.715 Å对应常规a=5.43 Å,原胞体积40.02575175 ų,最近邻Si—Si约2.3513 Å。不要直接把常规5.43填入这个生成器的latt。

super_cell=[1,1,1]保留原生2原子;不是8原子常规晶胞。需要不同结构时,也可以使用from_poscar与自己准备的POSCAR,具体是否优化晶胞仍由INCAR决定。

{
  "stages": [
    1,
    2,
    3,
    4
  ],
  "cell_type": "diamond",
  "latt": 2.715,
  "super_cell": [
    1,
    1,
    1
  ],
  "elements": [
    "Si"
  ],
  "atom_masses": [
    28.0855
  ],
  "potcars": [
    "private-pp/Si.POTCAR"
  ],
  "relax_incar": "inputs/INCAR.relax",
  "md_incar": "inputs/INCAR.md",
  "scale": [
    1.0
  ],
  "skip_relax": false,
  "pert_numb": 2,
  "md_nstep": 5,
  "pert_box": 0.01,
  "pert_atom": 0.02,
  "coll_ndata": 100,
  "type_map": [
    "Si"
  ],
  "init_fp_style": "VASP"
}

生成的初始POSCAR为:

X2
1.0
   0.0000000000000000    2.7149999999999999    2.7149999999999999
   2.7149999999999999    0.0000000000000000    2.7149999999999999
   2.7149999999999999    2.7149999999999999    0.0000000000000000
Si 
2 
direct
   0.1250000000000000    0.1250000000000000    0.1250000000000000 X0+
   0.8749999999999999    0.8750000000000000    0.8750000000000000 X0+

3 优化输入:本例只优化原子位置#

SYSTEM = Si2 DPGEN native initialization
ENCUT = 500
PREC = Accurate
EDIFF = 1E-6
ISMEAR = 0
SIGMA = 0.05
ALGO = Normal
NELM = 120
KSPACING = 0.6
KGAMMA = .TRUE.
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE.
ISYM = 0
IBRION = 2
ISIF = 2
NSW = 10
EDIFFG = -0.02
LH5 = .FALSE.

ISIF=2固定晶胞、优化原子位置;力标准为0.02 eV/Å。本例最终最大原子力约1.73e-06 eV/Å。原子力很小不代表5.43 Å已经是该泛函的最优晶格常数;需要晶胞优化时,应按研究目标设置相应ISIF并检查应力和晶胞收敛。

本例用KSPACING自动生成网格,没有另外放KPOINTS。电子收敛为1E-6,ENCUT500 eV;这些是本次流程输入,实际研究仍应按体系检查截断与k点收敛。

4 执行四个阶段#

bash workflow.sh

配套脚本准备自己目录中的授权POTCAR,加载DP-GEN,依次调用原生命令。简明形式为:

dpgen init_bulk param.json machine.json

附件控制器按阶段保存PROGRESS.json,同一目录只保留一个主控。另一窗口查看:

bash status.sh
squeue -u "$USER"

阶段顺序如下:

阶段 用户要确认什么 主要目录
1 结构优化 优化输出完整,原子位置与力符合目标 00.place_ele
2 缩放与扰动 在已优化结构上生成原始及两份扰动构型 01.scale_pert
3 短AIMD 每份构型产生5个电子收敛帧 02.md
4 收集 合并真实标签并导出DeepMD格式 02.md/sys-0002/deepmd

本例scale=[1.0]不做额外整体缩放;pert_numb=2是两份扰动,加上一份未扰动结构,共3个MD任务。pert_box=0.01与pert_atom=0.02 Å分别控制晶胞和原子扰动。

5 短MD输入与实算数据#

SYSTEM = Si2 DPGEN native initialization
ENCUT = 500
PREC = Accurate
EDIFF = 1E-6
ISMEAR = 0
SIGMA = 0.05
ALGO = Normal
NELM = 120
KSPACING = 0.6
KGAMMA = .TRUE.
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE.
ISYM = 0
IBRION = 0
NSW = 5
POTIM = 0.5
TEBEG = 300
TEEND = 300
MDALGO = 2
SMASS = 0
ISIF = 2
LH5 = .FALSE.

每条设置5步、步长0.5 fs、300 K恒温条件。下表能量是VASP读取的势能,总量单位eV;不同扰动构型的体积不同。

构型 标签帧数 体积ų 首帧总势能eV 末帧总势能eV
000000 5 40.025752 -10.65661692 -10.65515209
000001 5 40.479640 -10.66202253 -10.66047497
000002 5 40.310031 -10.65950200 -10.65824812

三条实际短MD的每原子势能与最大原子力

横轴以首个保存帧为零,帧间隔0.5 fs。图中的力是MD瞬时力,不要求每一帧小于结构优化的0.02 eV/Å。5步短轨迹用于演示数据链,不能当作收敛热力学、扩散或长期稳定性结果。

6 读取最终DeepMD标签#

source ./env.sh
python - <<'PYCODE'
import dpdata
p = 'si.diamond.01x01x01/02.md/sys-0002/deepmd'
s = dpdata.LabeledSystem(p, fmt='deepmd/npy')
print('帧数/原子数:', len(s), s.get_natoms())
print(s['energies'].shape, s['forces'].shape, s['virials'].shape)
PYCODE

本例15帧、2原子:能量(15,)、力(15,2,3)、维里(15,3,3)。单位分别为eV、eV/Å、eV,晶胞与坐标为Å。收集结果与三条原始轨迹逐帧一致;coll_ndata=100是最多收集数,本次实际只有15帧,不会凭空补到100帧。

需要训练势时,还要准备足够的结构覆盖、独立验证/测试划分与模型训练配置,继续看训练、探索与再训练。结构生成器与参数界面的用途不同,见DP-GEN参数界面。

参考数据与重新绘图#

bash results.sh
bash plot.sh

reference-data/保存真实参考数值,reference-structures/保存实际结构;plot.sh只作图,不提交VASP。授权POTCAR不随网站附件分发,重新计算时由脚本在自己的目录准备。

官方初始化说明与DP-GEN0.14.0发布说明可用于核对版本条件。

数值下载#

000000-MD.csv、000001-MD.csv、000002-MD.csv。这些数值来自上述实际计算或逐帧归档,不额外启动计算。

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

查看配图

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

100%查看原图 ↗