CP2K专题

CP2K片段、幽灵基组与BSSE校正

用四组真实水二聚体计算操作原生BSSE流程,读出五种基组配置、校正能与相互作用能。

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

计算分子吸附、氢键或非共价结合时,两个片段会借用对方的基函数,使有限基组下的相互作用偏强。CP2K原生 RUN_TYPE BSSE 可以在同一几何上计算片段、幽灵基组和完整复合物,获得counterpoise校正。本例实际计算两种基组、两个间距,共四组BSSE流程。

1 下载、先读真实结果#

下载水二聚体BSSE完整输入、20个片段能量与绘图包,将文件名改为 cp2k-BSSE-wave324.zip:

module load pymatgen/2026.9.24
python -m zipfile -e cp2k-BSSE-wave324.zip .
cd cp2k-bsse
bash run.sh

results/rows.json保存相互作用能、校正能及五个配置的完整数值;results/energies.csv列出20个原生SCF能量;plots/生成两张结构/数据图。读取已有结果不重新计算电子结构,输出目录需为新目录。

2 五个配置分别算了什么#

同一水二聚体的五种片段与幽灵基组配置

实心点包含原子核、电子和基组;空心点只放基函数。幽灵基组不会增加另一个水分子的核电荷和电子数,不能用“删掉原子坐标”替代。

CP2K配置 真实片段 使用的基组 价电子数 能量记号
CONF 10 / SUBCONF 10 A A自身 8 E_A(A)
CONF 01 / SUBCONF 01 B B自身 8 E_B(B)
CONF 11 / SUBCONF 10 A A+B,B为ghost 8 E_A(AB)
CONF 11 / SUBCONF 01 B A+B,A为ghost 8 E_B(AB)
CONF 11 / SUBCONF 11 A+B A+B 16 E_AB(AB)

未校正相互作用能为 E_AB(AB) - E_A(A) - E_B(B);CP校正后改为 E_AB(AB) - E_A(AB) - E_B(AB)。两者之差是本例报告的BSSE校正能,通常为正,使相互作用不再过度负向。

每个单体都保留二聚体中的几何。因此这里计算的是固定几何相互作用能;若分别优化孤立单体,还需要考虑形变能。它也不包含零点振动、热力学、熵或溶液校正,不能直接叫作结合自由能。

3 完整结构与输入#

3.2 Å条件的 geometry.xyz:

6
Fixedmonomergeometry; waterdimer O-O 3.2 Angstrom
O 8.000000000000000 8.000000000000000 6.000000000000000
H 8.000000000000000 8.000000000000000 6.970101302545075
H 7.999999851221545 7.059423260433508 5.762488033741113
O 8.000000000000000 8.000000000000000 9.200000000000001
H 8.000000003400000 8.765345449000000 9.796106434200000
H 7.999999851999999 7.234654621300000 9.796106524400001

前3个原子是A片段,后3个为B片段。另一间距通过整体平移B到O—O=5.0 Å得到,单体内部坐标不变。

cases/DZVP-R3.2/input.inp:

&GLOBAL
 PROJECT water
 RUN_TYPE BSSE
 PRINT_LEVEL MEDIUM
&END GLOBAL
&FORCE_EVAL
 METHOD QS
 &BSSE
  &FRAGMENT
   LIST 1 2 3
  &END FRAGMENT
  &FRAGMENT
   LIST 4 5 6
  &END FRAGMENT
 &END BSSE
 &DFT
  BASIS_SET_FILE_NAME DATA/BASIS_MOLOPT
  POTENTIAL_FILE_NAME DATA/GTH_POTENTIALS
  &QS
   EPS_DEFAULT 1.0E-12
  &END QS
  &MGRID
   CUTOFF 400
   REL_CUTOFF 50
  &END MGRID
  &SCF
   EPS_SCF 1.0E-8
   MAX_SCF 200
   SCF_GUESS ATOMIC
   &OT
    MINIMIZER DIIS
    PRECONDITIONER FULL_SINGLE_INVERSE
   &END OT
  &END SCF
  &XC
   &XC_FUNCTIONAL PBE
   &END XC_FUNCTIONAL
  &END XC
  &POISSON
   PERIODIC NONE
   POISSON_SOLVER MT
  &END POISSON
 &END DFT
 &SUBSYS
  &CELL
   ABC 16 16 16
   PERIODIC NONE
  &END CELL
  &TOPOLOGY
   COORD_FILE_NAME geometry.xyz
   COORD_FILE_FORMAT XYZ
  &END TOPOLOGY
  &KIND O
   BASIS_SET DZVP-MOLOPT-GTH
   POTENTIAL GTH-PBE-q6
  &END KIND
  &KIND H
   BASIS_SET DZVP-MOLOPT-GTH
   POTENTIAL GTH-PBE-q1
  &END KIND
  &KIND H_ghost
   ELEMENT H
   BASIS_SET DZVP-MOLOPT-GTH
   GHOST .TRUE.
  &END KIND
  &KIND O_ghost
   ELEMENT O
   BASIS_SET DZVP-MOLOPT-GTH
   GHOST .TRUE.
  &END KIND
 &END SUBSYS
 &PRINT
  &FORCES ON
  &END FORCES
 &END PRINT
