计算化学公社

 找回密码 Forget password
 注册 Register
Views: 137|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[Gaussian/gview] 跨平台实现gaussian与xTB程序联用搜索过渡态、产生IRC、做振动分析

[复制链接 Copy URL]

490

帖子

4

威望

3118

eV
积分
3688

Level 5 (御坂)

本帖最后由 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: 5)
典型调用形式是:
  1. #P opt(ts,calcfc,noeigen,nomicro) external='python3 /path/to/gau_xtb.py'
复制代码
频率计算可写成:
  1. #P freq geom=allcheck external='python3 /path/to/gau_xtb.py'
复制代码
脚本接收 Gaussian 传入的参数:
  1. layer InputFile OutputFile MsgFile FChkFile MatElFile
复制代码
其中主要使用 InputFile 和 OutputFile。InputFile 里包含原子数、请求的导数阶数、电荷、多重度和坐标;OutputFile 则由脚本写回能量、偶极矩、梯度和 Hessian。
常用环境变量包括:
  1.   GAU_XTB_COMMAND=xtb        # xTB 可执行程序路径
  2.   GAU_XTB_THREADS=8          # xTB 使用的线程数
  3.   GAU_XTB_GFN=2              # 选择 GFN2-xTB
  4.   GAU_XTB_ARGS="--alpb water" # 额外 xTB 参数
  5.   GAU_XTB_TMPDIR=/tmp        # 临时目录
  6.   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文件夹所在路径:
设置完后,按一系列确定即可。

可以开一个终端,输入:
  1. xtb --version
复制代码
如果有正常版本输出,就说明xTB已经装好了。

python安装:
已有较多教程,此处不再赘述,可以自行查看bing搜索结果。特别的,如果python不在环境变量内,也可根据真实文件所在位置使用绝对路径调用,如:
  1. 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: 1)
在本例中,输入文件是这样的:
  1. %chk=D:\work\bbs\gau_xtb\TS.chk
  2. %nprocshared=1
  3. #p opt=(calcfc,ts,noeigen,nomicro) external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'

  4. Title Card Required

  5. 0 1
  6. C                 -1.63584300   -0.21808700    0.18089800
  7. C                 -0.31253400   -0.78768400   -0.12991700
  8. C                 -0.69293200    0.88701800   -0.24226100
  9. H                 -2.44474100   -0.49942200   -0.48067100
  10. H                 -1.93454100   -0.16341300    1.21850400
  11. H                 -0.17138300   -1.46736000   -0.97247900
  12. H                 -0.63822800    1.76626700    0.38321600
  13. H                 -0.66552900    1.13166600   -1.29982000
  14. C                  0.66396300    0.00090100    0.49925300
  15. O                  1.89764600   -0.06104200   -0.13643800
  16. H                  2.53733300    0.42770600    0.39491700

  17. --link1--
  18. %oldchk=D:\work\bbs\gau_xtb\TS.chk
  19. %chk=D:\work\bbs\gau_xtb\freq.chk
  20. %nproc=1
  21. #P freq geom=allcheck external='python3 D:\work\bbs\gau_xtb\gau_xtb.py'

  22. --link1--
  23. %oldchk=D:\work\bbs\gau_xtb\freq.chk
  24. %chk=D:\work\bbs\gau_xtb\IRC.chk
  25. %nproc=1
  26. #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




评分 Rate

参与人数
Participants 4
威望 +1 eV +15 收起 理由
Reason
SharkYYX2025 + 5 牛!
mizu-bai + 5 とてもいい!
wal + 5
sobereva + 1

查看全部评分 View all ratings

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-5-28 00:24 , Processed in 1.498284 second(s), 26 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list