计算化学公社

标题: Gaussian-ORCA-xTB联用进行ONIOM计算 [打印本页]

作者
Author:
winnerwill    时间: 2020-8-18 06:32
标题: Gaussian-ORCA-xTB联用进行ONIOM计算
最近论坛上好多联用,挺有意思的。以下欢迎拍砖。
这里试着把三个常用的三个量化软件进行ONIOM计算。
用的是社长原创的接口,这里稍微修改了点,以适应不同情形。
请看 (, 下载次数 Times of downloads: 305)




试了几个例子,貌似还是可行的。
ONIOM用的不多,不恰当的地方请指出。欢迎试算恰当的实际例子。

用之前先把orca.sh中的orcapath定义为自己的实际路径。
其他照常运行,设置好三个程序正常的运行路径和环境变量。


例子一(Gau-xTB):
%nproc=1
#P ONIOM(B3LYP/def2SVP em=GD3BJ : External="sh ./xtb.sh") Opt(nomicro)



例子二(Gau-ORCA):
%nproc=1
#P ONIOM(External="sh ./orca.sh" : uff) Opt(nomicro)


例子三(Gau-ORCA-xTB三者联用):
%nproc=1
#P ONIOM(External="sh ./orca.sh" : External="sh ./xtb.sh") Opt(nomicro)


例子四(Gaussian非联用):
#P ONIOM(B3LYP/6-31G(d,p):UFF) Opt

以上仅双层的例子,三层的例子应该也可行。

References
http://bbs.keinsci.com/thread-10141-1-1.html
http://bbs.keinsci.com/thread-10106-1-1.html........



作者
Author:
喵星大佬    时间: 2020-8-18 23:44
用ONIOM的情况下调用其他软件计算是用内坐标优化效率比较高,直接调用用的笛卡尔坐标,优化效率很低,貌似以前有人说过这事
作者
Author:
winnerwill    时间: 2020-8-19 20:46
喵星大佬 发表于 2020-8-18 23:44
用ONIOM的情况下调用其他软件计算是用内坐标优化效率比较高,直接调用用的笛卡尔坐标,优化效率很低,貌似 ...

Opt里面不指定坐标类型的话,貌似ONIOM默认转为冗余内坐标计算,应该是推荐的。
不过如果结构优化过程中存在变成三点一线的原子,则可能会失败报错。
我试了指定z-matrix,反而优化效率更低,甚至在默认的优化圈数内无法收敛。

作者
Author:
Alizzard    时间: 2020-11-19 15:00
您好,我试了Orca4.2.1和xTB6.3.2,跑算例出错了。 是不是版本更新了格式对不上了呢?
作者
Author:
winnerwill    时间: 2020-11-19 18:57
Alizzard 发表于 2020-11-19 15:00
您好,我试了Orca4.2.1和xTB6.3.2,跑算例出错了。 是不是版本更新了格式对不上了呢?

你贴下出错信息看看
作者
Author:
winnerwill    时间: 2020-11-24 08:26
Alizzard 发表于 2020-11-19 15:00
您好,我试了Orca4.2.1和xTB6.3.2,跑算例出错了。 是不是版本更新了格式对不上了呢?

刚刚发现在跑xtb的时候罕有的也报错了,不涉及xtb版本变化。
检查了xtb.sh之后,发现加了ulimit -s unlimited和export KMP_STACKSIZE=4000000000(这个数值因系统而已)就正常了。
不知道你问题解决了没有,你可以看看是不是之前的也是这个问题。
估计服务器上有些环境变量不是那么一致。

作者
Author:
Alizzard    时间: 2020-12-2 15:20
winnerwill 发表于 2020-11-24 08:26
刚刚发现在跑xtb的时候罕有的也报错了,不涉及xtb版本变化。
检查了xtb.sh之后,发现加了ulimit -s unli ...

不好意思,前一段时间事情太多,现在才回复
我的g16和xtb(200702)单独计算都没问题。
计算OMION-ggx.gjf的结果如下

