请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 812|回复: 3

[波函数分析交流] 对AICD包进行修改以使之适用于Gaussian 16

[复制链接]

1

帖子

0

威望

52

eV
积分
53

Level 2 能力者

发表于 2019-6-17 23:58:17 | 显示全部楼层 |阅读模式
今天作者尝试用AICD来读取Gaussian 16的输出文件,但是在输出“Starting AICDextractsh”之后程序就退出了,并没有得到任何.pov文件。换用Gaussian 09则在输出“Starting AICDextractsh”之后便正常工作。看到论坛中 @X教授 也在论坛发布了这个帖子《[波函数分析求助] AICD渲染之后的图片以及读取Gaussian16输出文件问题》,最后没有这个解决问题。

后来分析g16和g09的.log输出文件发现主要区别在于,其中指定了AICD输出文件的那一行的写法不同:g09写作“ Writing AICD file "test.txt"”;而g16则多了一个词语,写作“ Writing AICD formatted file "test.txt"”。正是这多出来的一个词,导致了程序无法正确匹配识别输出文件的名称。把g16的log输出文件那一行中的“formatted ”这个单词去掉后,AICD即可正常运行。

但是为了避免每次输出都要改log文件的麻烦,作者还是尝试修改了AICD程序本身的脚本文件。分析发现在AICD-extract.pl文件中第274行(下文中标">"),指定了匹配输出文件的正则表达式:
  1. ...

  2.   if (/^ Initial command:/)
  3.   {
  4.     # print "state 1: Anfang eines neuen Jobs";
  5.     close (ICDFILE) ;
  6.     close (PDBFILE) ;
  7.     close (LOGFILE) ;
  8.     $job++ ;
  9.     open (LOGFILE,"> $basename.$job.log") or die ("Die Datei "$basename.$job.log" kann nicht zum Schreiben ge鰂fnet werden: \n$!") ;
  10.     open (PDBFILE,"> $basename.$job.pdb") or die ("Die Datei "$basename.$job.pdb" kann nicht zum Schreiben ge鰂fnet werden: \n$!") ;
  11.     open (ICDFILE,"> $basename.$job.icd-raw") or die ("Die Datei "$basename.$job.icd-raw" kann nicht zum Schreiben ge鰂fnet werden: \n$!") ;
  12.     print LOGFILE ;
  13.   }

  14. > elsif (/^ Writing AICD file "(.*)"/)
  15.   {
  16.     $aicd_filename = $1 ;
  17.     print "Separate AICD-output in file: ", $aicd_filename, "\n";
  18.     print LOGFILE;
  19.     open (TENSORFILE, $aicd_filename) or die ("Die Datei "$aicd_filename" kann nicht zum Lesen ge鰂fnet werden: \n$!");
  20.     Extrahiere_Gitterpunkte (TENSORFILE, ICDFILE, LOGFILE);
  21.     close TENSORFILE;
  22.   }

  23. ...
复制代码

于是就将正则表达式相应地改为:

  1. /^ Writing AICD.*?file "(.*)"/
复制代码


则无论是g09还是g16的log文件均可成功匹配。




另外,AICD的编译过程也颇费周折,作者在自己的ubuntu桌面服务器编译出来的AICD,所导出的图片中箭头很杂乱,就像这个帖子《[波函数分析求助] AICD渲染之后的图片以及读取Gaussian16输出文件问题》中描述的一样;在学校超算平台的红帽系统下编译则导出空pov文件,错误信息包含“Error in `AICD-rotate_mol': free(): invalid next size (fast): 0xblahblah”,和这个帖子《[波函数分析交流] 使用AICD 2.0绘制磁感应电流图》9楼用户所描述的类似。

最后的解决方法是采用了sob老师编译完的AICD程序包(参见上个帖子10楼),然后变更存储的程序起始路径。方法很简单,只要cd到程序目录下再运行一次make即可。在已经存在编译完的二进制文件的情况下,是不会重新编译的,而仅会变更存储的程序起始路径(例如在AICD这个shell脚本的第二行指定了变量:
  1. AICD_BaseDir=/blah/blahblah/AICD-2.0.0
复制代码

)。





为了方便大家使用,特将编译完的更改过的AICD包上传至此,使用方法为下载解压该压缩包后,再
  1. cd AICD-2.0.0 && make
复制代码


随后添加假名等操作就不再赘述了。这样做之后,该AICD程序应当能正常工作,且同时支持g09和g16的输出文件。



AICD-2.0.0-modified.tar.gz

418.79 KB, 下载次数: 58

评分

参与人数 6eV +31 收起 理由
snljty + 5 好物!
ABetaCarw + 5 精品内容
ene + 5 👍
wxhwbh + 3 好物!
sobereva + 8
Jasminer + 5 你太可爱

查看全部评分

43

帖子

0

威望

815

eV
积分
858

Level 4 (黑子)

发表于 2019-6-18 09:46:51 | 显示全部楼层
之前编译AICD的时候就各种不顺利,编译出来的程序经常输出0kb渲染文件。和原作者沟通后得知是编译器版本太高的问题(我用的是gcc 4.7)。遂换用gcc 4.4编译就没问题了。
另外作者当时给的程序包除了AICD2.0.0外还有个2.0.1,后者好像是专门对应Gaussian16的。
当时要是能看见楼主的教程可能也不会走这么多弯路了,楼主辛苦!

25

帖子

0

威望

341

eV
积分
366

Level 3 能力者

发表于 2019-8-10 20:33:41 | 显示全部楼层
修改完AICD-extract.pl之后,
虽然没有马上退出但还是没有渲染出来图片,结尾提示
File 'bzyne.T_160000_0.035_0_0_1_Aniso_4.2.Isoober.inc' line 24: Parse Error: No
triangles in triangle mesh.
Fatal error in parser: Cannot parse input.
Render failed
看inc里面的内容是
#declare Isooberflaeche =
mesh
{}

#declare Pfeile =
union
{}
在{}里确实没有任何内容
请问是怎么回事呢

32

帖子

0

威望

201

eV
积分
233

Level 3 能力者

发表于 2019-11-5 22:33:20 | 显示全部楼层
刚发现这软件还有点挑,windows下输出文件的换行符不支持,要用dos2unix转成unix格式。虽然这点应该属于应用软件尝试把哈哈,不过一开始忽略了这件事了,结果输终端出了几行就退出了,也没报错,也没有输出文件。
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2019-11-15 16:56 , Processed in 0.196443 second(s), 28 queries .

快速回复 返回顶部 返回列表