Gaussian 固定约束与二面角扫描
用真实乙醇7点结果区分刚性扫描、ModRedundant固定约束与松弛扫描,给出完整输入和终端提取步骤。
阅读本篇目录
本教程使用鸢算科技集群实际计算的9原子乙醇,Gaussian 16 C.01 AVX 厂商预编译 CPU 版本,B3LYP/6-31G(d)、UltraFine 积分网格。软件按用户独立初始化,不使用公共 Gaussian module;示例为单线程 CPU 参考,不作为 Intel Xeon 8173M 节点性能数据。
下载乙醇完整输入、实际数值摘录、CSV与绘图脚本,在新解压目录先查看结果:
bash run.sh
这一步无需 Gaussian,使用集群 ASE 3.29 的 Python、SciPy 和 Matplotlib 生成 analysis/、figures/。原生重算需先用 yskit gaussian-init 初始化个人环境,在已分配 CPU 的作业中执行 bash run.sh compute。包内每个输入1线程、1GB主机内存;按照整节点模板提交时,线程和内存应与实际分配对应。不要在登录终端直接启动正式客户计算。
results/*/output.log 是实际科学数值行摘录,native-fields.fchk.txt 是 formchk 的数值字段摘录,不包含轨道系数。二者不是完整日志或完整波函数;包内不分发 Gaussian 软件、二进制检查点。
1. 先选需要的扫描方式#
| 目的 | 做法 | 其余坐标 |
|---|---|---|
| 看固定几何转动的能量变化 | 刚性扫描,转动后逐点单点 | 保持不变 |
| 给定二面角,允许分子其余部分放松 | Opt=ModRedundant 与扫描行 |
每个点重新优化 |
| 固定一个二面角后优化其他坐标 | ModRedundant 的 F 行 |
约束外坐标优化 |
本例仍用 C1–C2–O3–H4。0°、60°……360°共7个采样点,360°是周期端点,不是第8个不同构象。60°步长用于演示操作,不能据此精确报告扭转势垒位置和高度。
2. 固定一个二面角#
cat inputs/ethanol-fixed-dihedral-zero/input.gjf
%Chk=result.chk
%NProcShared=1
%Mem=1GB
#p B3LYP/6-31G(d) SCF=Tight Int=UltraFine NoSymm Opt=(ModRedundant,Tight)
ethanol-fixed-dihedral-zero
0 1
C 1.17153652 -0.40313749 -0.00000000
C -0.00707065 0.55627388 0.00000000
O -1.20126540 -0.22107301 0.00000000
H -0.94753729 -1.15631104 0.00000000
H 0.04023480 1.20882036 0.88754369
H 0.04023480 1.20882036 -0.88754369
H 2.11840294 0.14822148 -0.00000000
H 1.14068387 -1.04456934 0.88685875
H 1.14068387 -1.04456934 -0.88685875
D 1 2 3 4 F
最后的 D 1 2 3 4 F 固定这四个原子的二面角。原子编号从1开始,且与坐标行顺序一致。几何段后保留空行,再写约束行,文件末尾也保留空行。
在分配好的 CPU 资源中运行:
bash compute.sh ethanol-fixed-dihedral-zero
grep 'Optimization completed' work/ethanol-fixed-dihedral-zero/output.log
formchk work/ethanol-fixed-dihedral-zero/result.chk fixed.fchk
实际固定后角度约为0°,对应能量可在 analysis/followups/RESULTS.json 的 fixed_zero 查看。它是受约束优化结果,不能自动称为完全自由的稳定结构。
3. 一份输入完成松弛扫描#
cat inputs/ethanol-relaxed-scan/input.gjf
%Chk=result.chk
%NProcShared=1
%Mem=1GB
#p B3LYP/6-31G(d) SCF=Tight Int=UltraFine NoSymm Opt=(ModRedundant,Tight)
ethanol-relaxed-scan
0 1
C 1.17153652 -0.40313749 -0.00000000
C -0.00707065 0.55627388 0.00000000
O -1.20126540 -0.22107301 0.00000000
H -0.94753729 -1.15631104 0.00000000
H 0.04023480 1.20882036 0.88754369
H 0.04023480 1.20882036 -0.88754369
H 2.11840294 0.14822148 -0.00000000
H 1.14068387 -1.04456934 0.88685875
H 1.14068387 -1.04456934 -0.88685875
D 1 2 3 4 S 6 60.0
D 1 2 3 4 S 6 60.0:从输入的0°开始,再推进6次,每次增加60°。本次真实输出得到7个收敛采样点。每个点固定扫描角度,并优化其他允许变化的坐标。
bash compute.sh ethanol-relaxed-scan
grep -c 'Optimization completed' work/ethanol-relaxed-scan/output.log
grep 'Summary of Optimized Potential Surface Scan' work/ethanol-relaxed-scan/output.log
grep 'Normal termination' work/ethanol-relaxed-scan/output.log
如果一个点没有优化收敛,应先检查该点,不能把下一条 SCF Done 直接当作收敛扫描结果。配套脚本按实际 Optimization completed. 标记读取对应能量和坐标,并从坐标核对角度。
4. 刚性扫描怎样运行#
包内7份 ethanol-rigid-* 输入来自优化后反式结构,仅转动羟基H,不改变其他原子坐标;它们的 route 中没有 Opt。
cat inputs/ethanol-rigid-60/input.gjf
for angle in 0 60 120 180 240 300 360; do
bash compute.sh ethanol-rigid-$angle
done
这些命令应放入已分配 CPU 的作业执行,示例为顺序运行,每个条件单线程。
5. 提取、画图与比较#
下载包首次 bash run.sh 已输出真实数据的对照图。自己完成原生计算后,在新目录中提取:
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python analyze_followups.py work --output my-scan
head my-scan/torsional-scans.csv
cat my-scan/RESULTS.json
| 二面角 / ° | 刚性扫描 E / Hartree | 松弛扫描 E / Hartree | 放松降低的能量 / kJ mol⁻¹ |
|---|---|---|---|
| 0 | -155.0297158054 | -155.0316048330 | 4.9596 |
| 60 | -155.0319024010 | -155.0342848160 | 6.2550 |
| 120 | -155.0312933675 | -155.0319102120 | 1.6195 |
| 180 | -155.0337994563 | -155.0337995800 | 0.0003 |
| 240 | -155.0312933675 | -155.0319102550 | 1.6196 |
| 300 | -155.0319024010 | -155.0342845510 | 6.2543 |
| 360 | -155.0297158054 | -155.0316046200 | 4.9591 |
CSV中相对能量以优化后反式电子能为零点。松弛扫描可以通过其他键长和角度放松而降低能量;不同点仍可能停留在不同局部优化分支。图中连线只帮助观察采样点,不是额外计算数据。
这两条曲线都是电子势能曲线,不包含每个约束点的熵、溶剂或采样贡献,不是自由能曲线。寻找真正过渡态,需要进一步做无约束 TS 优化、频率和正反 IRC。
若优化因时间中断,可保留原检查点,另建 %Chk,用 %OldChk 读取原文件,在原 Opt 设置中加入 Restart。本例源扫描曾从检查点继续,下载数据保留实际完成的点;通用单点的 Geom=AllCheck Guess=Read 与优化器的 Opt=Restart 不应混为一谈。
继续看结构优化与IR/Raman和虚频。