normal termination of xtb
abnormal termination of xtb
forrtl: severe (24): end-of-file during read, unit 10, file /home/hemingzhang/soft/gox/examples/xtbout
Image              PC                Routine            Line        Source            
extderi            00000000004075AB  Unknown               Unknown  Unknown
extderi            000000000042D442  Unknown               Unknown  Unknown
extderi            000000000040447A  Unknown               Unknown  Unknown
extderi            00000000004041E2  Unknown               Unknown  Unknown
libc-2.31.so       0000147CF6B200B3  __libc_start_main     Unknown  Unknown
extderi            00000000004040E9  Unknown               Unknown  Unknown
FIO-F-217/formatted read/unit=31/attempt to read past end of file.
File name = '/home/hemingzhang/tmp/Gau-29899.EOu',    formatted, sequential access   record = 1
In source file runexo.f, at line number 22
  /home/hemingzhang/soft/g16/l402.exe() [0x1a28e77]
  /home/hemingzhang/soft/g16/l402.exe() [0x19e2c1f]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c06ff]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c0338]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c626e]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c180e]
  /home/hemingzhang/soft/g16/l402.exe() [0x73751b]
  /home/hemingzhang/soft/g16/l402.exe() [0x51a530]
  /home/hemingzhang/soft/g16/l402.exe() [0x4202e0]
  /home/hemingzhang/soft/g16/l402.exe() [0x416c99]
  /home/hemingzhang/soft/g16/l402.exe() [0x4128a2]
  /home/hemingzhang/soft/g16/l402.exe() [0x4127a4]
  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x14b9dc3750b3]
  /home/hemingzhang/soft/g16/l402.exe() [0x40cee9]
Aborted (core dumped)

[2]+  退出 1                g16 ONIOM-ggx.gjf


看来和xtb版本是无关的 ,应该是extderi 的原因把?
'/home/hemingzhang/tmp/Gau-29899.EOu' 这个文件是个空文件

(还有,算例ONIOm-ggx.gjf中的关键词“  External="sh ./xtb.sh" ”要改成“  External='./xtb.sh' ",才能找到xtb.sh这个脚本)

作者
Author:
winnerwill    时间: 2020-12-2 21:17
Alizzard 发表于 2020-12-2 15:20
不好意思,前一段时间事情太多,现在才回复
我的g16和xtb(200702)单独计算都没问题。
计算OMION-ggx.gj ...

你用的xtb.sh是文件夹里面附带的修改版吗?
运行的Gaussian输出文件末尾是什么内容?
作者
Author:
Alizzard    时间: 2020-12-3 10:41
winnerwill 发表于 2020-12-2 21:17
你用的xtb.sh是文件夹里面附带的修改版吗?
运行的Gaussian输出文件末尾是什么内容?

你好,我用的xtb.sh是解压gox.zip后examples里面的。
Gaussian输出末尾是:
(Enter /home/hemingzhang/soft/g16/l402.exe)
External calculation of energy and first derivatives.
Running external command "./xtb.sh M"
         input file       "/home/hemingzhang/tmp/Gau-57834.EIn"
         output file      "/home/hemingzhang/tmp/Gau-57834.EOu"
         message file     "/home/hemingzhang/tmp/Gau-57834.EMs"
         fchk file        "/home/hemingzhang/tmp/Gau-57834.EFC"
         mat. el file     "/home/hemingzhang/tmp/Gau-57834.EUF"
Generating mol.tmp
Generating mol.xyz via genxyz
Running: xtb mol.xyz --chrg 0 --uhf 0 --grad > xtbout
xtb running finished with Exit code of external program call: 128 !
Extracting data from xtb outputs via extderi


作者
Author:
winnerwill    时间: 2020-12-3 16:14
Alizzard 发表于 2020-12-3 10:41
你好,我用的xtb.sh是解压gox.zip后examples里面的。
Gaussian输出末尾是:
(Enter /home/hemingzhang ...

你试了按我在6L说的改了吗?很可能是这个环境变量的设置问题。
在xtb.sh开头加
export KMP_STACKSIZE=4000000000
ulimit -s unlimited

上面的值看自己的系统决定。
另外如果xtb.sh有可执行权限就可以不用加sh,如果没有就要加上sh

作者
Author:
Alizzard    时间: 2020-12-4 09:14
winnerwill 发表于 2020-12-3 16:14
你试了按我在6L说的改了吗?很可能是这个环境变量的设置问题。
在xtb.sh开头加
export KMP_STACKSIZE= ...

试了,依旧是这个问题

hemingzhang@hemingzhang:~/soft/gox/examples$ g16 ONIOM-ggx.gjf
normal termination of xtb
abnormal termination of xtb
forrtl: severe (24): end-of-file during read, unit 10, file /home/hemingzhang/soft/gox/examples/xtbout
Image              PC                Routine            Line        Source            
extderi            00000000004075AB  Unknown               Unknown  Unknown
extderi            000000000042D442  Unknown               Unknown  Unknown
extderi            000000000040447A  Unknown               Unknown  Unknown
extderi            00000000004041E2  Unknown               Unknown  Unknown
libc-2.31.so       00001513EE4390B3  __libc_start_main     Unknown  Unknown
extderi            00000000004040E9  Unknown               Unknown  Unknown
mv: 无法获取'molden.input' 的文件状态(stat): 没有那个文件或目录
FIO-F-217/formatted read/unit=31/attempt to read past end of file.
File name = '/home/hemingzhang/tmp/Gau-81582.EOu',    formatted, sequential access   record = 1
In source file runexo.f, at line number 22
  /home/hemingzhang/soft/g16/l402.exe() [0x1a28e77]
  /home/hemingzhang/soft/g16/l402.exe() [0x19e2c1f]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c06ff]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c0338]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c626e]
  /home/hemingzhang/soft/g16/l402.exe() [0x19c180e]
  /home/hemingzhang/soft/g16/l402.exe() [0x73751b]
  /home/hemingzhang/soft/g16/l402.exe() [0x51a530]
  /home/hemingzhang/soft/g16/l402.exe() [0x4202e0]
  /home/hemingzhang/soft/g16/l402.exe() [0x416c99]
  /home/hemingzhang/soft/g16/l402.exe() [0x4128a2]
  /home/hemingzhang/soft/g16/l402.exe() [0x4127a4]
  /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x14df47d640b3]
  /home/hemingzhang/soft/g16/l402.exe() [0x40cee9]
