本帖最后由 Stardust0831 于 2026-5-27 05:29 编辑
看到社长的第25届北京科音初级量子化学培训班马上就要开办了,不禁想起自己初学量子化学计算时,也正是通过社长的培训班较快建立了基本概念和实际操作经验。
其中,社长的 gau_xtb 接口对我帮助很大。该接口实现了Gaussian与Grimme的xtb程序联用搜索过渡态、产生IRC、做振动分析,通过比DFT计算便宜2-3个数量级的计算成本,即可完成柔性扫描到TS和IRC的初期摸索。我之前也曾发帖分享过使用柔性扫描与半经验方法辅助搜索有机反应过渡态经验,有一些相关讨论。
原版gau_xtb主要面向 Linux 环境,在集群上使用非常方便。在我经验分享帖发出后,不少同学联系我说组内日常仍然主要在 Windows 上使用 Gaussian/GaussView;即使计算最终放在 Linux 集群上跑,Windows 也常被用作建模、检查结构和提交任务的控制端。通常认为linux高斯的计算效率,尤其是多核场景,是远好于windows版本的;但考虑到在使用接口时,Gaussian主要负责流程控制,实际能量、梯度和 Hessian 由 xTB 计算;且xTB已经有官方支持的windows版。因此,在Windows本地完成这些计算成本较低的初期探索,确实有一定便利性。
基于这一考虑,我参考社长原先的 gau_xtb 思路,用纯 Python 重新实现了一个更容易跨平台使用的版本。这个版本只依赖Python标准库,希望在Windows、Linux和集群环境中都能保持较一致的使用方式。
这是该脚本本体:
gau_xtb.py
(16.93 KB, 下载次数 Times of downloads: 3)
典型调用形式是:
- #P opt(ts,calcfc,noeigen,nomicro) external='python3 /path/to/gau_xtb.py'
复制代码 频率计算可写成:
- #P freq geom=allcheck external='python3 /path/to/gau_xtb.py'
复制代码 脚本接收 Gaussian 传入的参数:
- layer InputFile OutputFile MsgFile FChkFile MatElFile
复制代码 其中主要使用 InputFile 和 OutputFile。InputFile 里包含原子数、请求的导数阶数、电荷、多重度和坐标;OutputFile 则由脚本写回能量、偶极矩、梯度和 Hessian。
常用环境变量包括:
- GAU_XTB_COMMAND=xtb # xTB 可执行程序路径
- GAU_XTB_THREADS=8 # xTB 使用的线程数
- GAU_XTB_GFN=2 # 选择 GFN2-xTB
- GAU_XTB_ARGS="--alpb water" # 额外 xTB 参数
- GAU_XTB_TMPDIR=/tmp # 临时目录
- GAU_XTB_TIMEOUT=600 # 超时时间,单位秒
复制代码 其中GAU_XTB_THREADS会同时设置OMP_NUM_THREADS和MKL_NUM_THREADS,表示xTB程序在计算时的并行核数,而Gaussian 只做流程控制,设1核是合理的,%nproc=1即可。
下面是相关程序的安装方案:
gaussian安装:
见Gaussian的安装方法及运行时的相关问题
xTB安装:
linux版本可以参考社长的帖子。
windows版本可以使用官方预编译好的版本Releases · grimme-lab/xtb · GitHub,考虑到连接github需要特殊姿势,我将本例中的xtb-6.6.1-windows-x86_64版本传上了网盘:https://pan.quark.cn/s/6878020db4f6下载解压后,将xTB程序加入系统环境变量,从左下角的搜索图标,输入环境变量 或 env 点击【编辑账户的环境变量】:
随后编辑变量PATH,加入xTB的bin文件夹所在路径:
并新建一个名为XTBPATH的环境变量,变量值为xTB下share文件夹下的xtb文件夹所在路径:
设置完后,按一系列确定即可。
可以开一个终端,输入:如果有正常版本输出,就说明xTB已经装好了。
python安装:
已有较多教程,此处不再赘述,可以自行查看bing搜索结果。特别的,如果python不在环境变量内,也可根据真实文件所在位置使用绝对路径调用,如:
- external='C:\Users\xxx\AppData\Local\Programs\Python\Python311\python.exe D:\work\bbs\gau_xtb\gau_xtb.py'
复制代码
下面给出一个使用该接口做计算的例子,相应的输入输出文件如下:
gau_xtb_example.zip
(81.77 KB, 下载次数 Times of downloads: 0)
在本例中,输入文件是这样的:
- %chk=D:\work\bbs\gau_xtb\TS.chk
- %nprocshared=1
- #p opt=(calcfc,ts,noeigen,nomicro) external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'
- Title Card Required
- 0 1
- C -1.63584300 -0.21808700 0.18089800
- C -0.31253400 -0.78768400 -0.12991700
- C -0.69293200 0.88701800 -0.24226100
- H -2.44474100 -0.49942200 -0.48067100
- H -1.93454100 -0.16341300 1.21850400
- H -0.17138300 -1.46736000 -0.97247900
- H -0.63822800 1.76626700 0.38321600
- H -0.66552900 1.13166600 -1.29982000
- C 0.66396300 0.00090100 0.49925300
- O 1.89764600 -0.06104200 -0.13643800
- H 2.53733300 0.42770600 0.39491700
- --link1--
- %oldchk=D:\work\bbs\gau_xtb\TS.chk
- %chk=D:\work\bbs\gau_xtb\freq.chk
- %nproc=1
- #P freq geom=allcheck external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'
- --link1--
- %oldchk=D:\work\bbs\gau_xtb\freq.chk
- %chk=D:\work\bbs\gau_xtb\IRC.chk
- %nproc=1
- #P IRC(maxpoints=20,calcfc) geom=allcheck external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'
复制代码 其中,“D:\work\bbs\gau_xtb\”是我本地的这个项目文件所在的文件夹,重复时需要根据真实路径修改。尤其是D:\work\bbs\gau_xtb\gau_xtb.py需要改为改脚本真实所在绝对路径。linux可以用类似/home/stardust0831/work/gau_xtb.py的路径写法。
本例中我使用了--link1--连续运行了TS搜索、freq和IRC三个任务。其中%oldchk表示读取旧有的chk文件,%chk是当前任务产生的chk路径。
计算过程中会有一些窗口出现并消失,这是调用程序的正常现象,无需顾虑。
约1min左右后,该example计算结束,我们使用gview载入输出文件。
可以发现本例使用windows版本高斯已经能优雅的重复出原版gau_xtb接口在linux中的表现。
该项目已同步发到github,欢迎来star:https://github.com/Stardust0831/gau_xtb
如果您在研究中使用了该接口,希望能给本帖加些eV,并注意引用原版接口:
Tian Lu, gau_xtb: A Gaussian interface for xtb code, http://sobereva.com/soft/gau_xtb (accessed month day, year)
笔者能力有限,欢迎批评指正!
游客,本帖隐藏的内容需要积分高于 600 才可浏览,您当前积分为 0
|