CP2K使用D4:输入、能量与力
从PBE与PBE-D4成对单点计算开始,读出色散能并核对力修正。
阅读本篇目录
本篇演示在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。

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力的收敛结论,不能将参考总力直接用于高精度优化;正式工作应单独检查基组、网格、晶胞及力收敛。固定小体系结果也不代表材料结合能的准确度。