Aborted (core dumped)
hemingzhang@hemingzhang:~/soft/gox/examples$



出现了“abnormal termination of xtb”,但我用xtb单独跑ONIOM-ggx这个结构的优化没问题。

gaussian 结果末尾:
(Enter /home/hemingzhang/soft/g16/l402.exe)
External calculation of energy and first derivatives.
Running external command "./xtb.sh M"
         input file       "/home/hemingzhang/tmp/Gau-81582.EIn"
         output file      "/home/hemingzhang/tmp/Gau-81582.EOu"
         message file     "/home/hemingzhang/tmp/Gau-81582.EMs"
         fchk file        "/home/hemingzhang/tmp/Gau-81582.EFC"
         mat. el file     "/home/hemingzhang/tmp/Gau-81582.EUF"
Generating mol.tmp
Generating mol.xyz via genxyz
Running: xtb mol.xyz --chrg 0 --uhf 0 --grad > xtbout
xtb running finished with Exit code of external program call: 128 !
Extracting data from xtb outputs via extderi


作者
Author:
Alizzard    时间: 2020-12-4 09:28
本帖最后由 Alizzard 于 2020-12-4 09:29 编辑
winnerwill 发表于 2020-12-3 16:14
你试了按我在6L说的改了吗?很可能是这个环境变量的设置问题。
在xtb.sh开头加
export KMP_STACKSIZE= ...

我再确认下,是这么加这两行么?

#!/bin/bash
  
#This script was written by Dr. Tian Lu at Beijing Kein Research Center for Natural Sciences (www.keinsci.com)
#Contact: sobereva@sina.com
export KMP_STACKSIZE=4000000
ulimit -s unlimited

if [[ ! -x genxyz ]]; then chmod +x genxyz; fi
if [[ ! -x extderi ]]; then chmod +x extderi; fi

read atoms derivs charge spin < $2

#Create temporary .xyz file
#the element index should be replaced with element name, and the coordinate should be convert to Angstrom
echo "Generating mol.tmp"
cat >> mol.tmp <<EOF
$atoms
……

具体结果见11楼

作者
Author:
winnerwill    时间: 2020-12-5 11:09
Alizzard 发表于 2020-12-4 09:28
我再确认下,是这么加这两行么?

