• 給def2以ma-方式加彌散函數的Gaussian格式的基組定義文件(含所有def2支持的元素)

    給def2以ma-方式加彌散函數的Gaussian格式的基組定義文件(含所有def2支持的元素)

    文/Sobereva@北京科音

    First release: 2019-Aug-28   Last update: 2019-Oct-11


    def2系列基組非常流行,在筆者的很多博文里都提到、用到,但遺憾的是沒有官方標配的帶彌散函數的版本。之前筆者寫過一篇文章《給ahlrichs的def2系列基組加彌散的方法》(http://www.shanxitv.org/340)介紹了幾種給def2加彌散函數的方法,其中一個是以ma-方式加彌散函數,諸如def2-TZVP以ma-方式加彌散后叫ma-TZVP。在Truhlar課題組的基組網站http://comp.chem.umn.edu/basissets/basis.cgi上直接提供了這些ma-基組的定義,但關鍵缺點是元素不全。原本def2系列是對于除了錒系以及最后一個周期外所有元素都有定義,但那個網站上提供的ma-TZVP.gbs基組文件里甚至連常用的碘都沒有,因此用的時候還得自己去基于def2的定義和ma-規則手寫,比較麻煩,初學者還容易搞錯。而且每當有人問怎么去手動改,如果對方沒基組常識,解釋起來可費勁了。

    為了解決上述問題,筆者寫了個程序,直接基于BSE上的def2系列基組支持的所有元素的定義文件,自動批量按照ma-方式添加彌散函數。這些文件可以在這里下載:http://www.shanxitv.org/attach/509/file.zip。此文件包里比如ma-QZVPP.txt就是def2-QZVPP所有元素按ma-方式加上彌散函數的版本。里面還有個文件def2-ECP.txt,這是所有def2基組共用的贗勢文件,因為def2系列對第五周期開始的元素是贗勢基組。

    基于這個文件包里的文件,用Gaussian使用ma-系列基組可省事了。只要把文件先放到某個目錄,要用的時候用@來include即可。

    下面是一個Windows下計算的例子,用B3LYP-D3(BJ)/ma-TZVP計算水-氟代甲烷的單點。計算前先把ma-TZVP.txt放到C:\下。@代表把后面的文件計算Gaussian之前會被自動展開。

    #p B3LYP/gen em=gd3BJ int=fine
    [空行]
    test
    [空行]
    0 1
     O                  2.21137200   -0.00419200   -0.00194900
     H                  2.78894100   -0.77058600    0.00034800
     H                  2.79813100    0.75514700   -0.00127500
     C                 -0.65861500    0.01454700    0.00490000
     H                 -0.29784800   -0.58761200    0.83720700
     H                 -0.28960200   -0.38738100   -0.93713900
     H                 -0.32683900    1.04530400    0.12361900
     F                 -2.04578600   -0.01206800   -0.00406300
    [空行]
    @C:\ma-TZVP.txt

    由于ma-TZVP.txt里所有元素前頭都有個負號,因此只有當前體系里存在的元素才會自動取.txt里的基組定義,而.txt里定義的其它元素不影響當前計算。

    再看另一個例子,BP86計算順鉑,對所有元素用ma-SVP,對Pt還加了贗勢,因為def2系列對Pt是贗勢基組。計算前先把ma-SVP.txt和def2-ECP.txt放到C:\下。
    #P BP86/genecp int=fine
    [空行]
    b3lyp/def2TZVP opted
    [空行]
    0 1
     Pt                 0.00000000    0.00000000    0.18195700
     Cl                 0.00000000    1.70827400   -1.36819100
     Cl                 0.00000000   -1.70827400   -1.36819100
     N                  0.00000000    1.59755500    1.56108400
     H                 -0.82596600    1.64390200    2.14978600
     H                  0.00000000    2.40772900    0.93575300
     H                  0.82596600    1.64390200    2.14978600
     N                  0.00000000   -1.59755500    1.56108400
     H                 -0.82596600   -1.64390200    2.14978600
     H                  0.00000000   -2.40772900    0.93575300
     H                  0.82596600   -1.64390200    2.14978600
    [空行]
    @C:\ma-SVP.txt
    [空行]
    @C:\def2-ECP.txt

    上例中C:\ma-SVP.txt對體系涉及的所有元素都定義了基組,對Pt而言相當于贗勢基組。C:\def2-ECP.txt是def2系列支持的從第五周期開始的所有元素的贗勢定義,其中自然也包括對Pt的定義。此文件里也是各個元素前頭都有負號,因此定義的元素在當前體系中沒出現也不會報錯。

    在Linux下也可以用引用的方式用,下面還是順鉑的例子。這里/N避免Linux下運行時自動把文件里的內容完整輸出一遍。兩個文件之間這回沒有了空行,因為如果有的話,會導致Pt的贗勢信息沒法被載入。
    [同上...一直到坐標]
    [空行]
    @/sob/ma-SVP.txt/N
    @/sob/def2-ECP.txt/N
    [空行]
    [空行]

    當然了,自己手動把.txt文件里的涉及到的元素的基組、贗勢定義拷出來,按照常規的genecp的格式去定義基組和贗勢也可以正常使用這些ma-基組,但顯然不如靠@來引用基組/贗勢文件省事。如果在看上文時感到有不解之處,參看《詳解Gaussian中混合基組、自定義基組和贗勢基組的輸入》(http://www.shanxitv.org/60)。

    文件包里還有個ma-TZVP(-f).txt,是對def2-TZVP(-f)以ma-方式加彌散函數的版本。def2-TZVP(-f)比def2-TZVP便宜得多,差異在于前者把后者的f極化函數去掉了(對鑭系元素筆者保留了f函數,因為f函數對于La系并非是極化函數,而g極化函數被去掉了)。ma-TZVP(-f)比6-311+G(2d,p)略大一丁點,由于def2系列基組很適合代替Pople系列基組,因此強烈鼓勵將之代替6-311+G(2d,p)使用。順帶一提,由于def2-TZVP(-f)比def-TZVP更大(比如對于碳,前者有兩層d極化而后者只有一層),因此ma-TZVP比起將def-TZVP用ma-方式加彌散函數的版本更貴一些。

    最后,給出筆者構建上面那些ma-的基組定義的程序ma-diffuse:http://www.shanxitv.org/soft/ma-diffuse.rar。里面是Windows版可執行文件,Def2-SVP.gbs是原始的def2-SVP的定義文件,可以作為ma-diffuse的輸入文件。此程序運行時可以由用戶設定最小的s和p指數要除的因子,如果設成3,對應的就是以標準的ma-方式加彌散函數的情況。新產生的基組會輸出到當前目錄下的new.txt。

    PS:筆者之前還有另一個給原有基組加彌散函數的工具,見《給基組以even-tempered方式增加彌散函數的工具adddiffuse》(http://www.shanxitv.org/347)。

    久久精品国产99久久香蕉