计算化学公社

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

[Gaussian/gview] gau_g_xTB:基于社长的gau_xtb 思路扩展的 g-xTB 与溶剂化 Gaussian External 接口

[复制链接 Copy URL]

14

帖子

0

威望

1186

eV
积分
1200

Level 4 (黑子)

本帖最后由 Illuminatia 于 2026-6-27 21:40 编辑

先前用半经验方法辅助寻找反应路径和做高通量计算时,卢天老师的 gau_xtb 给了我很大帮助。它的核心作用是把 Gaussian 和 xTB 接起来:Gaussian 负责优化、频率、过渡态搜索等流程控制,xTB 负责快速提供能量、梯度和 Hessian。这样在正式 DFT 计算之前,可以先用较低成本摸清构型、虚频模式和过渡态附近的大致情况。后来我在使用实验性的 g-xTB 时,遇到了一个实际需求:原版 gau_xtb 主要面向常规 xTB 调用,并没有直接支持我当时使用的 g-xTB 调用方式;同时,溶剂化计算中的相关参数也不方便从 Gaussian External 接口中干净地传递给底层 xTB/g-xTB 程序。实际使用时,脚本路径、临时文件、converter、小工具和服务器环境又很容易混在一起。换一台机器后,常见问题往往不是方法本身,而是接口脚本里残留了旧路径,或者缺少某个转换程序,或者参数没有正确传到底层程序。

所以我在 gau_xtb 思路的基础上,把自己使用的 g-xTB 联动方式整理成了一个相对干净、便于迁移的压缩包:
  1. gau_g_xTB.tar.gz
复制代码
这个包的作用很简单:让 Gaussian 通过 External 接口调用支持 –gxtb 的 xTB/g-xTB 可执行程序,并允许在 Gaussian 输入中比较方便地传递 g-xTB 和溶剂化相关参数。这样在 Gaussian 的 optfreq 和过渡态初筛流程中,可以由 g-xTB 提供能量、梯度和 Hessian。

本包当前按以下版本整理和测试:
  • g-xTB distribution label:v2.0.1
  • 可执行文件报告:xtb version 6.7.1 (26dd68d)
  • 可执行文件编译日期:2026-05-14
  • xtb –help 中确认 –gxtb 选项可用

基本用法
解压后进入目录:
  1. tar -xzf gau_g_xTB.tar.gz
  2. cd gau_g_xTB
复制代码
在目标机器上编译 Gaussian 坐标到 xyz 的转换程序:
  1. scripts/build_genxyz.sh
复制代码
设置 g-xTB 安装目录:
  1. export GXTB_HOME=/path/to/gxtb-install-root
复制代码
默认情况下,脚本会调用:
  1. $GXTB_HOME/bin/xtb
复制代码
因此,这个 xtb 可执行文件需要支持 –gxtb
随后可以先运行自检:
  1. scripts/smoke_check.sh
复制代码
如果只是想查看 wrapper 支持哪些参数,可以运行:
  1. /path/to/gau_g_xTB/xtb.sh –help
复制代码

Gaussian 输入示例
实际 Gaussian 输入中,建议一开始直接写 xtb.sh 的绝对路径,避免被 PATH 问题干扰。后续还是建议使用Environment Modules 方便版本管理。
例如,用 g-xTB COSMO 做结构优化,可以写成:
  1. #p opt external=’/path/to/gau_g_xTB/xtb.sh –parallel 4 –solvent cosmo:ch2cl2’ UGBS nosymm
复制代码
频率计算可写成:
  1. #p freq external=’/path/to/gau_g_xTB/xtb.sh –parallel 4 –solvent cosmo:ch2cl2’ UGBS nosymm
复制代码
过渡态初筛或释放约束后的 TS 优化可写成:
  1. #p opt(ts,calcfc,noeigen,nomicro) external=’/path/to/gau_g_xTB/xtb.sh –parallel 4 –solvent cosmo:ch2cl2’  UGBS nosymm
复制代码
这里的电荷、多重度、坐标和其它 Gaussian 关键词仍然按普通 Gaussian 输入来写。Gaussian 在每一步会告诉外部程序当前需要几阶导数,xtb.sh 内部大致对应为:
  • derivative level 0:调用 –sp
  • derivative level 1:调用 –grad
  • derivative level 2:调用 –hess –grad
在 g-xTB 模式下,如果要修改这个值,可以用 –xtb-arg 把参数直接传给底层 xTB/g-xTB。例如:
  1. –xtb-arg –etemp –xtb-arg 300
复制代码
溶剂化相关参数也可以通过 wrapper 传递到底层程序。当前示例中使用的是:
  1. –solvent cosmo:ch2cl2
复制代码
具体可用的溶剂模型和溶剂名称仍取决于使用者本机安装的 xTB/g-xTB 版本,请以对应版本的 xtb –help 和官方文档为准。

压缩包内容

解压后主要结构如下:
  1. gau_g_xTB/
  2. ├── xtb.sh
  3. ├── extderi.py
  4. ├── README.md
  5. ├── VERSION.md
  6. ├── NOTICE.md
  7. ├── src/
  8. │   ├── genxyz.f90
  9. │   └── extderi.f90
  10. ├── scripts/
  11. │   ├── build_genxyz.sh
  12. │   └── smoke_check.sh
  13. └── examples/
  14. └── …
复制代码

