產生Gaussian的IRC和SCAN任務每個點的波函數文件的工具:IRCsplit和SCANsplit
產生Gaussian的IRC和SCAN任務每個點的波函數文件的工具:IRCsplit和SCANsplit
文/Sobereva @北京科音
First release: 2013-Sep-9 Last update: 2019-Mar-21
將Gaussian產生的IRC路徑或SCAN任務(特指剛性掃描,后同)當中每個點的波函數文件導出,從而通過Multiwfn等程序進行分析,對于研究反應過程中電子結構的變化是十分有益的。以前寫過一個帖子介紹怎么實現這一點,見《自寫Link生成Gaussian的IRC任務中每個點的波函數文件》(http://www.shanxitv.org/85),并介紹了應用實例,見《制作動畫分析電子結構特征》(http://www.shanxitv.org/86)。之前介紹的通過非標準路徑+自寫link的方法生成每個點的wfn文件雖然可以避免在每個點的結構下重新做一遍單點計算,但是實現過程對于初學者來說過于復雜,得自行編譯Gaussian。為了簡化這個過程,這里提供筆者開發的IRCsplit和SCANsplit程序,可以分別將Gaussian的IRC和SCAN任務的每個點的坐標提取出來生成一批新的單點任務文件,全都執行后就有了IRC上所有點的.wfn文件或.chk文件。
本文的一個應用例子見《通過鍵級曲線和ELF/LOL/RDG等值面動畫研究化學反應過程》(http://www.shanxitv.org/200)。
1 處理IRC任務
先介紹怎么處理IRC任務。IRCsplit程序的下載地址為http://www.shanxitv.org/soft/IRCsplit_1.0.3.rar。
壓縮包內IRCsplit.exe是Windows版可執行文件,IRCsplit是Linux版可執行文件。examples目錄下是例子。script里是Windows下和Linux下用于Gaussian任務批量執行和chk->fch批量轉換的小腳本。
下面就用examples下的SiH2+H2反應的IRC任務文件為例來說明用法。
examples\SiH2+H2.out是個普通的IRC任務的輸出文件。Route section部分為
# irc=(maxpoints=20,calcfc,maxcyc=50,stepsize=10) rhf/3-21g
此任務中前后兩個方向實際各走了20個點。(注意,如果maxpoints設得太大,由于可能走到了極小點,實際前后走的IRC點數都可能小于maxpoints。另外注意不要用geom=check關鍵詞,否則輸出信息和平時不符而無法被IRCsplit處理)
用戶必須自己創建一個與這個IRC任務對應的普通單點文件,此文件將被作為模板來由IRCsplit生成新的輸入文件。此文件中%chk不要寫,route section里面只定義理論方法和基組而不寫別的,但可以加上幫助收斂的關鍵詞如vshift。里面的坐標就是過渡態結構的坐標,應當以笛卡爾坐標方式書寫。末尾要空兩行。examples\SiH2+H2_SP.gjf就是與SiH2+H2.out對應的單點文件例子,內容如下。
# rhf/3-21g
IRC test: SIH2+H2 OPTM. AT 3-21G LEVEL (STEP=0.1,POINT NUMBER 1-30)
0 1
Si 0.00000000 0.00000000 0.00000000
H 0.78338953 1.23552312 -0.25085843
H 0.78338953 -1.23552312 -0.25085843
H -0.54807474 0.00000000 1.44193846
H 0.54807474 0.00000000 1.59366154
[空行]
[空行]
啟動IRCsplit,然后依次輸入
examples\SiH2+H2.out
examples\SiH2+H2_SP.gjf
3 //如果輸入1,則生成的Gaussian輸入文件只能用來產生.wfn,輸入2則只能產生.chk,這里輸入3可以讓.wfn和.chk都產生
C:\IRC\Watamote //定義輸出的.wfn和.chk文件的路徑和名稱
(此時屏幕上顯示出當前IRC任務文件里面向前和向后的點分別有多少。)
20,20 //IRC前后方向的點都提取20個,加上TS結構,總共將提取41個結構。假設寫的是8,13,則TS以及離它最近的正向8個點和最近的逆向13個點將被提取。當然,提取的點不能超過實際數目
最后按回車退出。
程序已經在examples目錄下生成了41個Gaussian單點任務的輸入文件,即SiH2+H2_SP0001.gjf、SiH2+H2_SP0002.gjf、SiH2+H2_SP0003.gjf...建議自行隨便打開一個看看內容對不對。編號從0001到0041對應于從IRC的始端經過TS到達末端的過程。
最后,將這些.gjf文件隨便拷貝到某文件夾里,然后用Gaussian批量執行它們即可。可以通過如下方法實現:
(1)如果是Windows系統,把script目錄下的runall.bat拷到那個目錄下,然后雙擊之,就會調用g09來執行此目錄下所有.gjf文件。然后在就生成了C:\IRC\Watamote0001.wfn、C:\IRC\Watamote0002.wfn...以及C:\IRC\Watamote0001.chk、C:\IRC\Watamote0002.chk...如果想把所有這些.chk文件轉換為.fch,就把script目錄下的chk2fch.bat也拷到這個目錄下并雙擊運行。
注意:如果你還沒有對Gaussian運行環境進行配置,應當進入 系統-高級系統設置-環境變量,把Gaussian的目錄添加進用戶的PATH環境變量,并新建GAUSS_EXEDIR環境變量,內容也定義為Gaussian的目錄(如D:\study\g09w)。否則將無法通過命令行調用Gaussian和formchk。
(2)如果是Linux系統,把script下的runall.sh和chk2fch.sh拷到相應目錄下,然后進入此目錄下運行./runall.sh和./chk2fch.sh就可以調用Gaussian運行當前目錄下所有.gjf文件并且調用formchk將.chk都轉換為.fch了。
注意如果用了rcfc關鍵詞,由于過渡態結構的信息不出現在IRC任務的輸出中,因此IRCsplit產生的對應于過渡態結構的.gjf文件將會是空的。請自行處理。
2 處理SCAN任務
SCANsplit的下載地址為http://www.shanxitv.org/soft/SCANsplit_1.0.rar。
SCANsplit的使用方法和IRCsplit幾乎如出一轍,區別僅在于處理的是G09的SCAN任務(注意只支持剛性掃描,不支持柔性掃描)而非IRC任務,因此不再詳述。
操作例子如下,啟動后輸入
examples\H2O2.out //SCAN任務輸出文件
examples\H2O2_SP.gjf //與此體系對應的普通單點文件,將被作為模板
2 //假設只生成chk文件
C:\SCAN\ltwd //chk或wfn文件的輸出路徑
按回車退出。
此時Gaussian輸入文件H2O2_SP0001.gjf,H2O2_SP0002.gjf...就在examples目錄下生成了。按照前述方法批量執行即可。