• 使用Multiwfn通過LOBA方法計算氧化態

    使用Multiwfn通過LOBA方法計算氧化態

    文/Sobereva @北京科音

    First release: 2017-Feb-22   Last update: 2019-May-10
     

    1 原理


    討論化學體系中的原子,特別是配合物中的金屬的時候經常用到氧化態(oxidation state)這個概念。這是完全人為的概念,不是可觀測的。用氧化態這個概念時相當于假定所有鍵都是純粹的離子鍵,電子在原子間轉移量是精確的整數。顯然,這個假定對絕大多數情況都是極為糟糕的。懂量子化學的人不愛用氧化態這個虛構的概念,因為原子電荷能明顯能更真實客觀地描述原子在化學體系中的實際帶電狀態。但氧化態這個概念不能說完全沒用,它對于將物質進行分類、歸屬、類比還是比較有益的。

    要注意原子電荷和氧化態根本沒有對應關系。雖然原子電荷的計算方法多種多樣,見《原子電荷計算方法的對比》(http://www.whxb.pku.edu.cn/CN/abstract/abstract27818.shtml)中的介紹,但沒有任何一種原子電荷計算方法的結果能與氧化態直接聯系起來,因為氧化態是把電荷轉移顯著人為夸大后的產物。比如OsO4大家都公認Os的氧化態是8(一般將O的氧化態當做-2然后根據體系凈電荷來判斷其余原子的氧化態),但是在B3LYP結合6-31G*和SDD計算的時候,幾種方式算的Os的原子電荷值Mulliken=1.762、NPA=1.476、Hirshfeld=0.872、ADCH=0.939、AIM=2.540都遠小于氧化態。實際中也往往會碰到這樣的情形:兩個配合物中,過渡金屬的原子電荷只相差零點幾,但按照經驗判斷的氧化態卻相差個位數。所以不要妄圖通過原子電荷判斷氧化態。

    有些人提出了一些通過波函數分析來計算氧化態的方式,使得氧化態不依賴于人為經驗的判斷,而是可以根據一定規則確切地算出來:
    (1) Inorg. Chem., 50, 10259 (2011)、Polyhedron, 114, 128 (2016)
    (2) Phys. Chem. Chem. Phys., 11, 11297 (2009)
    (3) J. Chem. Theory Comput., 11, 1501 (2015)
    其中(2)的方法稱作localized orbital bonding analysis (LOBA),是所有三種方法里最簡單、最容易實現的。Multiwfn從3.3.9版開始已經支持這種方法,在下面會結合實例介紹。Multiwfn程序可以在http://www.shanxitv.org/multiwfn上免費下載,不熟悉Multiwfn的人建議看看《Multiwfn入門tips》(http://www.shanxitv.org/167)。

    LOBA方法原理很簡單,思路很易懂:首先將MO轉化為定域化軌道(LMO),然后依次計算各個LMO中的原子成份,若某原子對這個LMO的貢獻值大于指定閾值(如50%),就認為這個LMO的電子完全歸屬于此原子。最后將原子的核電荷數減去歸屬到它上面的電子數即是其氧化態。

    獲得定域化軌道的方式很多,LOBA原文里表示結果對于所用的定域化方法并不敏感。一般就用Multiwfn軌道定域化模塊默認的Pipek-Mezey方法做定域化就行了,而且只需要將占據軌道部分做定域化就夠了,記得此時絕對不能帶彌散函數。詳細信息可以看《Multiwfn的軌道定域化功能的使用以及與NBO、AdNDP分析的對比》(http://www.shanxitv.org/380)。你也可以讓量化程序用自帶的定域化方法,產生包含定域化軌道的記錄基函數信息的文件(如.fch、.molden)。

    LOBA方法用的閾值有一定含糊性,多數情況用50%就行,但如果結果覺得詭異,可以適當調大再嘗試,比如60%、70%。對于LOBA方法很適用的情形,感興趣的原子的氧化態并不會隨著閾值的這種程度的改變發生變化。如果結果對閾值特別敏感,則暗示LOBA方法并不適用于判斷此原子的氧化態。

    Multiwfn的LOBA功能計算原子對LMO的貢獻的時候用的是Hirshfeld方法,此方法比較穩健。詳見《談談軌道成份的計算方法》(http://www.shanxitv.org/131)中的介紹。

    2 實例

    下面的例子用到的fch文件和對應的.gjf文件都在這個文件包中:LOBA.rar

    2.1 [Fe(CN)6]3-

    這是很典型的氫氰酸根陰離子與鐵陽離子形成的配合物。我們用B3LYP泛函,對Fe用SDD贗勢基組,對配體用6-311G*基組對其優化。雖然這是陰離子體系,但用3-zeta基組完全足夠合理描述波函數,并不需要非得加彌散,而且用Pipek-Mezey定域化時有彌散函數的話結果也會很不好。

    啟動Multiwfn,輸入
    Fe(CN)6_3-.fch   //Gaussian輸出的chk文件轉化成的fch文件
    19   //軌道定域化
    1   //只對占據軌道做定域化,這對LOBA分析夠了
    此時Multiwfn把定域化后的軌道導出到了當前目錄下的new.fch,然后自動載入之,此時內存里的軌道已經是定域化軌道了,可以開始做LOBA分析了。接著輸入
    8   //軌道成分分析
    100   //LOBA方法計算氧化態
    50   //判斷軌道歸屬的閾值用50%
    結果如下
    Oxidation state of atom   1(Fe) :  3
    Oxidation state of atom   2(C ) :  2
    Oxidation state of atom   3(C ) :  2
    Oxidation state of atom   4(C ) :  2
    Oxidation state of atom   5(C ) :  2
    Oxidation state of atom   6(C ) :  2
    Oxidation state of atom   7(C ) :  2
    Oxidation state of atom   8(N ) : -3
    Oxidation state of atom   9(N ) : -3
    Oxidation state of atom  10(N ) : -3
    Oxidation state of atom  11(N ) : -3
    Oxidation state of atom  12(N ) : -3
    Oxidation state of atom  13(N ) : -3
    The sum of oxidation states:  -3

    可見,氧化態總和為-3,正好對應體系的凈電荷。Fe的氧化態為3,十分合理。N的電負性比C大,所以氧化態是負值(-3),C是正值(+2),也很合理。
     

    2.2 二茂鐵

    啟動Multiwfn,載入Ferrocene.fch,一切操作同上一節,也用50%判斷閾值,結果如下:
    Oxidation state of atom   1(C ) :  2
    Oxidation state of atom   2(C ) :  2
    Oxidation state of atom   3(C ) :  2
    Oxidation state of atom   4(H ) :  1
    Oxidation state of atom   5(H ) :  1
    Oxidation state of atom   6(Fe) :  2
    Oxidation state of atom   7(C ) :  2
    Oxidation state of atom   8(C ) :  2
    Oxidation state of atom   9(H ) :  1
    Oxidation state of atom  10(H ) :  1
    Oxidation state of atom  11(H ) :  1
    Oxidation state of atom  12(C ) :  2
    Oxidation state of atom  13(C ) :  2
    Oxidation state of atom  14(C ) :  2
    Oxidation state of atom  15(C ) :  2
    Oxidation state of atom  16(C ) :  2
    Oxidation state of atom  17(H ) :  1
    Oxidation state of atom  18(H ) :  1
    Oxidation state of atom  19(H ) :  1
    Oxidation state of atom  20(H ) :  1
    Oxidation state of atom  21(H ) :  1
    The sum of oxidation states:  32

    可見結論是Fe的氧化態為+2,這是很合理的。注意LOBA往往不能對體系中的每個原子都給出合理的氧化態,也因此雖然體系凈電荷為0,但這里顯示氧化態總和為32。即便把閾值設為其它值,氧化態總和照樣不會成為應有的0。至于為什么會這樣,思考LOBA的原理很容易理解,因為并非每個LMO都一定會歸屬到某個原子上,比如一個LMO當中A原子貢獻了40%,B原子貢獻了40%,C原子貢獻了20%,那么當閾值設成50%的時候,LMO不會被歸屬到A、B、C中任意一個,因此這個LMO上的電子就廢了。根據經驗,LOBA給出的過渡金屬的氧化態還是合理的。

    做LOBA的時候可以定義片段,LOBA給出的片段的氧化態往往比單個原子的更合理。我們考察茂環的氧化態,在LOBA界面里輸入-1,然后輸入一個茂環對應的原子序號范圍,即輸入1-5,7-11。之后再輸入閾值50看結果,此時輸出信息末尾多了一行:
    Oxidation state of the fragment:  -1
    說明茂環的氧化態是-1,這很合理,兩個茂環以及Fe的氧化態相加恰為整體的凈電荷0。
     

    2.3 順鉑

    文件包里的cisplatin.fch對應的是b3lyp結合6-311G**以及Lanl2TZ(f)贗勢基組計算的順鉑體系(順式二氯二胺合鉑),做LOBA分析操作同前,結果如下
    Oxidation state of atom   1(Pt) :  2
    Oxidation state of atom   2(Cl) : -1
    Oxidation state of atom   3(Cl) : -1
    Oxidation state of atom   4(N ) : -3
    Oxidation state of atom   5(H ) :  1
    Oxidation state of atom   6(H ) :  1
    Oxidation state of atom   7(N ) : -3
    Oxidation state of atom   8(H ) :  1
    Oxidation state of atom   9(H ) :  1
    Oxidation state of atom  10(H ) :  1
    Oxidation state of atom  11(H ) :  1
    The sum of oxidation states:   0

    鉑的氧化態判斷得很合理,是+2,和一般觀念一致,而且隨意把閾值提高一些也不會使得這個結論有所變化。對于NH3,把其中各個原子的氧化態加和,或者作為一個片段來算氧化態,結果都是0,也能說得通。而Cl的氧化態被判斷為-1,也是合理的。
     

    2.4 OsO4

    此體系用B3LYP結合6-311G*和SDD計算,LOBA分析操作同前,還是用50%閾值,結果如下
    Oxidation state of atom   1(O ) : -2
    Oxidation state of atom   2(O ) : -2
    Oxidation state of atom   3(O ) : -2
    Oxidation state of atom   4(O ) : -2
    Oxidation state of atom   5(Os) :  8
    The sum of oxidation states:   0

    氧的氧化態是-2,Os是+8,和化學觀念一致。

    從本文的例子可見,基于Pipek-Mezey定域化軌道+Hirshfeld方法算的軌道成份做LOBA分析,用50%閾值,對于判斷過渡金屬配合物當中過渡金屬的氧化態是合理的,起碼對于本文的例子都表現得很好。

    順帶一提,如果將Multiwfn的settings.ini里的outmedinfo設為1,則LOBA分析時會顯示出各個LMO上的電子都被歸屬到了哪個原子、片段上,結合軌道圖形和軌道成份,對于搞清楚LOBA給出的氧化態本質上是怎么來的很有幫助。

    久久精品国产99久久香蕉