&END FORCE_EVAL

FRAGMENT/LIST按坐标文件中的原子序号分组,不是按元素种类分组。每个真实KIND都配相应的 X_ghost,并保持相同基组,ghost中不写真实赝势。这里两个片段均为中性闭壳层;有电荷、自由基或不同自旋时,还应按CONFIGURATION官方手册分别配置组合的电荷和多重度,不能沿用本例默认值。

四组均为PBE/GTH-PBE、400/50 Ry、16 Å非周期盒、MT泊松边界,EPS_SCF=1E-8。只改基组和片段间距;没有加D3,不能把本结果与另一个加D3的二聚体直接相减来代表BSSE。

4 在集群提交#

本例使用 cp2k/2026.2-p100,GNU13.3、MPICH5.0.1、CUDA12.9、OpenBLAS0.3.33;一个MPI进程、两个OpenMP线程和一张P100。新计算时:

bash prepare.sh
sbatch gpu.sh
squeue -u "$USER"

prepare.sh创建新的 work/,复制输入、坐标和当前模块的公开基组/赝势数据。批处理顺序运行四个条件。套餐账户按自己的资源权限选择对应提交模板,保持CP2K版本、P100构建和进程/线程配套。

grep "BSSE CALCULATION" work/DZVP-R3.2/output.log
grep "SCF run converged" work/DZVP-R3.2/output.log
grep "BSSE-free interaction" work/DZVP-R3.2/output.log
tail -12 work/DZVP-R3.2/output.log

一组应有五个配置、五次收敛的SCF,以及正常结束信息。只看到最后的BSSE摘要不足以判断前面每个片段都已收敛。

5 四组真实数值#

基组 O—O/Å 未校正相互作用/eV CP校正相互作用/eV BSSE校正/meV
DZVP-MOLOPT-GTH 3.2 -0.1763018843 -0.1674793192 8.822565
DZVP-MOLOPT-GTH 5.0 -0.0344234618 -0.0330900384 1.333423
TZVP-MOLOPT-GTH 3.2 -0.1726036466 -0.1663541761 6.249470
TZVP-MOLOPT-GTH 5.0 -0.0355448763 -0.0337120196 1.832857

四个固定几何条件的校正前后相互作用及BSSE校正

3.2 Å时,DZVP的校正由8.82 meV降到TZVP的6.25 meV;5.0 Å时反而是TZVP稍大。不能仅凭基组标签就保证每个距离下的BSSE都单调下降。两个间距都保留物理静电等相互作用,5.0 Å结果不必恰好为零;两个点也不构成完整势能曲线或基组完备极限。

6 读完整精度,核对能量参照#

python verify.py --cases work --output my-bsse
head -8 results/energies.csv

脚本从五个SCF的 Total energy 和原生 water-1_3.restart 的 FRAGMENT_ENERGIES读取完整精度。后者储存两个一体项及一个二体相互作用项;三项相加是CP校正后的总能,不是三项都当作独立单体能。终端摘要只打印六位小数,不宜用它检查更细的能量差。

随包 N-body-energies.txt 是该原生重启文件的数值片段,便于读图;它不是可以单独提交的完整重启输入。包中的 result.out 同样是原生输出数值摘录,完整新任务结果请读自己的 output.log。

本包对照脚本固定为所附四组水二聚体;改成自己的体系后,要重新定义片段、参考数据和比较条件。先检查所有片段电荷/自旋、SCF和基组配置,再做网格、盒长、基组及几何收敛。需要结构优化、色散或其他能量修正时,参见水二聚体与D3;输入关键字查询见CP2K命令工具。片段与ghost规则见BSSE官方手册。

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

查看配图

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

100%查看原图 ↗