本讲导读
上一讲我们用差分法手写了一个求解一维 Schrödinger 方程的小程序。 从这一讲开始,我们换用真实科研中正在使用的工具——Gaussian 16。 它是量子化学领域使用最广的程序之一,而它的使用方式非常有代表性: 写一个纯文本输入文件,交上去,然后读一个纯文本输出文件。
这一讲要解决的就是这三个动作:
- 怎么写——一份 Gaussian 输入由哪几段组成,每一段的语法是什么;
- 关键词是什么意思——
Opt、Freq、SCF、Guess分别对应哪个近似、什么场景下要改; - 怎么读——日志里哪几行才是关键,怎么判断作业是成功还是失败。
整讲围绕六个算例展开(H₂O₂ → C₂H₄ → CH₃F → NH₃ → 呋喃 → 乙炔), 它们的技术主线只有一条:用最少的变量描述一个分子。
① 独立写出一份语法正确的 Gaussian 输入文件,说清每一段的作用;
② 判断一个分子属于什么点群,并用对称性把内坐标变量压到最少;
③ 从日志里定位 SCF Done、Stationary point found、
Normal termination,判断作业是否成功收敛;
④ 知道 SCF 不收敛、优化失败时应当依次尝试哪些关键词。
一、Gaussian 能做什么对应讲义 PPT 第 2–3 页 + 插页 1–5
1.1 能力清单
Gaussian 的官方能力页列了很长一串,但可以归成四类。值得注意的是: 这一整张清单背后只有一件事——在给定近似下求解薛定谔方程。
| 类别 | 能算什么 |
|---|---|
| 结构与能量 | 分子能量与结构 · 过渡态的能量与结构 · 键能与反应能 |
| 电子结构 | 分子轨道 · 多极矩 · 原子电荷与静电势 |
| 振动与光谱 | 振动频率 · 红外与拉曼光谱 · NMR 性质 · 极化率与超极化率 |
| 热力学与反应 | 热化学性质 · 反应路径 |
官网:https://gaussian.com · 能力总览页:gaussian.com/capabilities
所谓「会用 Gaussian」,其实是指知道每个关键词对应哪个近似。
关键词不是咒语,它们是你在数学上做出的取舍:
用 HF 还是 B3LYP,是在选电子相关怎么处理;
用 STO-3G 还是 6-31G(d),是在选波函数展开的完备程度。
知道自己在取舍什么,才谈得上「会算」。
1.2 内部结构:Link 与 Overlay
Gaussian 不是一个单体程序,而是由许多链接(Link)串起来的流水线。 每个 Link 负责一段工作,前一个的输出是后一个的输入。
| 链接 | 职责 |
|---|---|
| Link 0 | 定义暂存文件的位置与作业的资源上限(内存、核数、磁盘) |
| Link 1 | 读取并处理 Route Section,建立后续要执行的 Link 列表 |
| Link 101 / 102 | 初始化、读取分子结构 |
| Link 122 | 单点能计算(SCF) |
| Link 301 / 302 | 几何优化(梯度与步长) |
| Link 9999 | 结束计算——看到它说明作业正常收尾 |
Gaussian 把功能相近的 Link 打包成 Overlay(如 Overlay 1、Overlay 9/10/11/99)。 Overlay 是「一层」可以整体调用的功能集合。
读日志的实用价值:日志里出现 (Enter /.../l9999.exe)
是好事——说明程序走到了最后一步。
反过来,如果日志停在某个 l101.exe 之后再无输出,
说明作业正是在那里崩掉的,这就是排查的起点。
参考:http://gaussian.com/iops、http://gaussian.com/overlay1
1.3 软件的起源:1970 年
1970 年,约翰·波普尔(John A. Pople)及其在卡内基梅隆大学的研究团队推出 Gaussian 70,并通过量子化学程序交换组织(Quantum Chemistry Program Exchange,QCPE)向学术界提供。这一程序使其他研究者能够利用已有的计算工具开展分子电子结构研究,促进了量子化学计算方法的传播与应用。
Gaussian 70 的意义在于:它把量子化学理论、数值算法与计算机程序打包成一套可以直接使用的工具——研究者不必再各自重写一遍从头算程序,可以把精力留给分子本身。
量子化学家,Gaussian 软件的主要创始人,1998 年诺贝尔化学奖获得者
1.4 为什么叫「Gaussian」:高斯型基函数
软件的名字来自它采用的高斯型基函数(Gaussian-type function)。在分子轨道计算中,分子轨道通常表示为有限个基函数的线性组合——高斯型基函数的典型形式是:
式中坐标以基函数中心为原点:N 是归一化常数,α 控制函数的空间分布(α 越大越紧凑),l、m、n 决定其角向特征。
与 Slater 型函数相比,高斯型函数的指数上是 r2 而不是 r,因此多中心积分可以解析求出,计算效率高得多;代价是单个高斯函数描述原子轨道的形状并不好——它在原子核附近的行为与真实轨道不符。
解决的办法是把若干高斯函数按固定系数组合成一个收缩基函数,既保留积分的便利,又改善对原子轨道的描述,从而在计算精度与计算成本之间取得平衡。这条技术路线为早期计算资源有限条件下的分子电子结构计算提供了重要基础。
回到输入文件:STO-3G 这个名字就写着做法——用 3 个高斯函数拟合 1 个 Slater 型轨道。
1.5 版本演进与功能扩展
Gaussian 自发布以来持续迭代,主要版本以发布年份命名:
| 年代 | 主要版本 |
|---|---|
| 1970–1980 | Gaussian 70 · 76 · 80 |
| 1982–1990 | Gaussian 82 · 86 · 88 · 90 |
| 1992–1998 | Gaussian 92 · 94 · 98(其中含 Gaussian 92/DFT) |
| 2003–2016 | Gaussian 03 · 09 · 16 |
随着理论方法和数值算法的进步,Gaussian 的功能逐渐扩展到分子几何结构优化、振动频率与光谱计算、过渡态搜索、反应路径分析以及激发态性质研究等方面。电子相关方法和密度泛函理论的引入与发展,也进一步扩大了其应用范围。
1.6 密度泛函理论的加入
密度泛函理论(DFT)是现代电子结构计算的重要理论基础之一。沃尔特·科恩(Walter Kohn)及其合作者为该理论的建立作出了奠基性贡献。DFT 进入 Gaussian 之后,原本只能在小体系上做的计算得以在更大的分子上展开——这也是今天绝大多数 Gaussian 作业用 DFT 泛函(如 B3LYP)的原因。
理论物理学家,密度泛函理论的主要奠基人,1998 年诺贝尔化学奖获得者
科恩并非 Gaussian 软件的创始人。他的贡献在理论层面——而这一理论对包括 Gaussian 在内的多种电子结构计算软件都具有重要影响。
1.7 模型化学与 1998 年诺贝尔化学奖
波普尔的贡献不仅在于软件开发,还在于推动「模型化学」(model chemistry)思想:将明确的理论近似与基组相结合,通过系统计算和实验比较检验其可靠性,进而用于预测分子的结构、性质及反应行为。
这套方法包含四个环节:① 选定近似——明确的理论方法 + 基组,写进 Route 段;② 系统计算——对同一系列分子做同样规格的计算;③ 与实验比较——检验这套「模型」到底可不可靠;④ 用于预测——预测分子的结构、性质与反应行为。这种研究思路使量子化学计算逐步形成了可检验、可重复的研究方法体系。
1998 年,波普尔因发展量子化学计算方法,与因发展密度泛函理论而获奖的科恩共同获得诺贝尔化学奖。这一奖项肯定了量子化学理论与计算方法在分子科学研究中的重要作用。
Gaussian 的发展体现了量子化学从基础理论走向实用计算工具的过程:把理论近似、数值算法和系统验证整合为可重复使用的计算平台,促进了计算方法在化学、物理及相关领域的广泛应用。
二、输入文件的五段结构对应讲义 PPT 第 4–16 页
2.1 总览与一个完整例子
一份 Gaussian 输入文件由若干「段落(section)」组成,段落之间用空行分隔, 顺序不能颠倒:
- Link 0 段(以
%开头)——指定暂存文件与资源,如%chk、%mem、%nprocs; - Route 段(以
#开头)——指定方法、基组、任务类型以及各种关键词; - Title 段——一行任意说明文字,必须有,但不参与计算;
- 分子规格段——第一行是电荷与多重度,其后是坐标;
- (可选)附加段——自定义基组、变量初值等,紧跟在坐标之后。
以水分子为例,把五段结构对应上:
%chk=water.chk <- Link 0 段:以 % 开头 %rwf=water.rwf %nprocs=1 #p HF/6-31g <- Route 段:以 # 开头 Water <- Title 段:任意文字 0 1 <- 电荷=0,多重度=1(单线态) O <- 坐标段 H 1 R1 H 1 R1 2 a1 R1=1.04 <- 变量段(内坐标写法才需要) a1=104.5
怎么读这份文件:从上往下逐段问自己——
① 结果要存到哪(%chk)?
② 用什么方法、算什么(HF/6-31g,默认单点能)?
③ 算的是谁(水分子)?
④ 体系带什么电、什么自旋(0 1)?
⑤ 原子在哪里(坐标或内坐标)?
这五问能答全,输入文件就不会写错。
输入行的最大长度为 80 个字符。超出的部分会被截断或直接报错—— 这是从 FORTRAN 时代继承下来的格式约束。 写长关键词时要主动换行(Gaussian 允许在逗号后换行续写)。
2.2 % 段与临时文件
这些文件的名字可以任意取,但后缀决定了它们的用途:
| 文件 | 含义 | 用途 |
|---|---|---|
%chk=name.chk | Checkpoint 文件 | 记录几何结构、分子轨道、力常数等。后续的 Geom=Check、
Guess=Read 都要读它 |
%rwf=name.rwf | Read-Write File | 读写文件。作业异常中断时它还在,可以用它重启(restart) |
%int=name.int | Integral 文件 | 保存双电子积分 |
%d2e=name.d2e | Second derivative 文件 | 保存双电子积分的二阶导数 |
几何优化往往要跑几小时甚至几天。有了 .chk,中断后可以从上一步的几何接着优化
(Opt=Restart),而不必从头再来。
建议:所有作业都加 %chk,代价极小,收益极大。
2.3 内存估算
内存不够是 Gaussian 失败最常见的原因。经验估算式为
| 符号 | 含义 |
|---|---|
| $M$ | 该任务类型的最小内存(见下表,单位 MW,1 MW = 8 MB) |
| $N_B$ | 基函数个数 |
| 任务类型 \ 最高角动量 | f | g | h | i | j |
|---|---|---|---|---|---|
| SCF energy | 4 MW | 4 MW | 9 MW | 23 MW | ≈60 MW |
| SCF gradient | 4 MW | 5 MW | 16 MW | 38 MW | — |
| SCF frequency | 4 MW | 9 MW | 27 MW | — | — |
| MP2 energy | 4 MW | 5 MW | 10 MW | 28 MW | ≈70 MW |
| MP2 gradient | 4 MW | 6 MW | 16 MW | 38 MW | — |
① 内存需求随基函数个数平方增长——基组加一倍,内存要加四倍;
② 这不是精确公式,只是量级估计。实操中先按估计值分配,看日志里的内存使用报告再调。
2.4 Route 段与语法规则
Route 段的第一行以 # 开头,紧跟一个字母控制输出详细程度:
| 写法 | 输出级别 | 说明 |
|---|---|---|
#N | Normal | 默认级别。不包含计算耗时等信息 |
#P | 输出更多细节,包含计算耗时、SCF 迭代信息等 | |
#T | Terse | 只输出必要信息,日志最短 |
虽然日志会长一些,但你能看到每一步的耗时、SCF 是否收敛、收敛了几圈—— 这些正是排查「作业为什么慢 / 为什么不收敛」时最需要的信息。
Route 段本身是自由格式的,规则如下:
| 规则 | 说明 | 例子 |
|---|---|---|
| 自由格式 | 关键词之间可以用空格、逗号或斜杠分隔 | #p HF/6-31g SCF=(Conver=10)等价于 #p,HF/6-31g,SCF=(Conver=10) |
| 大小写不敏感 | HF 与 hf 等价 | 习惯上仍写大写 |
| 关键词的三种写法 | keywordkeyword=optionkeyword(option1, option2, …) |
optMaxCycle=100SCF=(Conver=10, MaxCycle=100) |
实际写法建议:同一行的关键词用空格分隔;同一关键词的多个选项用逗号 包在括号里。这样最易读,也不容易触发 80 字符上限。
2.5 Title 段与电荷、多重度
| 段 | 内容 | 注意 |
|---|---|---|
| Title 段 | 一行任意文字(如 Water) |
必须有,但不会被执行。建议写清「体系 + 方法 + 目的」 |
| 电荷与多重度 | 0 1 |
第一个数是体系总电荷,第二个是自旋多重度 $2S+1$ |
| 例子 | 含义 | 怎么判断 |
|---|---|---|
0 1 | 中性单线态 | 偶数电子,闭壳层 |
1 2 | 正一价、双线态(自由基) | 奇数电子,开壳层 |
-1 1 | 负一价、单线态 | 如羧酸根阴离子 |
0 3 | 中性三线态 | 如 O₂ 基态 |
电荷和多重度写反,或者多重度与电子数不匹配。 自检公式:电子数 $N$ 与多重度必须奇偶一致—— $N$ 为偶数则多重度为奇数(1、3、5…),反之亦然。 程序会在第一时间报错,但报错信息不总是直观,所以最好自己先核对一遍。
2.6 分子规格段:三种坐标写法
| 写法 | 形式 | 特点 |
|---|---|---|
| 笛卡尔坐标 | 元素 x y z | 最直接,但对优化而言变量太多,且难以施加对称性约束 |
| 内坐标(z-matrix) | 元素 原子1 键长 原子2 键角 原子3 二面角 | 用键长、键角、二面角描述分子,变量数最少,是优化的首选 |
| 混合写法 | 两者可以混用 | 常用做法:先把片段写成笛卡尔,再用内坐标接上其余原子 |
H <- 第一个原子只需元素符号 O 1 R1 <- 与原子 1 成键,距离 R1 O 2 R2 1 A <- 再指定与原子 1 的键角 A H 3 R1 2 A 1 D <- 再指定二面角 D R1=0.9 <- 变量在坐标之后集中定义 R2=1.4 A=105.0 D=120.0
从第二行起,每一列都是「参照哪一个原子 + 对应的结构参数」的成对出现:
O 1 R1 中的 1 是参照原子编号,R1 是与它的键长。
参考:http://gaussian.com/zmat
三、常用关键词详解对应讲义 PPT 第 8–13 页
以下五个关键词覆盖了本课程绝大多数作业的写法。每个都按「选项 → 含义 → 什么时候改」 三层来读。
3.1 Guess:初始猜测
SCF 迭代需要一个初始的密度(或轨道),Guess 决定它从哪来:
| 关键词 | 做法 | 何时用 |
|---|---|---|
Guess=Harris |
对 Harris 泛函做对角化得到初始猜测。所有 HF 与 DFT 计算的默认值 | 默认即可,不必显式写 |
Guess=Read |
从 .chk 文件读取上一次的波函数作为初猜 |
连续做多个任务时(例如先优化、后算频率),能大幅减少 SCF 圈数 |
#p opt freq b3lyp/6-31g(d) Guess=Read Geom=Checkpoint
意思是:几何和初猜都从 .chk 里拿,在这个结构上做频率计算。
这是「优化完接着算频率」的标准写法。参考:http://gaussian.com/guess
3.2 SCF:收敛控制
| 选项 | 默认值 | 含义 |
|---|---|---|
MaxCycle=n | 128 | SCF 最大迭代圈数。超过就报「不收敛」并终止 |
Conver=n | 8 | 收敛判据设为 $10^{-n}$:要求密度矩阵的 RMS 变化 < 10⁻ⁿ, 且最大变化 < 10⁻⁽ⁿ⁻²⁾ |
QC | — | 启用二次收敛算法。远离收敛点时先做线性搜索,接近收敛时切换为 Newton 法—— 难收敛体系的救命选项 |
direct | — | 不把双电子积分存盘,每次迭代重算。省磁盘,适合大体系 |
典型写法:SCF=(Conver=10, MaxCycle=100)
① 先 SCF=(MaxCycle=200) 给足圈数;
② 仍不收敛就加 QC;
③ 还不行就换初猜(Guess=Read)或先做小基组。
参考:http://gaussian.com/scf
为什么 Conver=8 对应两个判据:$10^{-8}$ 是密度矩阵的
均方根变化,$10^{-6}$ 是最大元变化。两个都要满足才算收敛,
避免个别元素超标的情况被平均值掩盖。
3.3 Opt:几何优化
| 选项 | 用途 | 说明 |
|---|---|---|
opt(默认) | 优化到局域极小点 | 用 Berny 算法,在内坐标下做优化 |
opt=z-matrix | 明确指定用内坐标 | 等价于默认行为 |
opt=(ts, z-matrix, noeigentest) | 优化到过渡态 | TS 是一阶鞍点;noeigentest 跳过本征值检验,在初始 Hessian 不可靠时使用 |
MaxCycles=n | 最大优化步数(默认 20) | 步数用尽仍未收敛时,用 Opt=Restart 接着跑 |
Iop(1/8=6) | 改用笛卡尔坐标优化 | 内坐标优化失败时(环状 / 高对称体系常见)的备选路线 |
日志里出现 Error termination request processed by link 9999
或反复出现 Number of steps exceeded,通常意味着内坐标设置有问题。
对策:改用笛卡尔坐标优化(Iop(1/8=6)),
或手工写出更合理的 z-matrix。参考:http://gaussian.com/opt
3.4 Freq:频率计算
| 选项 | 含义 |
|---|---|
freq |
在当前几何下计算振动频率(必须已完成优化,否则会得到虚频) |
Freq=noraman |
跳过拉曼强度的额外步骤,节省 10%–30% 的 CPU 时间 |
Freq=ReadIsotopes |
允许自定义温度、压力、频率标度因子和同位素 (默认 298.15 K、1 atm、无标度、最丰同位素) |
优化到极小点的结构应该全部都是实频(没有虚频); 如果出现一个虚频,说明结构没优化好,或者你误打误撞优化到了一个过渡态。 (过渡态的特征则恰好相反:有且仅有一个虚频。)
参考:http://gaussian.com/freq
3.5 热力学修正:从电子能到自由能
freq 作业在算完频率后会自动做热力学分析。总能量由四部分构成:
Zero-point correction= 0.022502 Thermal correction to Energy= 0.023452 Thermal correction to Enthalpy= 0.023768 Thermal correction to Gibbs Free Energy= 0.017992 Sum of electronic and zero-point Energies= -76.408954 Sum of electronic and thermal Free Energies= -76.413464
比较两个异构体的稳定性,必须用自由能(Gibbs)而不是电子能;
零点能修正(ZPE)则是在 0 K 下的修正。
只用 SCF Done 的电子能去比较,在能量差小于 5 kcal/mol 时很容易得出错误结论。
参考:http://gaussian.com/thermo
四、算例 1:H₂O₂ 的几何优化对应讲义 PPT 第 17–23 页
4.1 两种坐标写法,同一个分子
过氧化氢 H₂O₂ 有 4 个原子,用内坐标只需要 6 个变量 (3 个键长 + 2 个键角 + 1 个二面角),比笛卡尔坐标的 12 个少一半。
| 写法 | 输入 | 特点 |
|---|---|---|
| 内坐标(推荐) | HO 1 0.9O 2 1.4 1 105.0H 3 0.9 2 105.0 1 120.0 |
变量少、物理意义清楚、方便加约束 |
| 笛卡尔坐标 | H 0.000 0.000 0.000O 0.000 0.900 0.000O 1.350 1.262 0.000H 1.464 1.742 -0.752 |
直观,但变量多(12 个) |
完整的输入文件如下:
%chk=h2o2.chk %rwf=h2o2.rwf #p hf/6-31g opt H2O2 energy calculation 0 1 H O 1 0.9 O 2 1.4 1 105.0 H 3 0.9 2 105.0 1 120.0
内坐标的二面角 120.0° 决定了 H 不在 O—O 键的同一侧; 如果写成 0° 或 180°,初始结构就变成平面构型,优化会走到另一个(可能不想要的)构型上。
结论:初始结构的对称性,会决定优化收敛到哪个极小点。 这不是程序的问题,而是势能面上本来就存在多个极小点。
4.2 逐项读日志
优化跑完会得到一个 .log 文件。以下四处是必须会看的。
(一)SCF 能收敛了吗——用 grep 抽出所有 SCF Done 行:
$ grep "SCF Done" h2o2.log SCF Done: E(RHF) = -150.710007216 A.U. after 9 cycles SCF Done: E(RHF) = -150.710007332 A.U. after 9 cycles SCF Done: E(RHF) = -150.710007337 A.U. after 8 cycles SCF Done: E(RHF) = -150.710007340 A.U. after 8 cycles
每一行对应优化过程中的一步几何。可以看到能量逐次下降并趋于收敛
(−150.710007216 → −150.710007340),迭代圈数稳定在 8–9 圈。
如果圈数在慢慢往上爬(9 → 15 → 30…),说明当前几何附近 SCF 越来越难收敛,
应当考虑加 SCF=QC。单位:A.U. 即 Hartree,
1 Hartree = 27.211 eV。
(二)优化前的初始参数:
! Initial Parameters !
! (Angstroms and Degrees) !
! Name Definition Value Derivative Info. !
! R1 R(1,2) 0.9000 -DE/DX = -0.0246 !
! R2 R(2,3) 1.4000 -DE/DX = -0.0312 !
! A1 A(1,2,3) 105.0000 -DE/DX = 0.0018 !
! D1 D(1,2,3,4) 120.0000 -DE/DX = 0.0000 !
Name 是内坐标变量名,Definition 说明它由哪几个原子定义
(R(1,2) = 原子 1 与 2 的键长),-DE/DX 是能量对该坐标的负梯度——
也就是力。力为零的方向就是优化的方向。优化的目标很直白:
把所有 −DE/DX 都压到接近 0。
(三)收敛判据与最终结构:
-- Stationary point found. ! R1 R(1,2) 0.9661 -DE/DX = 0.0000 ! ! R2 R(2,3) 1.4028 -DE/DX = 0.0000 ! ! A1 A(1,2,3) 100.1574 -DE/DX = -0.0001 ! ! D1 D(1,2,3,4) 121.2654 -DE/DX = 0.0000 !
「Stationary point found」是收敛的正式标志。 对照初始与优化后的数值可以学到物理:O—O 键从 1.400 Å 变到 1.4028 Å(几乎没变), 而 O—H 键从 0.900 Å 明显拉长到 0.9661 Å,键角从 105° 收到 100.2°—— HF 方法能正确给出过氧键较长的特征。这也说明:初始值离真实值太远时, 优化的第一步往往很大,所以给一个合理的初始几何能省不少时间。
(四)Archive 段与终止信息:
(Enter /export/home/gaussian/g09/l9999.exe) 1\1\GINC-DIRAC2\FOpt\RHF\6-31G\H2O2\YLNIU\15-Oct-2018\0\\#p hf/6-31g opt\\... Normal termination of Gaussian 16 at ...
以 1\1\GINC-... 开头的那一长串是 Archive 段,
即机器可读的结果摘要——包含方法、基组、分子名、日期、路由段、
以及最终的优化坐标。实际用途:用脚本批量处理成百上千个 log 时,
只要 grep 这一行就能把结果全部抽出来,不必解析整个日志。
最后一行 Normal termination 是作业正常结束的最终凭据——
没有它就说明算失败了。不要只看 SCF Done 出现过就认为成功:
优化可能在中途崩掉,而前面每一步的 SCF Done 都还在日志里。
4.3 部分优化:只优化一部分坐标
有时我们想固定某些结构参数(例如冻结分子骨架、扫描某根键)。 做法是把变量分成两组:
| 组 | 含义 | 行为 |
|---|---|---|
| 变量(Variables) | 写在变量列表里的参数 | 会被优化 |
| 常量(Constants) | 在变量名后加 (0),或直接给数值后跟 0 |
保持不动 |
用 #p hf/6-31g popt(popt = partial optimization,部分优化),
变量列表里写上要优化的;其余参数用常量形式固定住。
典型用途:扫描二面角做构象搜索、冻结晶体环境做局域弛豫。 「只优化 H 的位置、固定重原子骨架」也是科研中很常见的需求。
五、算例 2–6:用对称性把输入写短对应讲义 PPT 第 24–32 页
这一节的五个分子,技术主线只有一条:把分子点群的对称性翻译成变量之间的约束。 点群越高,能共用的变量就越多,输入文件就越短,优化也越稳。
5.1 平面分子:乙烯 C₂H₄
# HF/STO-3G OPT C2H4 opt 0 1 C C 1 r1 H 1 r2 2 a1 H 1 r2 2 a1 3 180.0 H 2 r2 1 a1 3 0.0 H 2 r2 1 a1 4 0.0 r1=1.32 r2=1.09 a1=120.0
① 让键长共用变量:中间两个 H 都用 r2,
两个 C—H 键长就永远相等,自动保持了对称性;
同理 a1 共用让两个 H—C—C 角相等。
② 用二面角的 180° 和 0° 把分子压平: 二面角取 180° 或 0° 意味着该 H 与参考原子共面, 写成常量(无变量名)就锁死了平面性。
结果:优化变量从 12 个降到 3 个。
5.2 高对称分子:CH₃F(点群 C₃ᵥ)
先判断分子的点群,再用对称性把变量压到最少。 CH₃F 属于 $C_{3v}$:C—F 是一根轴,三个 C—H 完全等价。
| 对称元素 | 数量 | 约束 |
|---|---|---|
| $C_3$ 三重轴 | 1 | 三个 C—H 键长相等、三个 H—C—F 角相等 |
| $\sigma_v$ 镜面 | 3 | 相邻 H 之间的夹角按 120° 均匀分布 |
# HF/STO-3G OPT CH3F C3v opt 0 1 C F 1 r1 H 1 r2 2 a1 H 1 r2 2 a1 3 b H 1 r2 2 a1 3 -b r1=1.38 r2=1.09 a1=110.6 b=120.0
F 1 r1:F 与 C 成键,距离 $r_1$;
H 1 r2 2 a1:第一个 H 与 C 成键,C—H 键长 $r_2$,H—C—F 角 $a_1$;
后两个 H 用 $+b$ 与 $-b$ 的二面角,天然满足三重对称—— 虽然代码里只写了两个 H 的位置,但 $\pm b$ 的写法保证了三个 H 绕轴均匀分布。
变量共 4 个($r_1,r_2,a_1,b$),而笛卡尔坐标需要 15 个(5 原子 × 3)。
5.3 同族分子:NH₃(点群 C₃ᵥ)
氨与 CH₃F 的点群相同(都是 $C_{3v}$),因此输入文件的结构完全一样, 只需换元素和初始数值:
# HF/STO-3G OPT NH3 C3v opt 0 1 N H 1 r1 H 1 r1 2 a1 H 1 r1 2 a1 3 b H 1 r1 2 a1 3 -b r1=1.01 a1=107.0 b=120.0
本页源课件(PPT 第 29、30 页)的正文沿用了 CH₃F 的内容,而标题写的是 NH₃—— 这应是讲义排版时的疏漏。这里按标题给出 NH₃ 的正确写法。
要点:NH₃ 的三个 N—H 键完全等价,所以第一、二个 H 都用 $r_1$、$a_1$; 第三个 H 继续用 $\pm b$ 的写法。
与 CH₃F 唯一的实质差别是:NH₃ 的键角较小(约 107°), 因为 N 上有一对孤对电子把键角压下来—— 这个差异恰恰只能靠计算或实验得到,无法从对称性推出。
5.4 环状分子:呋喃(点群 C₂ᵥ)
呋喃(furan,C₄H₄O)是一个五元杂环芳香分子,属 $C_{2v}$ 点群—— 一条 $C_2$ 轴、两个镜面。
| 对称性带来的约束 | 结果 |
|---|---|
| 左右对称($C_2$ 轴) | 两侧对应的键长、键角全部相等 |
| 分子平面($\sigma_v$) | 所有原子共面,所有二面角锁死为 0° 或 180° |
| 独立变量数 | 从笛卡尔的 27 个(9 原子 × 3)降到个位数 |
沿环走一圈,把对称位置上的键长 / 键角重复使用同一个变量名。 例如环上 5 根键,如果对称性只允许 3 种不同的键长,就只定义 3 个变量, 其余位置重复引用。
注意:环状分子的内坐标有时会出现「冗余」(变量之间不独立),
导致优化报错——此时改用 Iop(1/8=6) 走笛卡尔坐标更稳妥。
5.5 线性分子:乙炔(D∞h)
线性分子(点群 $D_{\infty h}$)的特殊之处:键角恒为 180°, 二面角则完全无定义(绕轴旋转不改变任何东西)。
# HF/6-31G OPT acetylene linear opt 0 1 C C 1 r1 H 2 r2 1 180.0 H 1 r2 2 180.0 r1=1.20 r2=1.06
① 不要在坐标里写二面角——线性排列时二面角没有定义,写了会产生数值奇异, 优化会在那里卡住;
② 键角必须显式写 180.0 并且不能给它变量名
(否则程序会试图优化一个恒为 180° 的量)。
这是「把无定义的量锁成常量」的典型例子。
5.6 算例 2–6 的共同套路
| 分子 | 点群 | 关键技巧 |
|---|---|---|
| C₂H₄ 乙烯 | $D_{2h}$ | 共用变量 + 二面角锁 180°/0° 保证平面性 |
| CH₃F | $C_{3v}$ | $\pm b$ 的二面角写法自动满足三重对称 |
| NH₃ | $C_{3v}$ | 同上,但注意孤对电子压小了键角 |
| 呋喃 Furan | $C_{2v}$ | 环上对称位置重复用变量;警惕内坐标冗余 |
| 乙炔 HC≡CH | $D_{\infty h}$ | 二面角必须删除,键角锁 180° |
写输入文件的功夫,一大半花在「怎么用最少的变量描述分子」上。 变量越少,优化越快、越不容易失败,而且结果天然落在正确的对称性上。
用在线工具查:https://www.webqc.org/symmetry.php
提供点群判断与特征标表。手算点群容易出错,尤其是分子稍有畸变时,
推荐先查表再写输入。
点群决定了三件事:① 输入能写多短;② Gaussian 会自动检测并利用对称性加速;
③ 判断振动模式、轨道对称性时要用到特征标表。
(若不想让程序使用对称性,可加 Symm=NoInt。)
5.7 读图:C3v 的对称性信息与特征标表
查一次点群,拿到的是两样东西:这个分子有哪些对称元素(左图), 以及它所属点群的特征标表(右图)。
· 列是对称操作——E 恒等、C3 旋转、 σv 镜面……左边带数字的写法表示这类操作有几个(2C3、3σv);
· 行是各不可约表示(A1、A2、E…), 格子里的数字是该操作下的特征标;
· 判断分子轨道与振动模式的对称性、以及振动是否红外 / 拉曼活性, 都要回到这张表。
六、作业与提交要求
作业
1. H₂C=C=O(烯酮) 写出坐标并用 HF/6-31G 优化,
给出优化后的内坐标。
初始值参考:C=C 1.35 Å,C=O 1.20 Å,C—H 1.09 Å。
提示:这是一个累积双键分子,注意 C=C=O 为直线(180°)。
2. 苯(C₆H₆) 写出内坐标并用 HF/6-31G 优化,
给出优化后的内坐标。
初始值参考:C=C 1.30 Å,C—H 1.09 Å。
提示:先判断点群($D_{6h}$),利用对称性把变量压到最少——
环上所有 C—C 键长相等、所有 C—H 键长相等。
提交要求
① 输入文件(.gjf);
② 关键输出片段(SCF Done 与 Optimized Parameters);
③ 一两句物理评论:优化后的键长与实验值相比如何?哪些键被高估 / 低估了? 这一步最容易被忽略,也最能体现你是否真的理解了计算。
本讲小结
| 要点 | 关键结论 |
|---|---|
| 输入结构 | 五段:% → # → Title → 电荷多重度 → 坐标,
段间空行,行宽 ≤ 80 字符 |
| 最该记住的关键词 | #P、%chk、Opt、
Freq、SCF=(MaxCycle,Conver)、Guess=Read |
| 写坐标的核心技巧 | 用点群对称性共用变量,把变量数压到最少 |
| 判断成功 | 只有日志末尾的 Normal termination 才算成功 |
| 单位换算 | 1 Hartree = 27.211 eV;1 MW = 8 MB |
附:PPT 页码对照表
本讲为讲义体系的第 2 讲,数字页码与源课件 PPT 页码一一对应(1–33),
另加 6 张插页(PPT 第 3 页之后 5 张讲 Gaussian 发展简史、
第 27 页之后 1 张读点群信息的读图页),故放映文件共 39 页。
深链有两种写法:#p=N 按页码跳转(N = 1…33),
#s=M 按页序跳转(M = 1…39;本讲插页的页序为 4–8 与 33,
其后的页码相应后移)。
| PPT 页 | 标题 | 小节 |
|---|---|---|
| 1 | Gaussian 16 入门(封面) | 封面 |
| 2 | Gaussian 16 的能力清单 | 概述 |
| 3 | Gaussian 的内部结构:Link 与 Overlay | 概述 |
| 插页 1 | 一、软件的起源:1970 年 | 概述 |
| 插页 2 | 二、为什么叫「Gaussian」:高斯型基函数 | 概述 |
| 插页 3 | 三、版本演进与功能扩展 | 概述 |
| 插页 4 | 四、密度泛函理论的加入 | 概述 |
| 插页 5 | 五、模型化学与 1998 年诺贝尔化学奖 | 概述 |
| 4 | Gaussian 输入的总览 | 输入格式 |
| 5 | 一个完整的输入文件 | 输入格式 |
| 6 | % 段:计算过程中的临时文件 | 输入格式 |
| 7 | 内存估算 | 输入格式 |
| 8 | Route 段:方法、基组、任务类型 | 输入格式 |
| 9 | 初始猜测:Guess | 关键词 |
| 10 | SCF 收敛控制:SCF | 关键词 |
| 11 | 几何优化:Opt | 关键词 |
| 12 | 频率计算:Freq | 关键词 |
| 13 | 热力学修正:从电子能到自由能 | 关键词 |
| 14 | Route 段的语法规则 | 输入格式 |
| 15 | Title 段与电荷、多重度 | 输入格式 |
| 16 | 分子规格段:三种坐标写法 | 输入格式 |
| 17 | 算例 1:H₂O₂ 的几何优化(章节页) | 算例 1 |
| 18 | 两种写法,同一个分子 | 算例 1 |
| 19 | 读日志(一):SCF 能收敛了吗 | 算例 1 |
| 20 | 读日志(二):优化前的初始参数 | 算例 1 |
| 21 | 读日志(三):收敛判据与最终结构 | 算例 1 |
| 22 | 读日志(四):Archive 段 | 算例 1 |
| 23 | 部分优化:只优化一部分坐标 | 算例 1 |
| 24 | 算例 2–6:用对称性把输入写短(章节页) | 算例 2–6 |
| 25 | 平面分子:乙烯 C₂H₄ | 算例 2–6 |
| 26 | 高对称分子:CH₃F(点群 C₃ᵥ) | 算例 2–6 |
| 27 | 辅助工具:在线点群查询 | 算例 2–6 |
| 插页 | 读图:C₃ᵥ 的对称性信息与特征标表 | 算例 2–6 |
| 28 | CH₃F 的输入文件 | 算例 2–6 |
| 29 | 同族分子:NH₃(点群 C₃ᵥ) | 算例 2–6 |
| 30 | 环状分子:呋喃(点群 C₂ᵥ) | 算例 2–6 |
| 31 | 线性分子:乙炔(HC≡CH) | 算例 2–6 |
| 32 | 从苯到炔:算例 2–6 的共同套路 | 算例 2–6 |
| 33 | 作业 | 作业 |