示例 08:刚性扫描、柔性扫描、二维扫描与 GIC 扫描¶
目的¶
用小分子演示 Gaussian 16 的各种势能面扫描写法:
Scan+ Z-matrix 的刚性扫描(H₂O₂ 二面角);Opt=ModRedundant的柔性扫描(正丁烷二面角;SN2 反应的 C···Cl 键长);- 两个键长同时扫描的二维势能面;
Opt=AddGIC沿“键长差”复合坐标扫描。
对应教程:第8章 势能面扫描(刚性与柔性扫描)。SN2 扫描得到的最高点结构可以直接交给 第7章 做 TS 优化。
文件说明¶
| 文件 | 扫描类型 | 扫描坐标 | 点数 | 理论水平 |
|---|---|---|---|---|
h2o2_rigid_zmatrix_scan.gjf |
刚性(Scan) |
Z-matrix 变量 DHOOH 0.0 36 10.0 |
37 | B3LYP/6-311+G(d,p) |
butane_dihedral_relaxed_scan.gjf |
柔性 | D 1 2 3 4 S 36 10.0,从 anti(180°)出发 |
37 | B3LYP-D3(BJ)/6-31G(d) |
sn2_bond_scan_ts_guess.gjf |
柔性 | B 1 2 S 14 -0.1:C···Cl 3.2 → 1.8 Å |
15 | B3LYP-D3(BJ)/6-31+G(d) |
two_dimensional_scan.gjf |
二维柔性 | B 1 2 S 6 -0.2(C···Cl 3.0 → 1.8 Å)× B 1 3 S 6 0.2(C–Br 2.0 → 3.2 Å) |
49 | B3LYP-D3(BJ)/6-31+G(d) |
gic_bond_difference_scan.gjf |
GIC 柔性 | RC = (R(1,3) − R(1,2)) × 0.529177,从约 −1.21 Å 起 12 步 × 0.2 |
13 | B3LYP-D3(BJ)/6-31+G(d) |
run_scan.sh |
Slurm 脚本 | 依次运行全部输入,或只运行命令行指定的输入 | — | — |
SN2 体系的原子编号:1 = C,2 = Cl,3 = Br,4–6 = H(与第 7 章示例一致)。正丁烷:1–4 为碳链 C1–C4,5–14 为 H。
几何来源:正丁烷坐标由 RDKit 嵌入后经 MMFF 约束优化得到(C1–C2–C3–C4 = 180°);H₂O₂ 的 Z-matrix 参数和 SN2 复合物坐标是手工设定的近似值。刚性扫描之前,最好先在同一水平下优化 H₂O₂,再把优化得到的 ROH、ROO、AOOH 填入输入。
运行步骤¶
cd Gaussian/examples/08-pes-scan
# 单个运行
g16 < butane_dihedral_relaxed_scan.gjf > butane_dihedral_relaxed_scan.log
# Slurm:全部运行,或只运行其中一个
sbatch run_scan.sh
sbatch run_scan.sh sn2_bond_scan_ts_guess
计算量提示:H₂O₂ 刚性扫描最快;正丁烷和一维 SN2 扫描需要几十次约束优化;二维扫描需要 49 次约束优化,耗时最长。
预期结果 / 如何检查¶
# 柔性扫描:收敛的扫描点数应等于总点数(37 / 15 / 49 / 13)
grep -c "Stationary point found" butane_dihedral_relaxed_scan.log
# 柔性扫描汇总表
grep -A 30 "Summary of Optimized Potential Surface Scan" butane_dihedral_relaxed_scan.log
# 刚性扫描汇总表
grep -A 45 "Summary of the potential surface scan" h2o2_rigid_zmatrix_scan.log
# 每个收敛点的能量(相对最低点,kcal/mol)
awk '/SCF Done/{e=$5} /Stationary point found/{n++; printf "%3d %18.8f\n", n, e}' butane_dihedral_relaxed_scan.log > scan_E.dat
awk 'NR==FNR{if(min==""||$2<min)min=$2; next}{printf "%3d %10.3f\n", $1, ($2-min)*627.509}' scan_E.dat scan_E.dat
定性预期(文献中的近似范围,仅用于判断曲线形状是否合理):
- 正丁烷:anti 最低;gauche(约 ±65°)高约 0.6–0.9 kcal/mol;syn(0°)能垒最高,约 4.5–6 kcal/mol;
- H₂O₂:平衡二面角约 110–120°,trans 势垒约 1 kcal/mol,cis 势垒约 7 kcal/mol;
- SN2 一维扫描:能量先上升,在 C···Cl ≈ 2.3–2.4 Å 附近达到最高,随后 Br⁻ 离去、能量下降;
- GIC 扫描:输出
Initial Parameters中 RC 的初值应约为 −1.21,此后每个点增加 0.2。
作图:在 GaussView 中打开 .log,Results → Scan;或使用仓库脚本 python ../../scripts/scan_irc_profile.py -h 查看用法。本仓库不附带输出文件,所有数值以你自己的计算为准。
注意事项¶
- 所有扫描都加了
NoSymm:扫描变量一旦破坏对称性,没有NoSymm的作业会报错。 - ModRedundant 和 GIC 中的原子编号从 1 开始,哑原子不计,与 GaussView 显示的编号一致。修改结构后要重新核对。
- GIC 坐标若是表达式(generic GIC),程序内部以 Bohr 为单位,所以示例中乘以 0.529177 换算为 Å。第一次使用请先把
NSteps改为 2 试跑,确认 RC 的数值和步长符合预期。GIC 需要 G16 Rev. B.01 及以上版本。 - 一定要检查每个扫描点是否收敛。没有收敛的点能量不可信。
- 键角扫描不要穿过 180°,否则会触发
Linear angle in Bend等 L103 报错。