计算化学公社

 找回密码 Forget password
 注册 Register

关于产生Gaussian的IRC每个点的波函数文件工具的使用问题

查看数: 1586 | 评论数: 12 | 收藏 Add to favorites 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-9-23 22:51

正文摘要:

产生Gaussian的IRC和SCAN任务每个点的波函数文件的工具:IRCsplit和SCANsplit - 思想家公社的门口:量子化学·分子模拟·二次元 (sobereva.com) 我想用大佬的这个工具取出IRC的每个点的结构并生成gjf文件,但是我用 ...

回复 Reply

wjc404 发表于 Post on 2023-10-16 03:22:38
偶然发现,对于GNU-Linux系统上运行的gaussian 16,可以通过魔改l123.exe的方式来以FCHK的形式保存IRC中间点的波函数。
按以下步骤进行:
1. 将g16程序目录下的l123.exe重命名为l123.exec
2. 在g16程序目录下新建一个bash脚本,内容如下,写好后命名为l123.exe并设置权限为700
  1. #!/bin/bash

  2. # get_irc_point_id <g16_log_file> <start_line_no> <back_line_no>
  3. function get_irc_point_id(){
  4.   if [[ $# -ne 3 || ! -f $1 || $2 -ge $3 || $(($2 + 100)) -le $3 ]]; then
  5.     return 1 # file name or line number error
  6.   else
  7.     local PT_NO=$(awk -v stl=$2 -v btl=$3 'sub(/.*OF POINTS ALONG THE PATH =[ ]+/,"") && NR>=stl && NR<=btl { print }' $1)
  8.     local PP_REC=$(awk -v stl=$2 -v btl=$3 '/Point Number:.*Path Number:/ && NR>=stl && NR<=btl { print }' $1)
  9.     local PT_NO_REP=$(echo $PP_REC | sed 's/.*Point Number:[ ]*\([0-9]*\).*/\1/')
  10.     local PATH_NO=$(echo $PP_REC | sed 's/.*Path Number:[ ]*\([0-9]*\).*/\1/')
  11.     if [[ -z "$PT_NO" || ! -z "$(echo "$PT_NO" | sed 's/[0-9]//g')" ]]; then
  12.       return 2 # point number not found
  13.     elif [[ "$PATH_NO" == "1" && $PT_NO != "$PT_NO_REP" ]]; then
  14.       return 3 # point number mismatch
  15.     elif [[ -z "$PATH_NO" || ! -z $(echo "$PATH_NO" | sed 's/[0-9]//g') ]]; then
  16.       return 4 # path number not found
  17.     else
  18.       echo "path${PATH_NO}_pt$PT_NO_REP"
  19.       return 0
  20.     fi
  21.   fi
  22. }

  23. # get_last_irc_point_id <g16_log_file>
  24. # determine whether the last L123 IRC output block in g16_log_file print converged point info.
  25. # if the converged point info is found there, it is printed as "path<xxx>_pt<yyy>";
  26. # otherwise return error code.
  27. function get_last_irc_point_id(){
  28.   if [[ ! -f $1 ]]; then
  29.     return 5
  30.   else
  31.     local TARGET_RANGE=$(awk '/IRC-IRC-IRC-IRC/ {print NR}' $1 | tail -n2)
  32.     get_irc_point_id $1 $TARGET_RANGE
  33.     return $?
  34.   fi
  35. }

  36. prog_path=$(dirname $0)
  37. if [[ ! -f "$IGAUSS_CHK_PATH" || ! -f "$IGAUSS_LOG_PATH" ]]; then
  38.   #echo "IRC wfn backup: checkpoint or log file not set properly from env!"
  39. else
  40.   IGAUSS_CHK_BACKUP_PATH=$IGAUSS_CHK_PATH.bak.chk
  41.   LAST_POINT_ID=$(get_last_irc_point_id $IGAUSS_LOG_PATH)
  42.   if [[ $? -eq 0 && ! -z "$LAST_POINT_ID" ]]; then
  43.     formchk $IGAUSS_CHK_BACKUP_PATH $IGAUSS_CHK_PATH.$LAST_POINT_ID.fchk
  44.   fi
  45.   cp $IGAUSS_CHK_PATH $IGAUSS_CHK_BACKUP_PATH
  46. fi

  47. exec $prog_path/l123.exec $*
复制代码

3. 之后在执行IRC计算任务前,如果设置环境变量IGAUSS_CHK_PATH为任务的chk文件绝对路径,并设置环境变量IGAUSS_LOG_PATH为任务的输出文件绝对路径(均包含文件名),则在IRC运行过程中,会有一系列后缀为pathM_ptN.fchk的文件保存到chk文件所在的文件夹下,它们存了中间各点的SCF波函数,可以用multiwfn查看。关于最后一个点的波函数,可以从原chk中读出,就不额外存了。
LittlePupil 发表于 Post on 2022-9-25 00:52:18
本帖最后由 LittlePupil 于 2022-9-25 02:22 编辑

可能是你使用的集群的管理员限制了普通用户创建目录的权限,可以尝试11L的做法,但最直接的办法还是删掉“G16_Environment”里的第15-17行,并把第18行中的GAUSS_SCRDIR设为当前目录或者当前目录下一个空白的子目录(!!!Warning: If you set GAUSS_SCRDIR to current folder, do remerber to delete the final two rows in "G16_Environment" before running the script, since it requires cleaning $GAUSS_SCRDIR when the job terminates)。

另外不知道你提取出这些点想干什么,虽然可能有点啰嗦,但还是要提醒两点:
如果想产生双杂化级别的波函数,需要写“density”或“out=wfn/wfx”关键词;
不同理论水平下的势能面不同,甚至可能存在明显差异。

最后好奇问一句,既然是用标准基组,为啥不直接写基组名让Gaussian调用?
hebrewsnabla 发表于 Post on 2022-9-24 21:15:03
本帖最后由 hebrewsnabla 于 2022-9-24 21:29 编辑
Jennifer-J 发表于 2022-9-24 21:09
哦哦哦好咧!但是选了2之后生成的gjf文件还是出现上面帖子的报错,我看不出来哪里路径设置的不正确,我配 ...

手动建立一下 /scratch/scr/jiangzy 然后把G16_Environment的最后一行删掉试试。

还不能解决去xdh4gau的issue区(https://github.com/igor-1982/xDH4Gau/issues)提问。或者发邮件给作者(igor_zhangying@fudan.edu.cn)。
Jennifer-J 发表于 Post on 2022-9-24 21:09:59
hebrewsnabla 发表于 2022-9-24 19:47
使用IRCplit的时候会让你选择

应该选2

哦哦哦好咧!但是选了2之后生成的gjf文件还是出现上面帖子的报错,我看不出来哪里路径设置的不正确,我配置了G16_Environment了
hebrewsnabla 发表于 Post on 2022-9-24 19:47:44
Jennifer-J 发表于 2022-9-24 19:15
我已经配置好了G16_Environment,可以跑那些手动写好的输入文件,但是没法跑自动生成的这些文件,麻烦您 ...

使用IRCplit的时候会让你选择
3    //如果输入1,则生成的Gaussian输入文件只能用来产生.wfn,输入2则只能产生.chk,这里输入3可以让.wfn和.chk都产生

应该选2
Jennifer-J 发表于 Post on 2022-9-24 19:15:28
hebrewsnabla 发表于 2022-9-24 19:01
使用方法不对,没有恰当配置Gxx_Environment。可以去xdh4gau的issue区(https://github.com/igor-1982/xD ...

我已经配置好了G16_Environment,可以跑那些手动写好的输入文件,但是没法跑自动生成的这些文件,麻烦您看一下上面的帖子生成的gjf文件的格式有什么问题吗?我发现最后多了一行/home/jiangzy/alco2/xyg3-irc0058.wfn,并且开头关键词多了out=wfn,这是为什么呢?
hebrewsnabla 发表于 Post on 2022-9-24 19:01:29
本帖最后由 hebrewsnabla 于 2022-9-24 19:09 编辑
Jennifer-J 发表于 2022-9-24 17:46
截图上面的报错是生成的gjf文件提交作业之后的报错,我用xDH4Gau来算的这个泛函

使用方法不对,没有恰当配置Gxx_Environment。可以去xdh4gau的issue区(https://github.com/igor-1982/xDH4Gau/issues)提问。
Jennifer-J 发表于 Post on 2022-9-24 17:46:57
hebrewsnabla 发表于 2022-9-24 00:23
你的截图确定是IRCsplit的报错么?看起来不像。

自定义基组是没问题的。

截图上面的报错是生成的gjf文件提交作业之后的报错,我用xDH4Gau来算的这个泛函
Jennifer-J 发表于 Post on 2022-9-24 17:43:40
sobereva 发表于 2022-9-24 00:45
你的截图和IRCsplit根本没直接联系

Gaussian也根本不支持你用的这个泛函

我是想用xDH4Gau来算这个泛函,xDH4Gau的输入文件格式和高斯是一样的,但是我转出来的gjf提交作业之后就是上面截图的报错
wzkchem5 发表于 Post on 2022-9-24 00:46:08
报错信息已经写得很清楚了,第一行就告诉你报错是因为没法创建一个目录。所以显然和自定义基组没关系,而是和路径相关的设置有关系,比如指定用某个目录做临时目录,但是这个目录根本不存在
sobereva 发表于 Post on 2022-9-24 00:45:59
你的截图和IRCsplit根本没直接联系

Gaussian也根本不支持你用的这个泛函
hebrewsnabla 发表于 Post on 2022-9-24 00:23:03
本帖最后由 hebrewsnabla 于 2022-9-24 00:46 编辑

你的截图确定是IRCsplit的报错么?看起来不像。

自定义基组是没问题的。

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

GMT+8, 2024-11-26 11:34 , Processed in 0.171313 second(s), 25 queries , Gzip On.

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