示例 05:SCF 策略——OT、对角化 + 混合、金属展宽与波函数重启¶
目的¶
用四个小体系演示 CP2K Quickstep 的几种 SCF 求解方式:
| 输入 | 体系 | 演示内容 |
|---|---|---|
h2o_ot.inp |
孤立 H2O(12 Å 盒子,MT 求解器) | OT(DIIS + FULL_ALL)+ &OUTER_SCF,写出 h2o_ot-RESTART.wfn |
restart_from_wfn.inp |
同上,TZV2P 基组,600 Ry | SCF_GUESS RESTART + &DFT/WFN_RESTART_FILE_NAME,从 DZVP 波函数起步 |
si_diag_broyden.inp |
体相 Si(8 原子立方胞),MP 4×4×4 | k 点下必须用对角化;BROYDEN_MIXING;写出 .kp 重启文件 |
al_metal_smear.inp |
fcc Al(4 原子惯用胞),MP 8×8×8 | 金属:对角化 + Broyden(ALPHA 0.2)+ Fermi–Dirac 500 K + ADDED_MOS 10 |
所有输入都用 PBE、BASIS_MOLOPT_UZH 加 POTENTIAL_UZH(DZVP/TZV2P-MOLOPT-PBE-GTH-qN 配 GTH-PBE-qN),只使用 CP2K 2024.1–2026.2 都支持的关键字。
文件说明¶
| 文件 | 说明 |
|---|---|
h2o_ot.inp |
OT 示例(RUN_TYPE ENERGY_FORCE) |
restart_from_wfn.inp |
波函数重启示例,必须在 h2o_ot.inp 之后运行 |
si_diag_broyden.inp |
对角化 + Broyden + k 点示例(RUN_TYPE ENERGY) |
al_metal_smear.inp |
金属展宽示例(RUN_TYPE ENERGY_FORCE),坐标直接写在 &COORD SCALED 中 |
h2o.xyz |
H2O 坐标(实验气相几何),用 &CENTER_COORDINATES 放到盒子中心 |
si_bulk8.xyz |
Si8 坐标(a = 5.431 Å) |
job_slurm.sh |
Slurm 作业脚本,默认按正确顺序运行全部四个输入,也可只运行指定的输入 |
运行步骤¶
cd CP2K/examples/05-scf-strategy
export CP2K_DATA_DIR=/path/to/cp2k/data # 若已内置可省略
# 语法检查(逐个)
for f in *.inp; do cp2k.psmp -c "$f" > /dev/null && echo "$f OK"; done
# 本地运行
mpirun -np 4 cp2k.psmp -i h2o_ot.inp -o h2o_ot.out
mpirun -np 4 cp2k.psmp -i restart_from_wfn.inp -o restart_from_wfn.out
mpirun -np 8 cp2k.psmp -i si_diag_broyden.inp -o si_diag_broyden.out
mpirun -np 8 cp2k.psmp -i al_metal_smear.inp -o al_metal_smear.out
# 或提交到 Slurm
sbatch job_slurm.sh
预期结果 / 如何检查¶
grep "SCF run converged" *.out # 每个输出都应出现
grep "outer SCF loop" h2o_ot.out # OT 外层循环收敛信息
grep -E "OT (DIIS|CG|LS)" h2o_ot.out | head
grep -i "does not exist" restart_from_wfn.out # 应为空:说明重启文件被找到
grep "BRILLOUIN| List of Kpoints" si_diag_broyden.out al_metal_smear.out
grep -E "Broy\./Diag\." si_diag_broyden.out | head
grep -E "Fermi energy|Electronic entropic energy" al_metal_smear.out | tail -2
grep -i "smearing includes the last MO" al_metal_smear.out # 应为空
ls *-RESTART.wfn *-RESTART.kp
h2o_ot.out:SCF 迭代行的方法列为OT DIIS(或OT LS),最后出现outer SCF loop converged in ... iterations;restart_from_wfn.out:SCF 步数应少于从ATOMIC起步的同一计算(可以把SCF_GUESS改成ATOMIC对比);si_diag_broyden.out:第一步是NoMix/Diag.,之后是Broy./Diag.,并生成si8_diag-RESTART.kp(k 点计算写.kp而不是.wfn);al_metal_smear.out:打印Electronic entropic energy(即 −TS,为负的小量)和Fermi energy;用 CP2K ≥ 2026.2 时还会打印Total energy (extrapolated to T->0)。
本仓库没有附带参考输出;能量、步数和耗时取决于 CP2K 版本、编译方式和并行设置。
注意事项¶
- 截断和 k 点网格(H2O 500/600 Ry,Si 350 Ry + 4×4×4,Al 300 Ry + 8×8×8)只是演示值,正式计算请按第4章、第6章做收敛测试;
- 2026.2 及以前,
&OT不能与&KPOINTS或ADDED_MOS > 0同时使用,分别报OT not possible with kpoint calculations和OT with ADDED_MOS/=0 not implemented; &SMEAR中务必显式写METHOD:≤ 2026.1 的输入参考把默认值标为ENERGY_WINDOW,2026.2 改为GAUSSIAN;WFN_RESTART_FILE_NAME属于&DFT,不属于&SCF;从 DZVP 重启到 TZV2P 时赝势必须相同;- 不要在这些输入中加
IGNORE_CONVERGENCE_FAILURE;若某个计算不收敛,按教程第 10 节逐项排查。