DFT-D4专题

CP2K使用D4:输入、能量与力

从PBE与PBE-D4成对单点计算开始,读出色散能并核对力修正。

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

本篇演示在CP2K输入中启用D4,以及从输出中确认“总能量已经包含D4”。主程序直接处理能量和力,适合继续构建色散修正的优化或分子动力学输入;本文实际运行的是固定结构单点,不把它当作已优化或收敛的结合能结果。

下载输入、真实参考结果与绘图脚本。解压后进入资料包所在目录,先画已有结果:

bash view.sh

图片和逐条件数值分别写入 analysis/figures、analysis/bookkeeping.csv。脚本使用集群的 ASE3.29.0、NumPy、Matplotlib 环境,画参考数据不提交计算。结果目录已存在时,指定一个新目录:

bash view.sh --output another-analysis

本组在鸢算科技集群实际计算了中性水、相同几何的带电水,以及氧原子间距2.9 Å、4.2 Å的两个水分子对。水分子对按同一朝向侧向摆放,属于固定结构的能量记账示例,没有做氢键构型优化。带电水总电荷为+1、多重度为2;其余为中性单重态。不同主程序使用不同基组与电子芯层处理,只比较各自开关D4的差,不能直接相减两种软件的绝对DFT能量。

实际使用的固定水分子与水分子对结构

1 准备并提交两个输入#

本例使用CP2K2026.2,GNU13.3、MPICH5.0.1、CUDA12.9、OpenBLAS0.3.33,链接libdftd4 4.2.0。水分子示例使用 cp2k/2026.2-p100,水分子对使用 cp2k/2026.2-v100。

python3 prepare.py cp2k
cd cases/cp2k-water-plain
sbatch job.slurm
cd ../cp2k-water-d4
sbatch job.slurm
squeue -u "$USER"

每个模板申请1张对应GPU、1个CPU核心,核时用户使用模板里的核时分区;套餐用户按账户规则选择分区。ORCA在这里走CPU程序路径,申请GPU资源不表示ORCA本例有GPU加速。CP2K采用对应GPU构建。不要在登录节点直接运行完整DFT计算。

准备与运行分开:prepare.py按所选软件建立输入目录,随后只提交所需的目录。若已有 cases,请重新解压到新目录,避免覆盖已有结果。只有选择VASP时需要您已有合法授权的O、H PAW势,它们不在下载包中;选择CP2K或ORCA不会读取VASP势文件。

2 完整CP2K输入#

下面是中性水的D4输入,坐标文件为 structure.xyz:

&GLOBAL
  PROJECT calculation
  RUN_TYPE ENERGY_FORCE
  PRINT_LEVEL MEDIUM
&END GLOBAL
&FORCE_EVAL
  METHOD Quickstep
  &DFT
    BASIS_SET_FILE_NAME BASIS_MOLOPT
    POTENTIAL_FILE_NAME GTH_POTENTIALS
    CHARGE 0
    UKS FALSE
    MULTIPLICITY 1
    &MGRID
      CUTOFF 300
      REL_CUTOFF 40
    &END MGRID
    &QS
      EPS_DEFAULT 1.0E-12
    &END QS
    &POISSON
      PERIODIC NONE
      PSOLVER MT
    &END POISSON
    &SCF
      SCF_GUESS ATOMIC
      EPS_SCF 1.0E-8
      MAX_SCF 150
      &OT
        MINIMIZER DIIS
        PRECONDITIONER FULL_SINGLE_INVERSE
        ENERGY_GAP .001
      &END OT
    &END SCF
    &XC
      &XC_FUNCTIONAL PBE
      &END XC_FUNCTIONAL
      &VDW_POTENTIAL
        POTENTIAL_TYPE PAIR_POTENTIAL
        &PAIR_POTENTIAL
          TYPE DFTD4
          REFERENCE_FUNCTIONAL PBE
        &END PAIR_POTENTIAL
      &END VDW_POTENTIAL
    &END XC
  &END DFT
  &SUBSYS
    &CELL
      ABC 24 24 24
      PERIODIC NONE
    &END CELL
    &TOPOLOGY
      COORD_FILE_NAME structure.xyz
      COORD_FILE_FORMAT XYZ
    &END TOPOLOGY
    &KIND O
      ELEMENT O
      BASIS_SET DZVP-MOLOPT-SR-GTH
      POTENTIAL GTH-PBE-q6
    &END KIND
    &KIND H
      ELEMENT H
      BASIS_SET DZVP-MOLOPT-SR-GTH
      POTENTIAL GTH-PBE-q1
    &END KIND
  &END SUBSYS
  &PRINT
    &FORCES ON
    &END FORCES
  &END PRINT
