CP2K专题

CP2K FAB嵌入:同层级对照与密度读取

Finzel–Ayers–Bultinck更新、PBE/PBE能量对照、实际密度网格与相邻负数的读取。

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

下载CP2K输运与密度嵌入完整输入、真实输出和绘图程序,保存为example.zip:

python3 -m zipfile -e example.zip .
cd cp2k-negf-embedding-examples
bash results.sh
bash plot.sh

前两条整理文件;results.sh读参考数据,plot.sh从真实CSV和密度网格画图,不启动电子计算。完整输入在inputs/,原生数值在reference-results/,11份CSV在data/。本组采用CP2K2026.2和官方小模型,供实际操作参考,不作为收敛后的材料性质或性能基准。

1. FAB指什么#

本篇FAB是Finzel–Ayers–Bultinck嵌入势更新,不是“全原子基组”的缩写。采用官方另一份水–氢分子小例,A/B映射沿用前篇的五计算块流程,但这次两层都用PBE,作为同层级能量拼接对照。

源模型为6Å周期盒、200Ry;H₂的两个H位于(1.75,3.75,0)、(1.75,4.50,0)Å。前篇LEVEL_SHIFT用5Å盒、另一H₂位置、100Ry且高层含HF交换。它们不是只改一个优化器的同条件比较,不能直接拿两个总能量或运行时间判断方法更好。

文件夹water-H2-full只是这套材料保留的目录名称,不能据此将它当成前篇相同结构的“完整体系对照”。

2. 看完整文件与关键变化#

cat inputs/water-H2-full/input.inp

低层参考QS中的实际设置:

&QS
 METHOD GPW
 EPS_DEFAULT 1.0E-15
 EPS_PGF_ORB 1.0E-30
 REF_EMBED_SUBSYS .TRUE.
 &OPT_EMBED
  DENS_CONV_INT 0.12
  DENS_CONV_MAX 0.013
  FAB .TRUE.
  GRID_OPT .TRUE.
  N_ITER 100
  REG_LAMBDA 0.00001
  TRUST_RAD 0.1
  VW_CUTOFF 0.05
  VW_SMOOTH_CUT_RANGE 2.0
 &END OPT_EMBED
&END QS

末尾B区仍有HIGH_LEVEL_EMBED_SUBSYS标记,但这份同层级对照实际设置:

&XC
 &XC_FUNCTIONAL PBE
 &END XC_FUNCTIONAL
&END XC

“高层任务块”是计算角色,不保证其实际方法一定比低层更复杂;每次都应检查具体XC内容。

3. 提交与读取#

这份FAB参考采用CP2K2026.2 CPU构建,Intel icx/ifx2024.2、IntelMPI2021.13、MKL2024.2,1MPI×1线程。CPU分区可用时使用对应脚本;资源说明与NEGF篇相同。

cat job-fab.slurm
sbatch job-fab.slurm

查看随包参考结果:

grep -E 'SCF run converged|Convergence in|Total energy:' reference-results/water-H2-full/*r-1.out
grep 'Total FORCE_EVAL' reference-results/water-H2-full/output.log
cat data/embedding-energies.csv

低层全体系参考为−18.38265854320293Hartree;低层B为−1.16509738273489,高层角色B为−1.16509738294326Hartree。二者实际都是同一PBE层级,修正约−2.08×10⁻¹⁰Hartree,组合总能量−18.382658543411292Hartree基本回到全体系参考。这是本例检查映射与能量拼接的用途,不是声称嵌入研究永远没有能量修正。

实际2次嵌入迭代,最大密度差0.0128410941低于0.013,积分密度差0.1193233104低于0.12;它们仍是演示阈值。

4. 密度cube怎样读和画#

FAB实际几何与右侧原生密度切片

head -n 12 reference-results/water-H2-full/*ELECTRON_DENSITY*.cube
bash plot.sh

原生cube使用定宽浮点数,可能出现0.56899E-006-0.11733E-006这样两个数之间没有空格的行。直接按空白切分的读入程序可能无法解析;不能因此删掉负号或把负值取绝对值。

包内extract.py只在标量之间补分隔,保留每个原生数值,生成*-density-readable.cube,再用ASE读取。细小负值按原样保留;密度图对非正值做显示掩膜,不修改原始文件。

# 全套新计算完成后生成新CSV和可读取cube
bash extract.sh
bash plot.sh --data work/analysis --output figures-new

密度值以电子/Bohr³读取;坐标在绘图中转换为Å。对cube积分时,还需用Bohr³体素体积,不能直接乘ų。两份原生可视化网格分别16³、27³,粗采样积分约9.97279、9.98424电子,与理论10价电子略有偏离,不代表SCF丢了这部分电子,也不能把显示网格当作精密电荷积分结果。

对生产密度分析,另检查输出STRIDE、网格和积分收敛。这里的图是实际全体系参考密度在z=0的切片,不是嵌入势、密度差或三维等值面的替代。

来源:固定版本FAB输入。

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

查看配图

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

100%查看原图 ↗