子示例:CO/Cu(111) 差分电荷密度¶
配套教程:第11章 第7节 差分电荷密度;上级示例说明见 ../README.md。
目的¶
计算 CO 顶位吸附在 Cu(111) p(2×2) 三层 slab 上的差分电荷密度
\[\Delta\rho(\mathbf r)=\rho_{AB}(\mathbf r)-\rho_{A}(\mathbf r)-\rho_{B}(\mathbf r)\]
其中 AB 为吸附体系,A 为干净 slab,B 为单独的 CO。三次计算的原子位置完全相同(从同一套坐标中删去另一部分),晶胞、CUTOFF、REL_CUTOFF、k 点和 cube 的 STRIDE 也完全相同,这样三个 cube 文件位于同一个实空间网格上,可以逐点相减。
文件说明¶
| 文件 | 说明 |
|---|---|
dft_common.inc |
三个输入共用的 &DFT 设置(@INCLUDE 引入);ADDED_MOS ${NADD} 由各输入用 @SET 指定 |
full.inp / cu111_co_full.xyz |
体系 AB:12 Cu + C + O |
slab.inp / cu111_slab.xyz |
体系 A:12 Cu(坐标与 AB 中的 Cu 完全相同) |
co.inp / co_only.xyz |
体系 B:CO(坐标与 AB 中的 C、O 完全相同) |
chgdiff.py |
读三个 cube、检查网格一致、写 diff.cube 与平面平均 diff_planar.dat(只需 numpy) |
run_all.sh |
依次运行三个计算,再调用 chgdiff.py |
结构说明:Cu 晶格常数取实验值 3.615 Å,层间距 \(a/\sqrt3\);C 在顶层 Cu 正上方 1.85 Å,C–O 1.15 Å(近似值,未优化);c = 28 Å,真空约 21 Å。正式研究应先用同一套参数优化 AB 结构,再从优化后的结构中拆出 A 和 B。
运行步骤¶
cd CP2K/examples/11-cube-charge-workfunction/co_on_cu_charge_diff
export CP2K_DATA_DIR=/path/to/cp2k/data
cp2k.psmp -c full.inp # 语法检查(会展开 @INCLUDE)
bash run_all.sh # 本地:默认 mpirun -np 4 cp2k.psmp
# Slurm 分配内:CP2K="srun cp2k.psmp" bash run_all.sh
预期结果 / 如何检查¶
- 三个输出都有
SCF run converged和PROGRAM ENDED AT; - 生成
full-ELECTRON_DENSITY-1_0.cube、slab-ELECTRON_DENSITY-1_0.cube、co-ELECTRON_DENSITY-1_0.cube(文件名以ls为准); chgdiff.py打印的integral of drho应接近 0(三个体系的价电子数满足 \(N_{AB}=N_A+N_B\),残差来自数值积分误差);- 在 VESTA 中打开
diff.cube,取 ±0.002–0.005 e/bohr³ 的等值面:CO 的 5σ 区域和 Cu–C 之间应能看到电荷重新分布(σ 给予、π 反馈的图像),具体形状以计算结果为准; diff_planar.dat的第 3 列 \(\Delta Q(z)\) 描述沿表面法向的电荷转移,在真空区应回到约 0。
注意事项¶
- 不要在三个输入中使用
&TOPOLOGY/&CENTER_COORDINATES,它会把每个子体系分别居中,导致三套坐标不再重合; - 三次计算的晶胞、
CUTOFF/REL_CUTOFF、STRIDE必须完全一致,chgdiff.py会检查网格; - CP2K 的 cube 只含价电子(赝势),差分密度在原子核附近的细节不具物理意义;
- k 点 4×4×1 只用于演示,金属表面的定量结果需要收敛 k 点;
- 体系 B 的基函数只有 26 个、占据态 5 个,所以
ADDED_MOS取 10(@SET NADD 10)。