&END FORCE_EVAL
3
fixed geometry;translated to24A cell center;charge=0
O        12.00000000       12.00000000       12.39753933
H        12.00000000       12.76323900       11.80123033
H        12.00000000       11.23676100       11.80123033

关闭D4的对照只去掉整个 &VDW_POTENTIAL 段,泛函、基组、晶胞、网格、坐标和SCF设置保持一致。REFERENCE_FUNCTIONAL PBE为D4选择PBE的阻尼参数,不会替您把主DFT泛函改成PBE。

CHARGE是体系总电荷;MULTIPLICITY为2S+1。带电水使用 CHARGE 1、UKS TRUE、MULTIPLICITY 2。下载包该模型采用更稳健的 MINIMIZER CG、LINESEARCH 3PNT、PRECONDITIONER FULL_ALL,并在氧的 &KIND O中设置 MAGNETIZATION 1作为初始自旋猜测。初始磁化不是对最终原子磁矩的约束。两种D4开关使用相同求解设置。带电水先完成plain项,再用其已收敛波函数启动D4项;D4输入使用 SCF_GUESS RESTART,配套D4作业脚本会复制同几何、同电荷、同自旋plain目录的波函数。

cd cases/cp2k-water-cation-plain
sbatch job.slurm
# 确认上一个任务正常结束并且电子收敛后,再提交下一项
cd ../cp2k-water-cation-d4
sbatch job.slurm

波函数由您自己的plain计算生成,不在公开包中。首次独立运行D4项之前必须先算好相应plain项。

3 检查结束、电子收敛与D4项#

grep 'SCF run converged' cp2k.out
grep 'PROGRAM ENDED AT' cp2k.out
grep 'Dispersion energy:' cp2k.out
grep 'Total FORCE_EVAL' cp2k.out
grep -A 7 'FORCES| Atomic' cp2k.out

色散能和总能量的单位均为Hartree;本版本原子力表以 FORCES|开头,单位为Hartree/Bohr。不能只看队列任务是否结束,应检查电子收敛行和正常结束行。

中性水实际得到的D4色散能约为 −0.000196920342 Hartree。相同几何的独立D4程序给出 −0.000196920341437 Hartree,两种读取方式相符。水分子对2.9 Å、4.2 Å的色散项分别约为 −0.001018327861、−0.000563063224 Hartree。

CP2K与ORCA开关D4的实际能量差

4 用独立工具检查,避免加两遍#

回到资料包根目录执行:

python3 d4.py
bash view.sh --cases cases --d4 d4-results --output my-analysis --partial

第二条命令要求已完成的同一模型同时有plain和d4两项。只完成一对时,可把该对目录复制到一个新目录,作为 --cases 的输入。分析脚本比较 E(开启D4)−E(关闭D4)与独立色散能,同时比较两次主程序原子力之差与独立D4梯度的负值。没有主程序结果时,直接用第一节的 bash view.sh查看整组参考数据。

能量记账与力修正的独立比较

开启D4后的CP2K总能量已经包含该修正,不能再加一次独立D4能量。 本组比较的是D4修正项的传递与提取。300 Ry网格和当前基组未作为总DFT力的收敛结论,不能将参考总力直接用于高精度优化;正式工作应单独检查基组、网格、晶胞及力收敛。固定小体系结果也不代表材料结合能的准确度。

参考:CP2K官方项目、CP2K轨道求解参数、DFT-D4官方实现。

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

查看配图

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

100%查看原图 ↗