|
今天作者尝试用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行(下文中标">"),指定了匹配输出文件的正则表达式:
- ...
- if (/^ Initial command:/)
- {
- # print "state 1: Anfang eines neuen Jobs";
- close (ICDFILE) ;
- close (PDBFILE) ;
- close (LOGFILE) ;
- $job++ ;
- open (LOGFILE,"> $basename.$job.log") or die ("Die Datei "$basename.$job.log" kann nicht zum Schreiben ge鰂fnet werden: \n$!") ;
- open (PDBFILE,"> $basename.$job.pdb") or die ("Die Datei "$basename.$job.pdb" kann nicht zum Schreiben ge鰂fnet werden: \n$!") ;
- open (ICDFILE,"> $basename.$job.icd-raw") or die ("Die Datei "$basename.$job.icd-raw" kann nicht zum Schreiben ge鰂fnet werden: \n$!") ;
- print LOGFILE ;
- }
- > elsif (/^ Writing AICD file "(.*)"/)
- {
- $aicd_filename = $1 ;
- print "Separate AICD-output in file: ", $aicd_filename, "\n";
- print LOGFILE;
- open (TENSORFILE, $aicd_filename) or die ("Die Datei "$aicd_filename" kann nicht zum Lesen ge鰂fnet werden: \n$!");
- Extrahiere_Gitterpunkte (TENSORFILE, ICDFILE, LOGFILE);
- close TENSORFILE;
- }
- ...
复制代码
于是就将正则表达式相应地改为:
- /^ 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脚本的第二行指定了变量:
- AICD_BaseDir=/blah/blahblah/AICD-2.0.0
复制代码
)。

为了方便大家使用,特将编译完的、更改过的AICD包上传至此,使用方法为下载解压该压缩包后,再
随后添加假名等操作就不再赘述了。这样做之后,该AICD程序应当能正常工作,且同时支持g09和g16的输出文件。
|
评分 Rate
-
查看全部评分 View all ratings
|