Gaussian 相关能与受力收敛
用实际CISD、CCSD默认参数和Conver=10对照,讲清SCF、相关求解和能量差分的关系。
阅读本篇目录
下载23个条件的完整输入、原生数值摘录和绘图脚本,在新目录解压后先查看已有结果:
bash run.sh
得到 analysis/ 与 figures/。这一步不调用Gaussian,使用现有ASE 3.29 Python环境中的NumPy、Matplotlib分析和绘图。
需要重算时先准备自己的Gaussian环境:
yskit gaussian-init
按Gaussian输入与提交的CPU作业流程准备脚本,将作业执行命令改为 bash run.sh compute。已经获得CPU作业资源时,可在另一份新解压目录直接执行:
bash run.sh compute
程序依次运行23份原生输入、23次formchk,再从自己的 work/ 分析和画图。不要在客户登录终端启动正式计算。已有 work/analysis/figures 时请另解压一份;只有 work 而没有分析/图目录时可用 bash run.sh analyze 继续后处理。
软件为Gaussian 16 C.01 AVX厂商预编译CPU版本,按用户独立初始化,没有公共Gaussian module;本例没有自编译器/MPI配置可供套用。每份参考输入1线程、1GB,采用整节点模板时按实际分配与运行安排统一设置线程/内存。本例不作为GPU或Intel Xeon 8173M节点的性能数据。
1. SCF收敛与相关步骤收敛分别设置#
SCF=Tight提高参考SCF的收敛要求,不能代替CCSD、CISD等相关步骤自己的阈值。本例保持相同水几何、6-31G(d)、电荷多重度和微小位移,只比较默认相关收敛与显式 Conver=10。
2. CISD默认与显式收敛输入#
实际默认条件 inputs/cisd-default-force-0/input.gjf:
%nprocshared=1
%mem=1GB
%chk=result.chk
#p CISD/6-31G(d) Force SCF=Tight NoSymm
Water correlation/composite practical cisd-force-0
0 1
O 0.000000000000 0.000000000000 0.000000000000
H 0.000000000000 0.759061990794 0.587728588833
H 0.000000000000 -0.759061990794 0.587728588833
显式条件 inputs/cisd-force-0/input.gjf:
%nprocshared=1
%mem=1GB
%chk=result.chk
#p CISD(Conver=10)/6-31G(d) Force SCF=Tight NoSymm
Water correlation/composite practical cisd-force-0
0 1
O 0.000000000000 0.000000000000 0.000000000000
H 0.000000000000 0.759061990794 0.587728588833
H 0.000000000000 -0.759061990794 0.587728588833
关键变化是方法括号中的 Conver=10。它提高本方法相关步骤的收敛要求;具体迭代指标仍以该方法原生输出为准,不把这个数字当成所有软件/所有求解器通用的绝对能量阈值。
3. CCSD的完整输入#
inputs/ccsd-force-0/input.gjf:
%nprocshared=1
%mem=1GB
%chk=result.chk
#p CCSD(Conver=10)/6-31G(d) Force SCF=Tight NoSymm
Water correlation/composite practical ccsd-force-0
0 1
O 0.000000000000 0.000000000000 0.000000000000
H 0.000000000000 0.759061990794 0.587728588833
H 0.000000000000 -0.759061990794 0.587728588833
包内同时保留默认CCSD条件和两种CCSD(T)单点条件。所有对照都是真实计算,不把默认结果覆盖掉后只展示一条更漂亮的曲线。
需要单独跑一份输入时,在已经分配的CPU资源中:
cd inputs/cisd-force-0
mkdir -p scratch
export GAUSS_SCRDIR="$PWD/scratch"
g16 < input.gjf > output.log
formchk result.chk result.fchk
4. 对目标量检查,而不是只看正常结束#
每个条件都另算左右两个微小位移的电子能量,与中心 Force 作业的解析力比较。步长为0.0001 Å,表中均为H1-y方向:
| 方法/相关设置 | 原生受力 eV/Å | 能量差分 eV/Å | 绝对差 eV/Å |
|---|---|---|---|
| CCSD/Conver=10 | 0.374131257 | 0.374131603 | 3.454e-07 |
| CCSD/默认 | 0.374131145 | 0.374134901 | 3.756e-06 |
| CISD/Conver=10 | 0.254948023 | 0.254940027 | 7.996e-06 |
| CISD/默认 | 0.254947897 | 0.254850856 | 9.704e-05 |

默认CISD这里约9.7×10⁻⁵ eV/Å的差,显式设置后约8.0×10⁻⁶ eV/Å;CCSD也得到更一致的差分。这里只说明同一个小体系的数值影响,不表示默认参数在任何任务里都不够用,更不表示所有体系都必须照抄同一套阈值。
微小位移差分会把能量末位差放大。因此需要检查力、频率或小能差时,应同时考虑SCF、相关步骤与差分步长。正式任务用自己的目标量判断参数是否足够稳定。
5. 提取数据时保留足够位数#
head analysis/forces.csv
grep 'Total Energy' reference/cisd-force-0/native-fields.fchk.txt
grep 'Cluster Energy' reference/cisd-force-0/native-fields.fchk.txt
这里的参考文件只是原生字段摘录,数值保持原位数。日志末尾归档字符串常比正式能量行位数少,不宜拿低精度归档值做很小步长的差分。自己的 work/*/result.fchk 则是完整formchk结果。
最简单的完整操作仍是先 bash run.sh查看已有结果,在已分配CPU作业中用 bash run.sh compute重算,再读 analysis/forces.csv 和高清图。相关方法与基组选择见后HF能量与梯度。