其中:
  • xtb.sh 是 Gaussian 调用的入口;
  • extderi.py 负责把 xTB/g-xTB 的能量、梯度和 Hessian 转成 Gaussian External 需要的输出格式;
  • src/genxyz.f90 和 src/extderi.f90 保留 Fortran converter 源码;
  • examples/ 提供 Gaussian 示例输入;
  • scripts/build_genxyz.sh 用于在目标机器上编译 genxyz;
  • scripts/smoke_check.sh 用于做基本自检;
  • README.md、VERSION.md 和 NOTICE.md 分别记录使用说明、版本信息和来源说明。

作者与来源说明
这个包的出发点来自卢天老师原先的 gau_xtb 思路:利用 Gaussian External 接口,把 Gaussian 的任务流程和 xTB 的快速能量及导数计算接起来。包内 Fortran 版 genxyz / extderi 的 lineage 也归功于 Dr. Tian Lu,Beijing Kein Research Center for Natural Sciences;相应原始注释已保留。

我在此基础上主要针对自己使用 g-xTB 时遇到的问题做了整理和扩展,包括:
  • 增加对实验性 g-xTB 调用方式的支持;
  • 支持从 Gaussian External wrapper 向底层 xTB/g-xTB 传递溶剂化相关参数;
  • 增加 Python 版 extderi.py converter;
  • 补充示例输入、自检脚本和说明文档。

NOTICE.md 中也写明了这些来源和贡献关系。
如果在研究中使用了,请注意引用原版接口:
  1. Tian Lu, gau_xtb: A Gaussian interface for xtb code, http://sobereva.com/soft/gau_xtb (accessed month day, year)
复制代码

使用建议
第一,这个脚本只解决接口问题:也就是 Gaussian 如何把结构和导数需求交给 g-xTB,以及如何把结果读回来。它不保证 g-xTB 本身一定适合某个具体体系。
第二,g-xTB 相关选项和溶剂设置本身仍在发展中,不建议把 wrapper 跑通等同于结果已经可靠。过渡态、虚频、溶剂模型、热化学校正和最终能垒仍然需要按具体体系认真检查。
第三,我更建议把它用于初筛、构型摸索和给后续更高级别计算提供起点,而不是直接把它当成最终能垒计算方案。

如果 Gaussian 报 External 程序输出缺失,可以先看当前作业目录下的:
  1. gau_xtb_command.log
  2. xtbout
  3. xtb.err
复制代码
如果提示 genxyz 不存在或不可执行,通常就是还没有在当前机器上运行:
  1. scripts/build_genxyz.sh
复制代码
如果底层 xTB/g-xTB 报溶剂、参数或 –gxtb 相关错误,建议直接在命令行中先测试对应的 $GXTB_HOME/bin/xtb 是否支持这些选项,再回到 Gaussian External 流程中排查。

笔者能力有限, 写的没有非常优雅,欢迎批评指正。
gau_g_xTB.tar.gz (8.63 KB, 下载次数 Times of downloads: 3)




评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
huangxc82 + 5 好物!

查看全部评分 View all ratings

530

帖子

4

威望

3257

eV
积分
3867

Level 5 (御坂)

2#
发表于 Post on yesterday 21:54 | 只看该作者 Only view this author
本帖最后由 Stardust0831 于 2026-6-27 22:00 编辑

溶剂化参数我是直接改接口脚本里调用xtb部分的命令,加xtb支持的溶剂模型选项。
似乎是相当于把要给xtb的参数放在调用命令的后面避免了侵入性较强的直接改脚本?看起来蛮可行的。
g-xTB对输入输出要求有啥额外特别的地方么,想请教一下您做了哪些额外工作以支持g-XTB呢?g-xTB的可用性现在怎么样,支持解析hessian了嘛?

我之前写过了gau_xTB的python实现,可以在windows和linux等更多的平台实现gaussian和xTB联用,所有的功能也都在同一个文件里实现、无需复制多个文件,跨平台实现gaussian与xTB程序联用搜索过渡态、产生IRC、做振动分析,这个项目的github仓库是开源的,如果g-XTB的参数确有特殊之处,或许可以把这事也推广到这个跨平台版本,我很欢迎外部pr或者明确的需求issue,我们可以一起成为这类开源代码仓库的代码贡献者

14

帖子

0

威望

1186

eV
积分
1200

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on yesterday 22:08 | 只看该作者 Only view this author
Stardust0831 发表于 2026-6-27 21:54
溶剂化参数我是直接改接口脚本里调用xtb部分的命令,加xtb支持的溶剂模型选项。
似乎是相当于把要给xtb的 ...

怎么说呢,实际上就是同时支持的xTB 和新的g-xTB, 实际上用的gau_xTB的那一套原理, 只是parser改成了Python 版 extderi.py. 然后支持直接在“.gjf” 直接添加溶剂化参数

530

帖子

4

威望

3257

eV
积分
3867

Level 5 (御坂)

4#
发表于 Post on yesterday 22:23 | 只看该作者 Only view this author
Illuminatia 发表于 2026-6-27 22:08
怎么说呢,实际上就是同时支持的xTB 和新的g-xTB, 实际上用的gau_xTB的那一套原理, 只是parser改成了Pytho ...

想请教一下是因为g-xTB的输出格式有变化导致旧有接口失效了嘛?我比较好奇您为了支持g-xTB具体做了啥额外工作?

本版积分规则 Credits rule

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

GMT+8, 2026-6-28 00:06 , Processed in 0.256604 second(s), 25 queries , Gzip On.

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