示例 02:输入文件结构——笛卡尔坐标、Z-matrix、Link1、片段标签与连接表¶
配套教程:第2章 输入文件结构详解
目的¶
用 5 个小输入演示 Gaussian 输入文件的各种写法:
- 完整的 Link 0 / route / title / 电荷多重度 / 笛卡尔坐标;
- Z-matrix 与
Variables:段; --Link1--多步作业,用Geom=Check Guess=Read从 chk 读结构和初猜;- 原子的
(Fragment=n)标签与多片段电荷多重度行; - GaussView 风格的
Geom=Connectivity连接表。
另附一个电子数奇偶校验小脚本 check_charge_mult.py。
文件说明¶
| 文件 | 体系 / 方法 | 知识点 |
|---|---|---|
ethanol_cartesian.gjf |
乙醇,B3LYP-D3(BJ)/6-31G(d) Opt Freq | 笛卡尔坐标的标准输入 |
h2o2_zmatrix.gjf |
H2O2,B3LYP/6-31G(d) Opt | Z-matrix、变量共用(两个 O–H 共用 R1) |
link1_opt_then_sp.gjf |
甲醛,B3LYP-D3(BJ)/def2-SVP Opt Freq → ωB97X-D/def2-TZVP 单点 | --Link1--、Geom=Check、Guess=Read |
fragment_labels_example.gjf |
H2O···NH3 氢键复合物,B3LYP-D3(BJ)/6-31+G(d,p) | (Fragment=n)、0 1 0 1 0 1、Counterpoise=2 |
geom_connectivity_example.gjf |
乙酸,B3LYP-D3(BJ)/6-31G(d) Opt Freq | Geom=Connectivity + 连接表(键级 1.0/2.0) |
check_charge_mult.py |
— | 检查电荷、多重度与电子数奇偶性是否相容(只依赖 Python 标准库) |
初始结构:乙醇、H2O2、甲醛、乙酸取自 G2 数据集的几何(经 ASE 的 ase.build.molecule 获得),H2O···NH3 复合物是手工搭建的近似结构(N···H 约 2.0 Å),均只作为优化或单点的起点。
运行步骤¶
cd Gaussian/examples/02-input-anatomy
# 0) check charge/multiplicity parity of every input (no Gaussian needed)
python check_charge_mult.py *.gjf
# 1) check the route syntax of one input (needs Gaussian's testrt)
testrt "#p B3LYP/6-31G(d) EmpiricalDispersion=GD3BJ Opt Freq Geom=Connectivity"
# 2) run the jobs (each takes seconds to a few minutes on 4 cores)
for f in ethanol_cartesian h2o2_zmatrix link1_opt_then_sp fragment_labels_example geom_connectivity_example; do
g16 < $f.gjf > $f.log
done
# or reuse the helper from example 01:
bash ../01-first-job-h2o/run_g16_local.sh *.gjf
在集群上请改用 Slurm 提交(参考 ../01-first-job-h2o/run_g16_slurm.sh 或第17章的模板)。
预期结果 / 如何检查¶
# every job must end normally
for f in *.log; do echo "$f: $(grep -c 'Normal termination' $f) normal, $(grep -c 'Error termination' $f) error"; done
| 文件 | Normal termination 行数 | 检查点 |
|---|---|---|
ethanol_cartesian.log |
2(Opt + 自动生成的 Freq 步) | grep "Stationary point found";grep "Frequencies --" 第一行不应有负值 |
h2o2_zmatrix.log |
1 | 优化后 O–O 约 1.45–1.47 Å,H–O–O–H 二面角在 110–120° 范围(近似值,请以你的输出为准) |
link1_opt_then_sp.log |
3(Opt、Freq、单点) | 最后一个 SCF Done 是 E(RwB97XD);单点步中没有坐标输入,结构来自 chk |
fragment_labels_example.log |
1 | grep "Counterpoise corrected energy"、grep "BSSE energy"(读法见第14章) |
geom_connectivity_example.log |
2 | 结果应与不写连接表时一致(普通 DFT 计算中连接表基本不起作用) |
grep "SCF Done" link1_opt_then_sp.log | tail -n 1
grep -e "Counterpoise corrected energy" -e "BSSE energy" fragment_labels_example.log
注意事项¶
- 所有输入都以空行结尾,
--Link1--前也有空行。修改时保持这一点。 link1_opt_then_sp.gjf两步的%chk必须同名,第 2 步才能Geom=Check。如果想保留第 1 步的 chk 不被覆盖,可以把第 2 步改成%oldchk=h2co_link1.chk加%chk=h2co_sp_tz.chk,并改用Geom=AllCheck(这时要删掉第 2 步的 title 和0 1行)。- 删除
geom_connectivity_example.gjf的连接表时,必须同时删掉 route 中的Geom=Connectivity。 fragment_labels_example.gjf的几何不是优化结构,只用来演示输入格式。真正的结合能计算要先优化复合物(见第14章)。%mem、%nprocshared按自己的机器和作业申请调整。