CP2K常规MP2与GPW实现
同一水分子、同一HF参考,实际比较canonical、GPW MP2与RI-MP2。
阅读本篇目录
CP2K中的MP2不只有RI_MP2一个入口。本篇使用同一水分子和HF参考,实际运行DIRECT_CANONICAL和MP2_GPW,再与RI-MP2的数值结果对照,认识方法入口、积分表示和辅助基组的区别。
下载完整输入、实际日志、提取与绘图脚本,解压进入run.sh目录。CP2K2026.2 P100双精度构建:GNU13.3、MPICH5.0.1、CUDA12.9、OpenBLAS0.3.33、ScaLAPACK2.2.3;分析ASE3.29.0。
1 先跑这组小例子#
sbatch submit.slurm
核时模板申请一张P100、一个CPU核,每个计算一个MPI进程、一个OpenMP线程;默认运行五个条件,再提取画图。其中常规MP2、GPW MP2、SOS8点和SOS16点为本次新计算,RI-MP2参照来自RI-MP2教程的同一条件,公开流程也会重新计算它。
套餐用户用yskit生成所属分区脚本,在已分配资源中保留bash run.sh。已分配多卡时按可见GPU与CPU亲和范围每卡安排一个任务,不自动申请资源。不要在登录节点计算,已有work时重新解压。reference存本文原始日志;work存新结果。单条件可在sbatch命令后附CASES.json中的名称;完整对照图需要整组。
2 固定模型,再更换实现#
沿用水分子振动教程的实际优化几何,保持内部坐标不动并居中。14 Å非周期WAVELET盒,DZVP-GTH轨道基组与GTH-HF赝势,DFT网格300/50 Ry,EPS_SCF=1E-7。各实现的HF参考能在本次数值精度内一致。
RI-MP2另使用RI_DZVP-GTH辅助基组;常规canonical与MP2_GPW不依靠这个RI辅助展开,所以两个新输入去掉KIND中的RI_AUX。不要为了“对齐基组”把轨道基组也换掉。
3 常规canonical完整输入#
完整input.inp:water-mp2-canonical#
&GLOBAL
PRINT_LEVEL MEDIUM
PROJECT RI_MP2_H2O
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END TIMINGS
&END GLOBAL
&FORCE_EVAL
METHOD Quickstep
&DFT
BASIS_SET_FILE_NAME ../DATA/HFX_BASIS
POTENTIAL_FILE_NAME ../DATA/POTENTIAL
&MGRID
CUTOFF 300
REL_CUTOFF 50
&END MGRID
&POISSON
PERIODIC NONE
POISSON_SOLVER WAVELET
&END POISSON
&QS
EPS_DEFAULT 1.0E-12
EPS_PGF_ORB 1.0E-18
METHOD GPW
&END QS
&SCF
EPS_SCF 1.0E-7
MAX_SCF 100
SCF_GUESS ATOMIC
&END SCF
&XC
&HF
FRACTION 1.0000000
&SCREENING
EPS_SCHWARZ 1.0E-8
SCREEN_ON_INITIAL_P FALSE
&END SCREENING
&END HF
&WF_CORRELATION
MEMORY 200.
NUMBER_PROC 1
&MP2
METHOD DIRECT_CANONICAL
&END MP2
&END WF_CORRELATION
&XC_FUNCTIONAL NONE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
ABC [angstrom] 14.0 14.0 14.0
PERIODIC NONE
&END CELL
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-HF-q1
&END KIND
&KIND O
BASIS_SET DZVP-GTH
POTENTIAL GTH-HF-q6
&END KIND
&TOPOLOGY
COORD_FILE_FORMAT xyz
COORD_FILE_NAME H2O_gas.xyz
&CENTER_COORDINATES
&END CENTER_COORDINATES
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
在WF_CORRELATION中用MP2子块并选择DIRECT_CANONICAL。它与RI_MP2是不同入口;本例canonical输入不保留无关的WFC_GPW积分截断段。
4 GPW MP2完整输入#
完整input.inp:water-mp2-gpw#
&GLOBAL
PRINT_LEVEL MEDIUM
PROJECT RI_MP2_H2O
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END TIMINGS
&END GLOBAL
&FORCE_EVAL
METHOD Quickstep
&DFT
BASIS_SET_FILE_NAME ../DATA/HFX_BASIS
POTENTIAL_FILE_NAME ../DATA/POTENTIAL
&MGRID
CUTOFF 300
REL_CUTOFF 50
&END MGRID
&POISSON
PERIODIC NONE
POISSON_SOLVER WAVELET
&END POISSON
&QS
EPS_DEFAULT 1.0E-12
EPS_PGF_ORB 1.0E-18
METHOD GPW
&END QS
&SCF
EPS_SCF 1.0E-7
MAX_SCF 100
SCF_GUESS ATOMIC
&END SCF
&XC
&HF
FRACTION 1.0000000
&SCREENING
EPS_SCHWARZ 1.0E-8
SCREEN_ON_INITIAL_P FALSE
&END SCREENING
&END HF
&WF_CORRELATION
MEMORY 200.
NUMBER_PROC 1
&INTEGRALS
&WFC_GPW
CUTOFF 300
EPS_FILTER 1.0E-8
EPS_GRID 1.0E-8
REL_CUTOFF 50
&END WFC_GPW
&END INTEGRALS
&MP2
METHOD MP2_GPW
&END MP2
&END WF_CORRELATION
&XC_FUNCTIONAL NONE
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
ABC [angstrom] 14.0 14.0 14.0
PERIODIC NONE
&END CELL
&KIND H
BASIS_SET DZVP-GTH
POTENTIAL GTH-HF-q1
&END KIND
&KIND O
BASIS_SET DZVP-GTH
POTENTIAL GTH-HF-q6
&END KIND
&TOPOLOGY
COORD_FILE_FORMAT xyz
COORD_FILE_NAME H2O_gas.xyz
&CENTER_COORDINATES
&END CENTER_COORDINATES
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
同样使用MP2子块,METHOD改为MP2_GPW,增加INTEGRALS/WFC_GPW并设置300/50 Ry。这里相关能积分网格与DFT/MGRID网格是两组设置,名称相同也不能混为一处。
5 从输出确认运行了哪条分支#
grep -E 'MP2\||MP2 section|Second order perturbation energy|ENERGY\|' work/cases/water-mp2-canonical/output.log
grep -E 'MP2\||MP2 section|Second order perturbation energy|ENERGY\|' work/cases/water-mp2-gpw/output.log
cat work/analysis/method-branches.csv
| 实现 | 相关能/Hartree | 最终总能/Hartree | 相关能相对本次canonical/meV |
|---|---|---|---|
| DIRECT_CANONICAL | -0.199847359130 | -17.098778800430 | 0.000000 |
| MP2_GPW | -0.199847404596 | -17.098778845896 | -0.001237 |
| RI_MP2 | -0.199837286225 | -17.098768727525 | 0.274098 |

本例GPW MP2与canonical相关能差约0.00124 meV,当前RI-MP2与canonical差约0.2741 meV。这里canonical只是同一有限轨道基组内的比较参照,不是完整基组极限;RI辅助表示和GPW积分网格分别需要检查。
三者最终总能都按E(HF)+E(相关)组合。不能把不同HF参考、不同赝势或不同几何的能量差归因于实现本身,也不要用这个很小的水分子给大体系做速度排名。
6 换成自己的体系#
更新XYZ、元素KIND、轨道基组和赝势,先得到一致收敛的HF参考,再选择可承受的相关能实现。涉及RI时另外检查辅助基组;GPW积分另外检查截断。本文都是闭壳层非周期单点,不把能量输入直接当作已经具备解析梯度的优化模板。
提取与重画#
module load ase/3.29.0
python analyze.py work
python plot_results.py work
python check_results.py work
cat work/analysis/method-branches.csv
ls work/figures
CSV总能、HF参考、自旋分项与相关能使用Hartree;图中按坐标说明转换单位。看本文原始数据时将work改成reference。
可用实现与梯度条件见CP2K2026.2 MP2说明。继续看SOS-MP2与积分点。