• 在Gaussian中對不同能量區間分批計算激發態

    在Gaussian中對不同能量區間分批計算激發態

    文/Sobereva @北京科音   2016-Sep-23


    1 激發態的分批計算


    從Gaussian09的后期版本開始,包括D.01、E.01,對CIS、TD、TDA激發態計算增加了設定能量下限關鍵詞DEmin。比如TD(nstates=50,DEmin=5329),則程序只會計算出激發能高于5329/1000=5.329eV的50個激發態。

    DEmin最大的實際用處就是補算激發態。比如對一個大分子,想計算UV-Vis光譜,一開始設了nstates=50,結果發現態數算少了,模擬出的光譜的波長下限不夠,比如只計算到了300nm的地方,但還想要240~300nm的區段,可能再加估摸50個態才夠。這時候不必重新算100個態,更省時的做法是先打開之前的輸出文件看看最高的激發能,比如最高的是4.1213eV,就寫一個新的輸入文件,里面用TD(nstates=50,DEmin=4122) guess=read。這里4122即4.122eV,是比之前算的最高激發能高一絲的值。guess=read讀取之前的chk用來省下重新做一遍基態SCF的時間。

    有人認為一次算一部分激發態,總耗時比起一次算一大批激發態更省時間。最近一個西方的Multiwfn用戶就這么干,他算一個很大的體系的UV-Vis光譜,要算500個態,他覺得一次算這么多吃不消,于是分成5批,以上述接力方式每次算100個態。至于這種做法是否真能節約時間,我做了一下測試,機子是Intel雙路16核2.6G,64GB機子。

    第一個測試體系比較小,是含30個原子的共軛體系,TD-PBE1PBE/6-311G*。一次性算150個態耗時為17m37s。而以接力方式每次算50個態,耗時為:
    第一次50個態:6min54
    第二次50個態(用了guess=read):7min39
    第三次50個態(用了guess=read):8min48
    可見總耗時反倒還高于一次性算150個態。值得注意的是,算越高能量區間耗時越多,因為算DEmin以上的態的時候實際上并非完全忽略掉DEmin下面的態,只不過TD迭代求解過程利用了一些技巧,雖然不用管下面的那些態的死活從而節省了迭代到收斂的時間,但不代表能夠完全忽略掉它們。

    第二個測試體系是胡蘿卜素,含有96個原子,TD-M062X/6-31G*一次性算200個態耗時為2h51m54s,而以接力方式每次算100個態,耗時為:
    第一次100個態:1h7m23s
    第二次100個態(用了guess=read):1h26m12s
    可見總耗時確實比一次算200個態低,但只低了一點。

    限于時間和條件,筆者沒有做更多測試,上述測試看到接力方式計算可能導致耗時比一次性計算更高也可能更低,這必定和體系、接力方式有關系。筆者不排除像那個Multiwfn用戶一樣對巨大體系分5批算100態確實比一次性算500個態耗時更低的可能。

    這種接力方式得到的所有的態的能量,和一次性計算得到的相對比,通過上述測試體系并未發現有任何差異,所以用DEmin得到的結果是安全的。


    2 用Multiwfn對分批計算的情況繪制總光譜圖


    以上述接力方式計算激發態由于會有多個輸出文件,沒法直接用gview繪制成完整的UV-Vis光譜圖(或ECD圖),而通過十分靈活的Multiwfn則可以解決這個問題。沒用過Multiwfn畫光譜圖的讀者先看看《使用Multiwfn繪制紅外、拉曼、UV-Vis、ECD和VCD光譜圖》(http://www.shanxitv.org/224)。

    我們就拿前面第一個測試體系為例。首先載入第一次算50個態的Gaussian輸出文件,進主功能11,選UV-Vis,然后選-2 Export transition data to plain text file將激發能和振子強度都導出到當前目錄下transinfo.txt中。然后將此文件改名為1.txt。此時里面內容如下
        50     2
           3.097200       0.884800       0.666667
           3.944900       0.000000       0.666667
           4.220900       0.200600       0.666667
           4.381800       0.051000       0.666667
           4.451200       0.000100       0.666667
           4.455700       0.151000       0.666667
    ...[略]
    含義在Multiwfn手冊3.13.2節介紹了。50代表此文件里記錄了50個態,后面的2代表此文件里對每個態同時記錄了激發能、振子強度、FWHM。

    之后再載入第二次算50個態的Gaussian輸出文件,還是如上步驟得到transinfo.txt,改名為2.txt。之后再對第三次算50個態的輸出文件也這么干,得到3.txt。

    之后,把2.txt和3.txt的第一行都去掉,然后把2.txt和3.txt的內容按順序復制到1.txt的末尾。再把1.txt第一行里的50改成當前文件里的態數,即150。然后保存文件。此時1.txt就含有所有激發態信息了,可以用Multiwfn繪制150態合在一起的光譜圖了。

    啟動Multiwfn,載入1.txt,然后按照一般的繪制UV-Vis光譜圖的操作,看到的光譜就和一次性算150個態的時候完全相同了。
    久久精品国产99久久香蕉