#!/bin/bash

你这个看来还有问题是跟高斯有关的。你进入运行目录下看看输入文件行尾符是什么?另外按你之前执行顺序,在执行g16命令之前echo下运行的环境变量,看看有无异常。
作者
Author:
Alizzard    时间: 2020-12-7 09:04
winnerwill 发表于 2020-12-5 11:09
你这个看来还有问题是跟高斯有关的。你进入运行目录下看看输入文件行尾符是什么?另外按你之前执行顺序, ...

确实是跟高斯有关
我用A.01计算算例,没问题,非常丝滑。
用C.01计算算例就不行。
两者直接计算算例的ONIOM2.gjf都没问题。
“进入运行目录下看看输入文件行尾符是什么”我没明白这是什么意思。
作者
Author:
winnerwill    时间: 2020-12-7 11:09
Alizzard 发表于 2020-12-7 09:04
确实是跟高斯有关
我用A.01计算算例,没问题,非常丝滑。
用C.01计算算例就不行。

就是看看输入文件是不是在传输后不是Linux格式而是Windows格式的行尾符.
比如进入运行目录,执行以下命令: file *
看看输出结果是什么.或者在可以显示行尾符的Notepad++之类显示看看.
作者
Author:
Alizzard    时间: 2020-12-7 11:43
winnerwill 发表于 2020-12-7 11:09
就是看看输入文件是不是在传输后不是Linux格式而是Windows格式的行尾符.
比如进入运行目录,执行以下命令 ...

哦,我看了 ONIOM-ggx.gjf在我这是ASCII的。应该是高斯16C版本问题,或者是我这个安装包有问题。
作者
Author:
Alizzard    时间: 2020-12-7 11:50
winnerwill 发表于 2020-12-7 11:09
就是看看输入文件是不是在传输后不是Linux格式而是Windows格式的行尾符.
比如进入运行目录,执行以下命令 ...

哦,我试过用dos2unix转了ONIOM-ggx。gjf这个算例,ASCII格式。在G16A可以跑,在G16C就不行。
我用unix2dos转成ASCII CRLF,用G16A也可以顺利跑通。
应该是高斯问题,或者我这个G16C安装包就有问题。

作者
Author:
tkaray    时间: 2021-10-13 11:44
感谢分享!
最近在用这个脚本尝试计算一个5000原子的体系的时候,L层的scf要占据很久的时间(甚至有不收敛的情况),才想到可以备份restart文件的方法。
因为gaussian在计算的时候会调用xtb交替计算H层和L层,所以如果在脚本中添加restart_bak2和restart_bak文件,分别由移动restart_bak和restart得到,再在计算前将restart_bak2移动为restart,就可以在再次调用时读取上次的结果作为初猜了。这样看起来能节省很多时间。
xtb的restart默认是打开的,有问题读取失败大概也不会boom(未测试过)。
作者
Author:
abcdedg    时间: 2022-1-2 11:49
winnerwill 发表于 2020-12-3 16:14
你试了按我在6L说的改了吗?很可能是这个环境变量的设置问题。
在xtb.sh开头加
export KMP_STACKSIZE= ...

xtb和gaussian连用,我发现原子个数变多之后(比如大于80个),计算会自动终止,最后一行输出:
Extracting data from xtb outputs via extderi

按您的方法,将ulimit -s unlimited和export KMP_STACKSIZE=4000000000加入到提交脚本中(batch文件),问题解决。感谢!
作者
Author:
michaelm    时间: 2022-11-17 04:50
请问大家,这种联用,可以使用EmbedCharge吗?
作者
Author:
winnerwill    时间: 2022-11-18 08:59
michaelm 发表于 2022-11-17 04:50
请问大家,这种联用,可以使用EmbedCharge吗?

可以。ONIOM后头加=EmbedCharge。比如:
#P ONIOM(External="sh ./orca.sh" : External="sh ./xtb.sh")=EmbedCharge Opt(nomicro)

作者
Author:
michaelm    时间: 2022-11-18 13:10
embedcharge的话,charge应该从底层级计算里提取,作为点电荷加入到高层级计算里,对吧?我没看到代码里有这个内容呀。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3