巨幅減小Gaussian的TDDFT計算產生的fch文件的尺寸的方法
巨幅減小Gaussian的TDDFT計算產生的fch文件的尺寸的方法
文/Sobereva@北京科音 2023-Feb-7
1 G16 C.01開始TDDFT的fch文件尺寸巨大的問題
Gaussian 16從C.01版開始,對大體系做TDDFT計算得到的chk轉換成的fch文件(Linux下默認為fchk后綴,是一碼事,本文不做區分)尺寸頗大,尤其是算的激發態數目多的時候。例如用Gaussian 16 C.02對C60富勒烯在6-31G*下做TDDFT計算50個激發態,產生的chk文件是1356 MB,formchk轉換出來的fch文件達到1915MB!如果用G16 B.01計算,雖然產生的chk文件也是這么大,但是formchk轉出來的fch只有38MB,僅是G16 C.02版尺寸的一個零頭。之所以兩個版本的formchk轉出來的fch文件尺寸差異這么大,在于從G16 C.01版開始fch文件里額外保存了Excited state densities和G to E trans densities字段,分別記錄激發態密度矩陣和基態到激發態的躍遷密度矩陣。這倆信息對絕大多數用戶沒什么用,而且要用它們的時候還可以隨時用Multiwfn計算出來,見《使用Multiwfn繪制躍遷密度矩陣和電荷轉移矩陣考察電子激發特征》(http://www.shanxitv.org/436)。
巨大的fch文件顯然非常占硬盤,而且網絡傳輸又特別費時間、費流量。為了解決此問題,這里提供兩個解決方法,分別用fchred和Multiwfn程序。
2 fchred程序
我寫的fchred程序的用途是將fch中占空間極大的Excited state densities和G to E trans densities字段去掉,從而減小fch文件的體積。此程序可以在http://www.shanxitv.org/soft/fchred.zip免費下載,帶.exe后綴的是Windows版,不帶后綴的是Linux版。
啟動fchred后,輸入原fch文件的路徑,再輸入新產生的fch文件的路徑,就會開始轉換。對于前面說的G16 C.02做TDDFT算富勒烯的例子,原本的fch文件經過fchred處理后,尺寸從1915MB減小到了38MB,和G16 B.01版得到的fch文件的大小基本一致。
fchred也可以通過命令行使用,比如輸入fchred Liella.fch,就會直接產生轉換完的Liella_new.fch文件到當前目錄下。
3 利用Multiwfn程序減小fch文件尺寸
波函數分析程序Multiwfn(http://www.shanxitv.org/multiwfn)提供了非常豐富的電子激發分析功能,見《Multiwfn支持的電子激發分析方法一覽》(http://www.shanxitv.org/437)。其中有很多功能,比如空穴-電子分析(http://www.shanxitv.org/434)、IFCT分析(http://www.shanxitv.org/433)等,對于Gaussian用戶來說都需要提供fch文件,Multiwfn會從中讀取基函數和軌道信息。大量Gaussian和Multiwfn用戶留著fch文件就是為了做這些分析,以及用Multiwfn看軌道圖像(http://www.shanxitv.org/269),以及做各種依賴于基態波函數的分析。
如果你就是為了上述目的留著fch,可以用Multiwfn載入fch文件之后選擇主功能100的子功能2,再選擇導出fch文件。這樣得到的fch文件里就只保留了對以上目的有用的信息了,其它沒用的字段就全都消失了。前述的G16 C.02算富勒烯TDDFT例子的fch文件在這么處理后,新的fch文件尺寸僅有19MB,比G16 B.01的fch還要小一倍!
對于以上目的,筆者更建議讓Multiwfn轉出來我提出的mwfn格式(https://doi.org/10.26434/chemrxiv-2021-lt04f-v6)的波函數文件,對于在Multiwfn中做分析可以起到和fch同等的用處,而由于mwfn格式更為緊湊,尺寸更小。用Multiwfn載入原fch文件,進入主功能100的子功能2,選擇相應選項就能導出mwfn文件,在Multiwfn讓你選擇在mwfn里導出什么信息時選擇Only export wavefunction就夠了。對于前例,這樣產生的mwfn文件尺寸只有不到13MB,進一步用winrar或7zip壓縮后就只有不到2MB了,尺寸已可以忽略不計(而原本的fch有1915MB之大!)。當一個激發態相關的研究課題搞完后,筆者建議對相關的fch文件都這么處理,能夠巨幅節約硬盤。
別忘了Multiwfn可以方便地通過命令行使用,也可以寫腳本實現用Multiwfn快捷地批處理fch文件,參見《詳談Multiwfn的命令行方式運行和批量運行的方法》(http://www.shanxitv.org/612)。
相對于用Multiwfn,用fchred減小fch文件的唯一一個優點是可以保留其它信息。比如做激發態的振動分析得到了fch文件,如果用Multiwfn處理的話fch里的Hessian矩陣等信息就沒了,之后就沒法用比如sobtop(http://www.shanxitv.org/soft/Sobtop)計算激發態的力場參數了,也沒法用GaussView去觀看振動模式了。