CP2K专题

CP2K电荷密度与分子轨道

生成CUBE,核对电子数和轨道归一化,再画实际密度与HOMO/LUMO。

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

下载20份完整输入、真实输出、网格和绘图脚本。在已分配的CPU资源中运行 bash run.sh 示例名称;输出在 work/示例名称/,原结果在 reference/。不修改公共软件、不自动提交任务;正式提交流程参见CP2K入门。

1 在DFT中请求网格输出#

bash run.sh water-orbitals

完整输入中的DFT/PRINT段:

&PRINT
 &E_DENSITY_CUBE
  STRIDE 2 2 2
 &END E_DENSITY_CUBE
 &MO_CUBES
  NHOMO 1
  NLUMO 1
  STRIDE 2 2 2
 &END MO_CUBES
&END PRINT

本例价电子数8,闭壳层占据4个轨道,输出密度、HOMO第4轨道和LUMO第5轨道。文件名中的编号不是原子编号,也不是轨道能量。

ls work/water-orbitals/*.cube

2 先确认网格单位#

本例CUBE头中每方向75点,网格矢量约0.302356 Bohr;正的网格数对应Bohr坐标约定。电子密度单位e/Bohr³,轨道振幅单位Bohr⁻³ᐟ²。

STRIDE=2令输出网格比内部网格稀疏。直接把数据当e/ų积分会得到错误的电子数;若转换到Å坐标,密度和体积单位必须一起转换。

3 用实际积分核对输出#

包内 analyze.py 的 cube()处理CP2K原始数值字段,保留正负号。有些相邻负数没有空格,例如 0.29588E-018-0.26774E-018,不能简单按空格split后当作两列。

origin, grid_vectors, rho = cube(filename)
voxel_volume = abs(np.linalg.det(grid_vectors))
N = rho.sum() * voxel_volume

这里grid_vectors仍以Bohr计。对波函数应改为 sum(psi**2)*voxel_volume,不能直接积分有正负号的psi。

文件 数值积分
价电子密度 8.0015489241
HOMO的模平方 1.0004290565
LUMO的模平方 1.0000481147

密度接近8个价电子、两个轨道接近归一化到1;偏差与稀疏输出网格、截断和文本精度有关,不声称数学上严格等于整数。需要更精细积分或等值面时应减小STRIDE并重新核对。

水分子的密度及两个前线轨道切面

4 两种颜色表示什么#

密度图是log10显示。轨道图的红/蓝表示波函数的符号,整体乘−1不改变物理态;不是正负电荷,也不是上下自旋。不同轨道使用各自对称色阶,不能直接按颜色深浅比较两个轨道的总电子数。

HOMO为便于看节点,选取穿过轨道的y≈6.08 Å切面;密度和LUMO使用x≈6.08 Å切面。各图横轴和标题标出方向,图上原子为相应投影。单个切面不能替代完整三维等值面判断。

5 重绘与替换自己的数据#

完整包全部任务结束后,在解压目录:

bash analyze.sh

输出图在work/。只运行单个轨道示例时,可复用analyze.py中的CUBE读取和积分函数,指向自己的文件。先保持数据单位、晶胞、原子位置和选择的切面一致,再调整色阶与展示范围。

这里是GTH价电子密度,不是包含相同芯电子表示的全电子密度;需要核心区性质时应选择适合的GAPW/全电子设置,不能仅靠放大这张图获得缺失的芯电子信息。

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

查看配图

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

100%查看原图 ↗