计算化学公社

标题: 求助Gaussian不同操作系统下调用子模块机制有何区别? [打印本页]

作者
Author:
snljty    时间: 2020-5-6 09:36
标题: 求助Gaussian不同操作系统下调用子模块机制有何区别?
指的是Windows版和Linux版。起因是曾经发现在Windows系统下,Linux下常用的计算命令
  1. g16 < input.gjf > output.out
复制代码

用不了,
会在输出下列信息后直接退出,返回值0。
Entering Gaussian System, Link 0=g16
Initial command:
C:\G16W\l1.exe ".\Gau-7396.inp" "no-output-file" /scrdir=".\"


调用的时候只能用
  1. g16 input.gjf output.out
复制代码

这个格式。

这导致了即使在GNU下载一个tee命令,加入PATH,也无法在Windows下用
  1. g16.exe < input.gjf | tee.exe output.out
复制代码
这样的方法把输出从屏幕复制一份到文件,方便监控。
当然这也不是个问题,毕竟Windows下也有g16w.exe这个GUI窗口可以监控。
但是当我尝试写External程序的时候,出现了同样的问题。
这个尝试是用一个g16进程去做几何优化,但是实际计算单点能和受力由另一个g16进程计算提供。这种用法的可能性卢老师在
《DFT-D色散校正的使用》(http://sobereva.com/210)中提过。
但实际上,如果不怕麻烦倒也是有办法让G09与DFT-D3程序直接相结合来进行优化的。在G09当中有个external关键词,可以在Route section中添加诸如external='./dftdopt.sh',这样在优化过程中Gaussian就会试图通过调用外部脚本./dftdopt.sh来得到它传回来的当前坐标下的能量、受力(甚至Hessian矩阵)。而外部脚本自身也可以调用g09。因此,如果我们自行编写这个脚本,让这个脚本读取优化过程中传递出来的当前步的坐标,并调用另一个g09计算出此坐标下的能量和受力(用force关键词),然后再让脚本调用DFT-D3程序算出色散校正的梯度并加到刚才的受力上,就得到了包含DFT-D3色散校正的当前坐标下的受力,再将受力传回给G09的优化进程。这样就等于G09在优化时就带着DFT-D3校正的效果了。但是据我所知没有这样的现成的脚本,自己写的话需要一定水平(难者不会,会者不难)


比如最初的输入文件叫test.gjf,内容如下:
%chk=test.chk
%CPU=0
# Opt=NoMicro External=".\geneGauForce.exe"

Title

0 1
C                  0.00000000    1.39499067    0.00000000
C                 -1.20809735    0.69749533    0.00000000
C                 -1.20809735   -0.69749533    0.00000000
C                  0.00000000   -1.39499067    0.00000000
C                  1.20809735   -0.69749533    0.00000000
C                  1.20809735    0.69749533    0.00000000
H                  0.00000000    2.49460097   -0.00000000
H                 -2.16038781    1.24730049   -0.00000000
H                 -2.16038781   -1.24730049   -0.00000000
H                  0.00000000   -2.49460097   -0.00000000
H                  2.16038781   -1.24730049   -0.00000000
H                  2.16038781    1.24730049   -0.00000000
按照卢老师在《将Gaussian与Grimme的xtb程序联用搜索过渡态、产生IRC、做振动分析》(http://sobereva.com/421)中的提示,用%CPU=0设定了串行计算这个任务,同时Opt加了NoMicro参数避免自动调用内置分子力学算法优化。然后External的geneGauForce.exe是自己写的程序,可以读取External传递给这个程序的第2个参数对应的文件(相关内容看的卢老师上面那篇博文)里面的电荷、自旋多重度、原子序号和坐标等信息,然后用这些新的信息生成一个Gaussian的input文件,用Force关键词计算。
实际运行的时候成功生成了新的Gaussian的input文件,比如叫calcgrad.gjf,内容如下:
# Force B3LYP/def2SVP

Calculates force

0 1
C                  0.00000000    2.63615031    0.00000000
C                  2.28297314    1.31807516    0.00000000
C                  2.28297314   -1.31807516    0.00000000
C                  0.00000000   -2.63615031    0.00000000
C                 -2.28297314   -1.31807516    0.00000000
C                 -2.28297314    1.31807516    0.00000000
H                  0.00000000    4.71411262    0.00000000
H                  4.08254129    2.35705631    0.00000000
H                  4.08254129   -2.35705631    0.00000000
H                  0.00000000   -4.71411262    0.00000000
H                 -4.08254129   -2.35705631    0.00000000
H                 -4.08254129    2.35705631    0.00000000
但是计算的时候和之前一样,calcgrad.out输出只有
Entering Gaussian System, Link 0=g16
Input=calcgrad.gjf
Output=calcgrad.out
Initial command:
C:\G16W\l1.exe ".\Gau-9304.inp" "calcgrad.out" /scrdir=".\"
然后就直接退出了。
请问这两个错误是不是相同的原因,有没有办法可以解决(除了换Linux)。谢谢!

作者
Author:
ene    时间: 2020-5-6 10:09
用wsl就完事了,效率也高
作者
Author:
snljty    时间: 2020-5-6 10:26
本帖最后由 snljty 于 2020-5-6 10:28 编辑
ene 发表于 2020-5-6 10:09
用wsl就完事了,效率也高

最近要写一个接口给完全不会用Linux的人...Linux版我也是在wsl下调试的,,,懒得反复切换系统了。
作者
Author:
ene    时间: 2020-5-6 13:18
snljty 发表于 2020-5-6 10:26
最近要写一个接口给完全不会用Linux的人...Linux版我也是在wsl下调试的,,,懒得反复切换系统了。

这是真难受。。
作者
Author:
冰释之川    时间: 2020-5-6 13:41
我好像看到了snljty酱在整好东西,快开源
作者
Author:
snljty    时间: 2020-5-6 22:34
冰释之川 发表于 2020-5-6 13:41
我好像看到了snljty酱在整好东西,快开源

谢谢冰冰姐鼓励,就是个小接口啦,主要是练习。现在正被Fortran搞的头秃,实在不擅长这个。
要是自己用的脚本我一般都是用python写,但是有一次给别人的时候对方表示不会装python...之后就尽量用编译型语言写了。不过Gaussian的External接口简单快捷方法几乎只能拿Fortran写,拿别的比如C语言写的话输出数据格式D没有标准库函数太麻烦。
作者
Author:
hebrewsnabla    时间: 2020-5-6 22:39
snljty 发表于 2020-5-6 22:34
谢谢冰冰姐鼓励,就是个小接口啦,主要是练习。现在正被Fortran搞的头秃,实在不擅长这个。
要是自己用 ...

py可以打包成exe嘛

不过要是我的话:爱用不用,不会装就别用了
作者
Author:
snljty    时间: 2020-5-6 22:43
hebrewsnabla 发表于 2020-5-6 22:39
py可以打包成exe嘛

不过要是我的话:爱用不用,不会装就别用了

文件太大啊233
作者
Author:
biogon    时间: 2020-11-2 19:27
试了试powershell变下面这样了,干脆都不能出输出文件了,ps里面用tee命令倒是正常运行但是不在屏幕上显示
PS D:\> g16 < h.gjf > h.out
所在位置 行:1 字符: 5
+ g16 < h.gjf > h.out
+     ~
“<”运算符是为将来使用而保留的。
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupported
作者
Author:
lyj714    时间: 2021-4-30 14:57
请问你成功在Windows上通过External来调用bat脚本了么?因为我本来也打算把sob的那个gau_xtb接口移植到Windows上来的,但是我发现间接通过bat脚本来调用其他写好的exe就始终出错,但是如果最开始就不用bat脚本,直接用一个完整的exe一步到位做接口就能够成功。并且我也测试过gaussian安装路径下 examples里面的那些已有的使用bat脚本的例子,好像也不能成功,请问到底是啥问题呢?
作者
Author:
snljty    时间: 2021-4-30 15:28
lyj714 发表于 2021-4-30 14:57
请问你成功在Windows上通过External来调用bat脚本了么?因为我本来也打算把sob的那个gau_xtb接口移植到Wind ...

没成功过呢...




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