• 使用Multiwfn繪制NBO及相關軌道

    使用Multiwfn繪制NBO及相關軌道

    文/Sobereva @北京科音
    First release: 2012-Apr-4    Last update: 2018-May-24


    1 前言

    NBO程序輸出的軌道包括NBO(自然鍵軌道)、NHO(自然雜化軌道)、NAO(自然原子軌道)、NLMO(自然定域化分子軌道),以及前頭帶P的類型,如PNBO(初自然鍵軌道)。NBO程序輸出的plot文件包含了這些軌道的一切信息。

    可視化這些軌道有很多方法:
    (1)對于Gaussian用戶,可以用pop=saveNBO或pop=saveNLMO將NBO和NLMO軌道寫入chk文件中,再用Gaussview觀看。但是對于其它類型軌道就沒轍了。
    (2)用ChemCraft。這個軟件是收費的,而且我曾發現在基組含有高角動量函數時這個程序給出的圖形是明顯錯誤的。
    (3)用NBOView。這個程序也是收費的,而且界面設計非常落伍,操作不便。
    (4)用Zork編寫的NBO2molden程序將NBO plot文件轉換為Molden的輸入文件,然后用Molden程序去看。然而Molden這個程序我認為很不好用。

    Multiwfn是強大的波函數分析程序,很早就開始支持讀入NBO plot文件來繪制前述各種類型軌道,可以很方便地顯示等值面圖,也能繪制出各種各樣漂亮的平面圖、曲線圖,操作很方便。而且Multiwfn還可以同時繪制兩條軌道,對于分析NBO軌道間重疊并由此討論超共軛很有用。另外,在軌道生成速度上Multiwfn比任何其它可視化程序都要快。由于Multiwfn靈活、高效、免費,而且圖像顯示效果好,在繪制與NBO相關的軌道方面Multiwfn是最佳選擇。本文將介紹如何用Multiwfn繪制NBO軌道,其過程也同樣適用于繪制分子軌道、自然軌道等。在軌道的一般性繪制方面筆者另有文章,里面介紹了很多要點和技巧,強烈建議一看:《使用Multiwfn觀看分子軌道》(http://www.shanxitv.org/269)。

    Multiwfn可以從官網http://www.shanxitv.org/multiwfn下載。入門信息看《Multiwfn入門tips》(http://www.shanxitv.org/167)和《Multiwfn FAQ》(http://www.shanxitv.org/452)。


    2 輸入文件

    這一節介紹一下怎樣產生能夠讓Multiwfn顯示NBO及相關軌道的輸入文件。Gaussian的fch文件和NBO plot文件都可以用作Multiwfn的輸入文件。我強烈不建議基于fch文件來看NBO軌道,在于:(1)如下文所述,此時你需要找NBO輸出信息里的軌道序號和fch里的序號的對應關系,很麻煩 (2)此時的fch文件沒法用于看分子軌道(因為軌道信息被頂替了),且很多Multiwfn中的波函數分析都沒法正常做。

    2.1 使用fch文件

    對于Gaussian用戶,可以在route section里寫上pop=saveNBO或pop=saveNLMO,這樣NBO軌道或NLMO就會分別代替分子軌道儲存在chk文件里。然后用formchk程序將chk文件轉化為fch文件,就可以讀入Multiwfn來看NBO和NLMO了。注意fch文件中的軌道編號和Gaussian的NBO 3.1模塊(L607)顯示的軌道編號通常不一致,因為Gaussian在儲存軌道前會對NBO或NLMO按照能量由低到高進行排序。比如在NBO輸出信息最后顯示
    Reordering of NBOs for storage:     7    8    3    1    2    4    6    5    9   38 ...
    那么就是說明chk/fch文件里的1號軌道對應于NBO7,2號軌道對應NBO8,3號軌道對應NBO3,4號軌道對應NBO1...無論你用gview看這個chk文件,還是用Multiwfn看相應的fch文件,當你選比如第2號軌道,顯示的都是NBO8。

    注意如果你打算用.fch文件來讓Multiwfn繪制平面圖或生成格點數據,那么若你用的是HF或DFT來做的計算,應當用文本編輯器打開.fch文件,在第一行開頭寫上saveNBOene;如果用的是后HF計算并且寫了density關鍵詞,那么第一行開頭應該寫上saveNBOocc。否則在使用.fch文件繪制平面圖或生成軌道波函數格點數據之前,一部分編號靠后的軌道會被自動刪掉而無法選擇。不過,如果你只是想按照下一節那樣通過主功能0來直接觀看各個NBO或NLMO軌道,則沒必要修改fch文件。

    2.2 使用NBO plot文件

    如果想看NBO和NLMO以外的軌道,就只能用NBO plot文件了。做法是在Gaussian輸入文件中加上pop=nboread關鍵詞,在末尾空一行寫上比如$NBO plot file=C:\ltwd\NH2COH $END,用Gaussian運行后就會有一批NBO plot文件NH2COH.31、NH2COH.32 ... NH2COH.41在C:\ltwd下面生成。.31文件儲存的是基函數信息,.32~.40分別儲存的是PNAO/NAO/PNHO/NHO/PNBO/NBO/PNLMO/NLMO/MO的展開系數信息。.41是密度矩陣信息,對繪制軌道沒直接用處。

    如果用的是獨立版本的NBO程序,即GENNBO,比如想在h:\Yuri目錄下生成NBO plot文件的話就將GENNBO輸入文件(.47)開頭的$NBO和$END中間寫上plot file=h:\Yuri\NH2COH然后用GENNBO運行即可。

    本文的例子都是B3LYP/6-31G**下的甲酰胺,Gaussian輸入文件如下
    # B3LYP/6-31G** opt pop=nboread

    test

    0 1
     C                 -0.03549095   -0.45781414    0.00000000
     H                 -0.01702195   -1.52765473    0.00000000
     O                 -1.28606421    0.23570336    0.00000000
     N                  1.07346837    0.20822655    0.00000000
     H                  1.05620762    1.20807757    0.00000000
     H                  1.94799512   -0.27675072    0.00000000

    $NBO plot file=C:\NH2COH $END

    與.fch文件不同的是,NBO plot文件內的軌道編號和實際的NBO(或NLMO、NAO等軌道)的編號是完全一致的。所以選擇軌道的時候不必像使用.fch文件那樣還得麻煩地去查編號轉換表。


    3 繪制軌道等值面圖

    啟動Multiwfn,然后輸入.fch文件或.31文件的路徑。如果用的是后者,程序會讓你再輸入.32~.40文件中的一個,輸入哪個取決于要繪制哪種軌道,比如要看PNHO,就要輸入.34文件的路徑,若要看NBO,就要輸入.37的路徑。假設你先輸入的是C:\Rio_rainbow_gate\RioXLina\NH2COH.31,而.37文件就在這個.31文件所在路徑下,那么直接輸入數字37就可以了,可以免得輸入完整的路徑。

    接下來輸入0就會在文本窗口中輸出所有原子的坐標,并彈出用于觀看分子結構和軌道等值面的窗口,如下所示,圖中顯示的是12號NBO。

    此界面的各個物件的用途稍微玩弄一下就明白了,在手冊3.2節也有詳細說明。右下角是軌道列表,點擊其中一個就會馬上在圖形窗口中顯示相應的等值面,十分方便省事,等值面生成速度也比起Gaussview等程序快得多。注意,如果使用.fch作為輸入文件,如前所述其中軌道序號已經被重排,所以選擇軌道列表中的第X號所顯示的未必是NBO輸出信息中的第X號軌道的等值面。

    從NBO模塊的二階微擾能的分析結果看,NBO 12(N的孤對電子軌道)和NBO 56(C-O的反π鍵)之間有很強的相互作用,這能夠使體系能量下降62.8kcal/mol。像這種情況,同時繪制兩條軌道的圖形來分析它們的相位交疊是很有意義的。為了做這樣的圖,我們先從軌道列表中選12,然后選中Show+Sel. isosur#2復選框(全稱是Show and select isosurface #2),再從列表中選56,這兩條軌道就都顯示出來了,如下所示

    沒有選中Show+Sel. isosur#2復選框時選擇的軌道所產生的等值面被稱為Isosurface #1,選中了此復選框再選的軌道所產生的等值面被稱為Isosurface#2。只有已經出現了Isosurface #1時這個復選框才允許選。如果取消選擇此復選框,則已出現的Isosurface #2將會消失,若再次選中此復選框,之前消失的那個Isosurface #2又會重新出現。

    Isosurface #1的正值和負值部分的等值面用綠色和藍色表示。為了區分,Isosurface #2的正值和負值部分等值面分別用黃綠色和紫色表示。等值面的風格可以通過界面上方Isosur#1 style和Isosur#2 style中的相應選項設定,可選的風格有:不透明面、網、點、不透明面+網這四種,在下個版本中還會加入透明面的風格。不透明面的顏色以及網/點的顏色也都可以通過Isosur#1 style和Isosur#2 style中的相應選項進行設定,程序會讓你輸入R,G,B(紅、綠、藍)分量的值,每個分量值的范圍應在0.0~1.0以內,例如0,1,0就代表綠色、1,1,0就代表黃色。R,G,B值需要輸入兩次,第一次是設定等值面正值部分的顏色,第二次是設定負值部分的顏色,文本框內直接出現的數值是當前R,G,B值。風格和顏色在設定后會立刻在屏幕上生效。

    上面圖中的NBO 12和NBO 56的等值面都是不透明的,分析重疊程度比較困難,將兩個等值面都設為網狀風格后如下所示,交疊區域看起來清晰了。它們之間存在很明顯的交疊,是它們之間二階微擾能很大的主要原因之一。

    實際上,在顯示軌道等值面之前,程序會先計算出一個涵蓋整個分子空間范圍的軌道波函數的格點數據,這個格點數據的格點密度越大,即相同空間范圍內的點數越多,則等值面越精細。為了生成等值面速度比較快,默認的點數并不多。尤其當體系較大時,由于格點密度往往較稀疏,等值面會顯得不夠光滑,可以通過增加格點數來提高等值面顯示效果。方法是選擇窗口上方的Isosur. quality,點擊其中的按鈕后可以輸入所期望的格點數。重新設定格點數之后,目前顯示的等值面都會自動消除,之后再選擇軌道所生成的等值面都會套用剛才輸入的設定。


    4 生成軌道波函數格點文件并用VMD繪圖

    雖然直接用Multiwfn來產生NBO及相關軌道等值面圖一般夠用了,但是為了追求更好的顯示效果且不嫌麻煩,可以借助于更專業的能夠顯示格點數據的程序,這里推薦VMD,可以在http://www.ks.uiuc.edu/Research/vmd/免費下載,本文用的是1.9版。

    這里還是以同時顯示NBO 12和NBO 56的等值面圖為例。首先需要用Multiwfn分別生成NBO 12和NBO 56對應的.cub格點文件。啟動Multiwfn,輸入.fch或NBO plot文件名后依次輸入
    5  //生成格點數據
    4  //軌道波函數
    12  //NBO 12
    2  //中等質量格點數據
    2  //將生成的格點數據保存到當前目錄下MOvalue.cub中。然后我們將此文件改名為NBO12.cub
    0  //返回主界面
    5  //生成格點數據
    4  //軌道波函數
    56  //NBO 56
    2  //中等質量格點數據
    2  //將生成的格點數據保存到當前目錄下MOvalue.cub中。然后我們將此文件改名為NBO56.cub

    現在關閉Multiwfn,啟動VMD,將NBO12.cub和NBO56.cub依次拖進VMD主窗口。選主界面中的Graphics-representations,將新窗口上方的Selected Molecule切換到NBO 12。將已有的那個顯示方式的Drawing Method改為CPK。然后點Create Rep,將新產生的顯示方式的Drawing Method改為Isosurface,Draw改成Wireframe,Show改成Isosurface,Isovalue改為0.05,將Coloring Method改為ColorID并在旁邊選7 Green。然后再以相同的方式建一個顯示方式,但ColorID選0 Blue,Isovalue改為-0.05。這時NBO 12的等值面就出現了。之后在Selected Molecule中切換到NBO56,按照處理NBO 12的方法也通過建立兩個顯示方式來顯示NBO 56的等值面。得到的圖像如下

    在VMD中這兩個軌道的等值面還可以用透明的方式顯示。將前面建立的四個顯示方式中的Material都設為GlassBubble,然后在主界面里面選Graphics-Colors-Display-Background-8 white將背景變為白色,在主界面里選Display-Rendermode-GLSL,就能看到希望的效果。如果想獲得更好效果可以用渲染器(當GLSL無法打開時,也只能通過渲染器才能獲得透明效果)。例如,在主界面的File-Render里面選Tachyon (internal, in-memory rendering)然后點Start Rendering,就會出現下面的圖,重疊區域顯示得相當清楚。

    在Multiwfn里不能同時顯示多于兩條軌道的等值面(因為這種情況一般很少涉及,所以不打算支持)。如果想同時顯示三條及以上軌道的等值面的話,就只能用VMD來實現。方法很簡單,就是將更多的軌道的cub文件拖進VMD里并進行同樣的設置即可,想同時顯示多少條軌道都沒問題。

    下圖是J. Mol. Graph. Model., 59, 31 (2015)文章中作者使用Multiwfn+VMD繪制的NBO軌道圖,體系比上文例子更大,操作過程完全相同。



    5 生成軌道波函數等值線圖

    Multiwfn能夠繪制的平面圖種類很多,包括填色圖、等值線圖、地形圖、梯度線圖、向量場圖。繪制過程很簡單,選項也很靈活,在Multiwfn手冊的4.4節里給出了很多實例。這里只介紹一下如何作同時含有兩個軌道的等值線圖(其它類型的圖只能一次做一個軌道的)。

    這次還是作NBO 12和NBO 56的圖,對于表現它們的交疊情況,最合適的作圖平面應當是垂直于分子面且穿過N和C的那個平面。這個面不是XY/YZ/XZ面之一,也沒法用三個原子坐標來定義。在Multiwfn里定義這個面最好通過指定的三個坐標點來定義。第一個和第二個點的坐標就設為C和N的坐標,而第三個點的坐標設為在C或者N的坐標的基礎上往Z方向稍微移動一點(Z軸垂直于分子平面)。

    啟動Multiwfn,載入.31和.37文件(或載入.fch文件),然后依次輸入
    4  //繪制平面圖
    4  //軌道波函數
    12,56  //兩個NBO軌道的編號。如果只輸入一條軌道的編號,做出來的圖就是一條軌道的
    直接敲回車,用默認的格點設定
    5  //通過輸入三個坐標點來定義作圖平面
    0.000000   0.794089   0.000000  //第一個坐標點,即C的位置。X/Y/Z坐標可以用逗號或空格來分隔,單位是bohr。在進入主功能0的時候屏幕上就會出現各個原子的坐標,可以直接將其拷貝下來粘貼到此處,如果不知道怎么拷貝,可以參見手冊5.4節
    -1.778942  -1.064235   0.000000  //第二個坐標點,即N的位置
    -1.778942  -1.064235   1.000000  //第三個坐標點,是在N的位置的基礎上往Z正方向挪了1 bohr得到的。挪的距離需要反復嘗試找到最佳的,不合適的值會使感興趣的區域不在圖的中央。

    得到的圖是如下這樣的,實線和虛線代表正值和負值部分

    這個圖看起來比較亂,這是因為在默認的等值線設定下,數值比較小的等值線也顯示了出來,然而這些較小數值的等值線的意義并不大。為了讓圖看起來比較清楚,應該刪除一些數值較小的等值線。因此在圖上點鼠標右鍵關閉之,然后輸入
    3  //設定等值線
    5  //刪除一批等值線
    1,4  //刪除1至4號等值線,即分別為0.001, 0.002, 0.004, 0.008的四條
    5  //再刪除一批等值線
    28,31 //刪除28至31號等值線,即分別為-0.001, -0.002, -0.004, -0.008的四條。如果嫌每次作類似的圖都要刪等值線比較麻煩,可以接下來選6來將當前等值線設定保存到指定的外部文本文件里,下次再進入這個設定界面時可以選7來從指定的外部文件中讀入等值線設定
    1  //退出等值線設定界面
    2  //令等值線數值顯示在圖中
    25  //等值線數值的文字大小設為25
    -1  //重新繪制圖像
    此時得到如下圖像,可見絕對值大小低于0.008的等值線都沒了,圖像也變得十分清楚,很方便分析交疊區域。關閉圖像后,可以選0將此圖保存到當前目錄下前綴為DISLIN的png格式的圖形文件中。

    只有與繪圖平面垂直距離小于特定距離的原子的符號才會顯示在圖中,這個距離閾值以及符號大小分別由settings.ini里的disshowlabel和pleatmlabsize參數調節,修改后需重新啟動Multiwfn方可生效。


    6 結合Photoshop同時繪制兩條以上軌道的等值線圖

    個別時候需要分析一個NBO軌道與多個NBO軌道的相互作用,這時可能需要同時繪制三條或更多條的軌道的等值線圖。雖然Multiwfn不直接支持這種情況,但是通過利用Photoshop(以下簡稱ps),可以很容易地實現,而且借助于ps強大的功能,在線條風格上可以更自由地控制。

    這個例子中,我們要將NH2CHO的NBO 4的等值線圖利用ps疊加在上一節得到的NBO 12和NBO 56的等值線圖上。NBO 4是C-N間的σ成鍵軌道。首先,我們先得到只含NBO 4的等值線圖。啟動Multiwfn,載入NBO plot文件然后依次輸入
    4  //繪制平面圖
    4  //軌道波函數
    4  //NBO 4
    2  //等值線圖
    直接敲回車
    5  //通過三個點定義繪圖平面。這三個點的坐標必須和上一節用的一模一樣,只有這樣得到的圖才能精確地疊加到上一節的圖上
    0.000000   0.794089   0.000000
    -1.778942  -1.064235   0.000000
    -1.778942  -1.064235   1.000000
    接下來還是和上一節一樣,進入等值線設定界面,刪掉數值較小的等值線,然后退回到上一級菜單,最后選0將圖片保存到當前目錄下前綴為DISLIN的png格式的圖形文件中。所得圖像如下所示

    現在打開ps準備將這個圖和上一節的圖合并,我這里用的是Photoshop CS2版。先將這兩幅圖都拖進ps里,激活NBO 4的窗口,按Ctrl+A全選并按Ctrl+C復制,切換到NBO 12+NBO 56的窗口中按Ctrl+V粘貼。這時會有兩個圖層,NBO 12+NBO 56的圖層被NBO 4的圖層覆蓋住了,為了能讓前者也同時顯示出來,就必須把NBO 4圖層的白色背景刪掉以變成透明的背景。最便捷的方法就是先確保圖層列表里已經選定了NBO 4的圖層,然后選ps主菜單的"Select"-"Color Range",然后將光標移到圖上(會變成取色器形狀的指針),點一下圖中的白色部分,確認Color Range窗口中的Fuzziness為0,然后點OK,這時NBO 4的圖層的白色背景就都被選中了,按一下鍵盤上的del鍵,背景就透明了,NBO 4、12、56的等值線就同時顯示出來了。在圖上空白處點一下鼠標來取消選擇狀態,就能看到這樣的圖:

    不過,兩條軌道以上等值線同時顯示出來會很亂,所以這里我們把NBO 4的線條弄成彩色,使之明顯一些。方法是在圖層列表中將NBO 12+NBO 56的圖層選為不可見模式(即點一下眼睛的圖標),并確保當前激活的是NBO 4的圖層,然后選"Select"-"Color Range",并且點一下圖中的黑色線條(一次點不準可以多點幾次),然后點OK就將NBO 4的所有黑色線條選中了。之后選ps主菜單的"Edit"-"Fill",Use里面選Color然后選一種顏色,點OK,并在空白處點擊左鍵取消選擇狀態,就會看到黑色線條都變成指定的顏色了。然而坐標軸也變成紫色的了,因此應該刪掉這部分,只讓NBO 12+NBO 56的圖層的黑色坐標軸顯示出來。方法是使用范圍選擇工具將NBO 4的等值線區域選中,然后在主菜單選"Select"-"Inverse",然后按Del鍵。最后,將NBO 12+NBO 56的圖層恢復為可見模式,就能看到下面的效果

    也可以在ps中將等值線加粗使之更鮮明,也就是利用色彩范圍選擇工具選中線條后,然后在圖上點右鍵選Stork,設好顏色和加粗的寬度后,點OK。

    將更多條軌道的等值線圖作在同一張圖上的步驟也是類似的。

    Multiwfn畢竟是一個方便、實用、普適的波函數分析工具,不可能擁有ps的豐富強大的繪圖功能,也不可能面面俱到,能作任何特殊類型的圖滿足所有用戶的要求,否則界面將變得冗雜不堪。而將Multiwfn與ps結合使用,就可以十分靈活地得到許多單獨靠Multiwfn無法輸出的圖,希望讀者看過此例后能夠舉一反三。ps的使用不難,只要稍微掌握一點就能解決很多作圖上的問題。

    久久精品国产99久久香蕉