示例 09:SMD 隐式溶剂——溶液中优化、溶剂化自由能、自定义溶剂、pKa 与氧化还原电位¶
目的¶
用苯酚、苯氧负离子和四硫富瓦烯(TTF)演示 Gaussian 16 中隐式溶剂模型的典型用法:
- 在 SMD(水) 中做 Opt Freq,得到溶液中的自由能;
- 用“气相优化 + SMD 单点”计算溶剂化自由能 ΔG_solv;
- 用
Solvent=Generic,Read自定义溶剂,并用内置溶剂做对照,验证写法; - 用苯酚/苯氧负离子计算 pKa(直接法);
- 用 TTF/TTF•⁺ 在乙腈中计算氧化电位(低水平 Opt Freq + 高水平单点)。
对应教程:第9章 隐式溶剂模型 PCM/SMD。
文件说明¶
| 文件 | 作业 | 理论水平 |
|---|---|---|
phenol_smd_water_opt_freq.gjf |
苯酚,SMD(水),Opt Freq | M06-2X/6-311+G(d,p) |
phenoxide_smd_water_opt_freq.gjf |
苯氧负离子(−1 1),SMD(水),Opt Freq | M06-2X/6-311+G(d,p) |
solvation_free_energy_gas_and_smd.gjf |
Link1:① 气相 Opt Freq;② 同一结构 SMD(水) 单点(Geom=Check Guess=Read) |
M05-2X/6-31G(d)(SMD 参数化所用水平之一) |
custom_solvent_generic_read.gjf |
Link1:① 内置 Solvent=Ethanol;② Solvent=Generic,Read 手动输入乙醇的 7 个 SMD 参数 |
M05-2X/6-31G(d) |
redox_potential_cycle_neutral_and_cation.gjf |
Link1 四步:① TTF Opt Freq;② TTF•⁺(1 2)Opt Freq;③ TTF 单点;④ TTF•⁺ 单点,全部在 SMD(乙腈) 中 | ①② B3LYP-D3(BJ)/def2-SVP;③④ M06-2X/def2-TZVP |
run_solvation.sh |
Slurm 脚本:依次运行全部输入,最后汇总 SCF 能量和自由能 | — |
初始坐标由 RDKit 嵌入 + MMFF 优化得到,只作为 DFT 优化的起点。
运行步骤¶
cd Gaussian/examples/09-solvation-smd
g16 < phenol_smd_water_opt_freq.gjf > phenol_smd_water_opt_freq.log
g16 < phenoxide_smd_water_opt_freq.gjf > phenoxide_smd_water_opt_freq.log
g16 < solvation_free_energy_gas_and_smd.gjf > solvation_free_energy_gas_and_smd.log
g16 < custom_solvent_generic_read.gjf > custom_solvent_generic_read.log
g16 < redox_potential_cycle_neutral_and_cation.gjf > redox_potential_cycle_neutral_and_cation.log
# 或者在 Slurm 集群上
sbatch run_solvation.sh
预期结果 / 如何检查¶
通用检查
grep -c "Normal termination" *.log # Opt Freq 为 2,Link1 作业按步数累计
grep "imaginary frequencies" *.log # 极小点不应出现这一行
grep "SMD-CDS" *.log # 确认 SMD 的非静电项被计算
ΔG_solv(苯酚,水)
awk '/SCF Done/{e=$5} /Normal termination/{n++; E[n]=e}
END{printf "dG_solv = %.2f kcal/mol\n", (E[n]-E[1])*627.509}' solvation_free_energy_gas_and_smd.log
苯酚的实验水合自由能约为 −6.6 kcal/mol,SMD 对中性分子的典型误差约为 1 kcal/mol。
自定义溶剂:grep "SCF Done" custom_solvent_generic_read.log 得到的两个能量应当一致(差别在 10⁻⁶ Hartree 量级以内)。如果不一致,说明参数输入或格式有误。
pKa(直接法):
grep "Sum of electronic and thermal Free Energies" phenol_smd_water_opt_freq.log phenoxide_smd_water_opt_freq.log
然后按教程第 8 节的公式计算:ΔG = [G(A⁻) − G(HA)] × 627.509 + (−270.3) kcal/mol,pKa = ΔG / 1.364。苯酚的实验 pKa 约为 10.0。直接法误差常达几个 pKa 单位,这是方法本身的局限,不一定说明计算出错。
氧化电位(TTF,乙腈):
- 从步骤 ①② 的日志中取
Thermal correction to Gibbs Free Energy,从 ③④ 取SCF Done; - G(X) = E③/④ + 热校正①/②,ΔGox = G(TTF•⁺) − G(TTF);
- 换算为 eV(× 27.2114)后,E°(vs SHE) = ΔGox(eV) − 4.28 V(或 4.44 V,需注明采用哪个值);更推荐在同一水平下计算二茂铁,报告相对 Fc⁺/Fc 的电位;
- 检查 TTF•⁺ 的自旋污染:
grep "S\*\*2" redox_potential_cycle_neutral_and_cation.log,<S**2>应接近 0.75。
仓库脚本 python ../../scripts/g16_log_summary.py -h、python ../../scripts/thermo_qrrho.py -h 可以批量提取上述数据。本仓库不附带输出文件,所有数值以你自己的计算为准。
注意事项¶
- Gaussian 的热化学对应 1 atm。溶液中的自由能换算到 1 mol/L 时,每个溶质加 1.89 kcal/mol(298.15 K)。pKa 直接法中 HA 和 A⁻ 的校正相互抵消,H⁺ 的值已包含该校正;氧化还原过程两边溶质个数相同,校正也相互抵消。
custom_solvent_generic_read.gjf第二步的分子说明只有一行0 1(结构取自 chk),后面空一行,然后是 PCM 参数段,段末再空一行。空行写错是最常见的读入错误。- SMD 自定义溶剂的 7 个参数全部必需,并且都必须写成实数。
SurfaceTensionAtInterface的单位是 cal mol⁻¹ Å⁻²(1 dyn/cm = 1.4393 cal mol⁻¹ Å⁻²)。 %nprocshared=8、%mem=8GB与run_solvation.sh中的申请(8 核、10G)配套。