• Multiwfn中非常實用的幾何操作和坐標變換功能介紹

    Multiwfn中非常實用的幾何操作和坐標變換功能介紹

    文/Sobereva@北京科音

    First release: 2021-Aug-16   Last update: 2022-Nov-25


    0 前言

    以前在網上答疑時,經常有人問及一些涉及到幾何操作、坐標變換的問題,諸如怎么讓某個鍵平行于笛卡爾軸、怎么讓一個分子平面恰好在XY平面上、怎么讓某個原子恰好處在坐標原點等等。其實解決起來原理上都不難,都是些基礎的幾何知識,自己寫點小程序,或者借助Excel對坐標運算就能搞定,但沒有個現成的、使用簡單的程序來處理還是十分不方便。考慮到很多人的實際需求,筆者在Multiwfn程序(http://www.shanxitv.org/multiwfn)的子功能300里加入了子功能7,在里面提供了豐富的選項專門做這些涉及到修改幾何結構的事情,從而給廣大研究者提供便利,本文將對這個功能進行介紹。這個功能可以滿足日常研究可能涉及的幾乎所有的幾何操作。

    讀者請務必使用目前官網上最新版Multiwfn(不是今天剛下載的就不要認為是最新的)。Multiwfn的相關常識見《Multiwfn入門tips》(http://www.shanxitv.org/167)和《Multiwfn FAQ》(http://www.shanxitv.org/452)。Multiwfn支持的各種包含原子坐標信息的文件都可以作為本文介紹的功能的輸入文件,包括xyz/pdb/gjf/mol/mol2/gro/cif/fch/mwfn/molden/cub/chg/POSCAR等等,格式十分豐富,詳見《詳談Multiwfn支持的輸入文件類型、產生方法以及相互轉換》(http://www.shanxitv.org/379)。


    1 功能介紹

    Multiwfn載入含有結構信息的文件,然后進入主功能300的子功能7后,可以看到一個菜單。>0號的選項用來對當前內存里的原子坐標(有時連同晶胞信息)進行操作,每個操作完成后內存里的結構就會被更新,之后還可以繼續再用另一個選項進一步進行操作,效果會累加。期間可以隨時用選項0查看當前的結構。當所有結構操作都已完成,就可以用選項-1、-2、-3、-4把當前結構分別保存為gjf、pdb、xyz、cif格式。如果當前體系有晶胞信息,晶胞信息也會被寫入這些文件。關于這些文件里晶胞信息是如何記錄的、哪些輸入文件能給Multiwfn提供晶胞信息,參見《使用Multiwfn非常便利地創建CP2K程序的輸入文件》(http://www.shanxitv.org/587)的第2節。在子功能7里還可以隨時用選項-9恢復最初從輸入文件里載入的結構,所以不用擔心某一步誤操作把結構弄廢了。

    注意如果當前輸入文件里有波函數信息,對結構進行涉及旋轉的操作在原理上可能導致很多軌道展開系數發生變化,但目前在Multiwfn的這個功能中并不考慮這一點。

    對坐標操作的選項在下面依次簡要介紹,括號里的數字對應在此功能里的選項序號。這些選項的使用都極為簡單,照著屏幕提示即可正確操作。有些選項在后文會給出具體使用例子。

    (1)對選定的一批原子根據指定的矢量進行平移
    你只需輸入一批原子的序號,然后再輸入一個矢量,這些原子的位置就會按矢量移動。可能有些人以前通過Excel做這種坐標加加減減的事情,明顯用Multiwfn的這個功能方便多了。

    (2)令指定的一批原子的中心在坐標原點
    程序會讓你輸入一批原子的序號,并且選擇中心的類型(幾何中心、質心或者核電荷中心),然后體系會被平移,使得這些原子的中心恰好在坐標原點(0,0,0)位置。

    (3)讓特定片段繞著某個軸旋轉
    程序會讓你輸入一批原子的序號,然后選擇令它們繞著某兩個原子間的連線、繞著某個自定義的矢量,或是繞著X/Y/Z軸旋轉。并且讓你輸入旋轉的度數。對片段旋轉之后程序還會把這個變換所使用旋轉矩陣(rotation matrix)輸出在屏幕上。

    (4)讓特定的片段根據某個旋轉矩陣進行幾何變換
    對一批原子坐標進行旋轉本質上是對坐標矢量應用一個旋轉矩陣,此選項允許你直接定義旋轉矩陣,詳見Multiwfn手冊3.300.7節中對這個選項的介紹。

    (5)讓某個鍵平行于某個矢量或某個笛卡爾軸
    程序會讓你輸入兩個原子序號,整個體系將被旋轉,使得這兩個原子間的連線平行于你輸入的矢量或者平行于某個笛卡爾軸。這個功能極具實際意義,比如常有人研究順著某個鍵的方向加電場考察電場產生的效果,若你讓這個鍵先平行于某笛卡爾軸,設置電場時就方便多了。

    (6)令某個矢量平行于某個矢量或某個笛卡爾軸
    此選項會令整個體系旋轉,使得原先的某個矢量在相應地旋轉后正好平行于另一個矢量或某個笛卡爾軸。這個功能也非常有用,比如以前有人問怎么讓躍遷偶極矩正好平行于X軸以便于考察躍遷偶極矩密度(參考《使用Multiwfn繪制躍遷密度矩陣和電荷轉移矩陣考察電子激發特征》http://www.shanxitv.org/436),利用Multiwfn的話你只需要把躍遷偶極矩矢量輸進去,再選擇X軸,就可以立刻達到目的。

    (7)令體系偶極矩平行于某個矢量或某個笛卡爾軸
    這個選項用上面的選項(6)也可以等效地實現,這里專門提供一個選項是為了更便利。用這個選項的話輸入文件必須包含波函數信息,比如wfn/fch/mwfn/molden等格式,這樣程序才能計算出來偶極矩。讓體系偶極矩平行于某笛卡爾軸很有實際意義,比如第一超極化率在偶極矩方向的分量特別重要,讓偶極矩平行于比如X軸后,就便于用《使用Multiwfn計算(超)極化率密度》(http://www.shanxitv.org/305)里的做法作圖考察其本質。

    (8)令某些原子的最長軸平行于某個矢量或某個笛卡爾軸
    程序會讓你輸入一批原子的序號,然后整個體系會被旋轉,使得選定的這批原子的最長軸(轉動慣量最小的主軸)平行于指定的矢量或某個笛卡爾軸。此功能也很有實用性。比如按照《生成混合組分的磷脂雙層膜結構文件的工具genmixmem》(http://www.shanxitv.org/245)里的做法構建磷脂膜的時候,需要提供整體平行于Z軸的磷脂的結構文件,這就可以用這個選項來得到。

    (9)對一批原子做鏡面反轉
    程序會讓你輸入一批原子的序號,然后可以對它們相對于XY、YZ或XZ平面進行反轉。

    (10)對一批原子做中心反轉
    程序會讓你輸入一批原子的序號,然后它們的X、Y、Z坐標的符號都會被反轉。

    (11)令一批原子對應的平面平行于某個笛卡爾平面
    程序會讓你輸入一批原子的序號,然后會通過最小二乘法得到它們的擬合平面,然后體系會被旋轉,使得這個擬合平面平行于XY或YZ或XZ平面。這個功能很有實際用處,比如《通過Multiwfn繪制等化學屏蔽表面(ICSS)研究芳香性》(http://www.shanxitv.org/216)里介紹的ICSS_ZZ圖對于考察共軛環的芳香性非常有用,當被考察的環是歪斜的時候,你就可以用這個功能先讓這個環平行于XY平面,之后就能按文中的做法繪制ICSS_ZZ圖了。

    (12)對一批原子的笛卡爾坐標進行比例調節(scale)
    此選項對你指定的一批原子的X或Y或Z坐標乘上指定的系數。顯然系數絕對值小于1會令體系在相應方向上收縮,大于1會令體系膨脹。如果當前體系有晶胞信息,程序還會問你是否對所有晶胞矢量的相應笛卡爾分量也進行相應的比例調節,由此可以實現在某個笛卡爾軸方向上令晶胞壓縮或膨脹。

    (13)重排原子序號
    此選項可以按照以下方式之一對原子序號進行重排。另外還有子選項-1令原子序號順序反轉
    ? 根據X或Y或Z值由小到大進行排序。如果想從大到小排,之后再選一次子選項-1反轉序號即可
    ? 令非氫原子的序號都處在氫原子前面。這有實際用處,比如《使用Multiwfn繪制躍遷密度矩陣和電荷轉移矩陣考察電子激發特征》(http://www.shanxitv.org/436)里繪制原子的躍遷密度矩陣熱圖的時候一般都是忽略氫的,如果先用這個功能把氫的序號都弄到非氫原子后面去再做計算,則躍遷密度矩陣圖的坐標軸上的序號就會和非氫原子序號直接對應
    ? 根據鍵連關系排序。即使得每個孤立的片段內的原子序號是連貫的
    ? 根據元素序號排序,元素序號越大的原子排在越前面。如果你想從小到大排,之后再選一次子選項-1反轉序號即可
    ? 交換兩個原子的序號
    ? 載入一個文本文件,里面包含新的所有原子的序號順序(格式見屏幕上的提示)
    ? 輸入一批原子序號,令這些原子先于其它原子出現

    (15)增加一個原子
    輸入元素以及XYZ坐標,新原子就會被添加作為最后一個原子。

    (16)刪除一批原子
    輸入一批原子序號,它們就會從當前體系中刪除。

    (17)只保留某些原子
    輸入一批原子序號,只有它們會被保留,其它原子會從當前體系中刪除。

    (18)生成隨機位移的結構
    這個選項和其它功能截然不同。此選項不是對當前內存里的結構進行修改,而是產生額外的一批結構并導出為多幀的new.xyz。這批新結構是相對于內存中的結構進行隨機位移來產生的,你需要輸入被位移的一批原子的序號、設置允許在哪些方向上位移、設置隨機位移正態分布的標準偏差,并設置產生多少個新結構。這個選項有許多實際意義,比如你當前體系結構是高對稱的,但你不知道實際極小點結構有沒有這么高的對稱性(若直接用高對稱的初始結構優化,可能優化完了高對稱性還被強行維持住,因此得到虛假的結構),你就可以用這個選項產生隨機位移的結構來破壞對稱性。再比如,有時候遇到幾何優化不收斂或者優化完了有虛頻,或者當前結構算單點SCF不收斂,有一定可能把結構隨機位移一下再計算就碰巧避過了這些問題(盡管屬于撞大運,成功幾率有限)。

    下面幾個選項必須在輸入文件有晶胞信息時才能用。

    (19)對晶胞進行平移復制
    此功能用來構建超胞,程序會讓你輸入在各個方向平移復制的次數。

    (20)令被晶胞截斷的分子保留完整
    我們往往想從分子晶體結構中獲得一個完整的分子用于量子化學計算,但是用諸如GaussView、VESTA等程序打開cif文件后看到的分子往往是被截斷的。在這個功能中Multiwfn會自動對被截斷的片段根據晶胞矢量嘗試各種平移,拼接出完整的分子結構。

    (21)對晶胞矢量和原子坐標按比例調節
    程序會讓你選擇一個晶胞矢量并輸入一個系數,然后這個晶胞矢量會被乘以這個系數,與此同時所有原子坐標在這個晶胞矢量的方向也會進行相應的縮放。利用這個功能可以對晶胞密度進行調節。

    (22)將晶胞外面的原子卷到晶胞里面
    這個功能可以把所有處在晶胞外面的原子卷到當前晶胞內。具體來說,就是對分數坐標處在0~1以外的原子根據晶胞矢量進行平移,使得原子的各個分數坐標都在[0,1]的范圍。

    (23)對體系按照晶胞矢量進行平移特定距離
    這個功能可以讓整個體系沿著各個晶軸的方向移動特定距離。程序會讓你依次輸入在三個方向移動的距離,數值可正可負。移動完之后往往會有原子露在晶胞外面,此時程序會提示,也可以在選項0里肉眼查看情況。如果想把露出來的部分卷回另一頭,接著用選項22再處理一下即可。

    (24)平移體系以令特定部分居中
    程序會讓你輸入一批原子序號,然后整個體系會被平移,使得選擇的這部分的原子的幾何中心移動到晶胞的中心。有的時候我們想讓感興趣的區域正好處在盒子中央便于考察,此時這個功能就派上用場了。移動后有可能有原子露在晶胞外面,此時程序會提示,也可以在選項0里肉眼查看情況。如果想把露出來的部分卷回另一頭,接著用選項22再處理一下即可。

    (25)產生中心分子+相鄰分子的團簇結構
    在研究分子晶體當中的分子間相互作用時,往往需要摳出來一個團簇,包括一個中心分子和與它緊挨著的一批分子。用這個功能可以極為方便地實現這一點。程序會讓你輸入一個原子序號,再輸入一個閾值,然后這個原子所在的整個分子,以及與這個分子最近鄰的一批分子,都會被提取出來。而且當前團簇結構中中心分子的原子序號會在屏幕上顯示出來。之后可以在選項0里肉眼觀察一下提取出的團簇,沒問題就可以保存結構文件了。判斷哪些分子是臨近分子所用規則是:如果周圍某個分子與中心分子最近距離小于相應兩個原子的范德華半徑和乘以你設的閾值,則這個分子就會被提取。通常閾值用1.2,如果設得更大,比如1.5,可能摳出來的簇會包含距離中心分子更遠一些的分子。Multiwfn手冊4.12.6節有具體例子。注意,用這個功能的時候應直接用原胞,不要自己刻意把體系先弄成超胞,否則耗時會劇增!

    (26)設置晶胞信息
    在此選項里可以重新定義晶胞信息,既可以輸入晶胞的平移矢量,也可以輸入晶胞的邊長和夾角。

    (27)添加邊界原子
    一般晶體結構文件中對位于晶胞邊界(壁面、棱上、頂點)上的原子只會記錄非重復的部分,而鏡像邊界原子不會被記錄,但這在可視化的時候會顯得邊界上的原子是缺失的,不好看。雖然Multiwfn的主功能0里可以選Other settings - Toggle showing all boundary atoms讓所有邊界原子都顯示,但是VMD等可視化程序沒有這個功能。利用這個選項,可以把鏡像邊界原子直接加入體系,之后導出結構文件后,在VMD等程序里也可以直接看到所有邊界原子了。

    (28)交換坐標軸
    晶胞有三個矢量a、b、c,此功能可以實現其中指定的兩個的交換。比如選擇b和c交換,則b和c的邊長會相互交換,與此同時所有原子的分數坐標的b分量和c分量將相互交換。這個功能在很多時候很有用。比如體系是二維材料而且當前是正交晶胞,界面原本平行于XY而垂直于Z,如果你想讓界面平行于YZ而垂直于X,就可以在此功能里選擇令a和c之間交換。


    2 使用例子

    看了上述介紹,并照著Multiwfn特別貼心的屏幕上的提示就已經能毫無困難地使用Multiwfn的幾何操作功能了。不過為了避免有的讀者有理解障礙,下面還是對部分上述功能給出具體的操作示例,請讀者請舉一反三。


    2.1 對富勒烯-暈苯復合物進行旋轉,然后調節原點位置,并按笛卡爾坐標對原子序號重排

    Multiwfn目錄下的examples\C60_coronene.pdb記錄的結構如下所示

    本例要依次實現以下過程:
    (1)令體系繞Y軸旋轉90度,使得暈苯在上圖的下側,富勒烯在上側
    (2)讓富勒烯的幾何中心處在坐標原點
    (3)讓原子序號按照Z坐標由小到大排序

    現在啟動Multiwfn,依次輸入
    examples\C60_coronene.pdb
    300  //其它功能(Part 3)
    7   //對當前體系做幾何操作
    3  //令選定的原子繞某個矢量或笛卡爾軸旋轉
    [按回車]  //選擇所有原子
    2  //繞Y軸旋轉
    90  //90度

    現在可以看看操作后的結果。選擇選項0,就會看到下圖,和期望的一致

    我們接著做后續的事。點擊圖形窗口右上角的RETURN按鈕關閉后接著輸入
    2  //令一批原子的中心處在原點
    1  //幾何中心
    1-60  //富勒烯的原子序號(技巧:想快速查詢其原子序號的話,可以進入Multiwfn主功能0,菜單欄里選擇Tools - Select fragment,之后觀看圖形窗口里富勒烯的原子序號,輸入它上面任意一個原子序號并點OK,之后程序就會返回給你整個富勒烯分子的原子序號范圍)

    此時屏幕上提示這批原子原先的中心坐標是(-0.001827,0.000252,3.646856) Bohr,顯然Multiwfn會按照(0.001827,-0.000252,-3.646856) Bohr矢量對體系進行平移。

    現在富勒烯的中心已經恰好在(0,0,0)位置了。接著輸入
    13  //對原子重新排序
    3  //按照Z坐標從小到大排序
    -3  //將當前內存里的坐標導出為gjf文件
    [按回車]  //如屏幕上提示所示,會導出為當前目錄下的C60_coronene.gjf

    用GaussView載入C60_coronene.gjf,看到的圖像如下,確實富勒烯中心在坐標原點,而且Z坐標越大的原子序號越大。


    2.2 令共軛環狀分子的最長方向平行于X軸

    http://www.shanxitv.org/attach/610/mobius-m1.mol2是一個共軛環狀分子的結構文件,如下所示。此例要讓這個分子最長的方向平行于X軸。

    啟動Multiwfn然后輸入
    mobius-m1.mol2
    300  //其它功能(Part 3)
    7   //對當前體系做幾何操作
    8  //令一批原子的最長軸平行于某個矢量或某個笛卡爾軸
    [按回車]  //用體系所有原子定義最長軸方向
    1  //令最長軸朝向X軸

    進入選項0,可看到下圖,確實達到我們的目的了,體系最長的方向已精準地平行于X軸。


    2.3 令雙氧水的O-H鍵平行于X軸

    筆者之前寫過《讓指定化學鍵平行于笛卡爾坐標軸的方法》(http://www.shanxitv.org/177),里面用VMD的腳本和命令行來實現令某個鍵平行于某個笛卡爾軸,對于不熟悉VMD的人來說用起來略麻煩。現在有了Multiwfn的幾何操作功能,就完全用不著VMD來實現了。

    examples\H2O2.fch是雙氧水的fch文件,此例讓里面的O3-H4鍵平行于X軸。啟動Multiwfn然后輸入
    examples\H2O2.fch
    300  //其它功能(Part 3)
    7   //對當前體系做幾何操作
    5  //令某個鍵平行于某個矢量或某個笛卡爾軸
    3,4  //兩個原子的序號
    1  //平行于X軸

    然后進入選項0觀看結構,如下所示,確實O3-H4鍵平行于X軸了


    2.4 令BaeP的多環芳烴部分平行于XY平面

    BaeP是筆者在Struct. Chem., 25, 1521 (2014)中研究過的一個致癌的分子,它的某個構型的結構文件是http://www.shanxitv.org/attach/610/BaeP-D3.pdb。此例我們要讓它的多環芳烴部分的碳原子(下圖綠色部分)平行于XY平面。

    啟動Multiwfn然后輸入
    BaeP-D3.pdb
    300  //其它功能(Part 3)
    7   //對當前體系做幾何操作
    11  //令一批原子對應的平面平行于某個笛卡爾平面
    4-5,7-20  //多環芳烴部分的原子序號。回車之后會在屏幕上看到這些原子擬合平面的擬合誤差,以及擬合平面的法向量
    1  //XY平面

    之后在選項0里觀看時發現確實多環芳烴部分已經精確平行于XY平面了


    2.5 令乙酰胺的偶極矩平行于Y軸

    Multiwfn目錄下的examples\CH3CONH2.fch是乙酰胺的Gaussian計算出的fch文件,此例我們讓這個分子的偶極矩精確平行于Y軸。啟動Multiwfn然后輸入
    examples\CH3CONH2.fch
    300  //其它功能(Part 3)
    7  //對當前體系做幾何操作
    7  //令偶極矩平行于某個矢量或笛卡爾軸。按回車后從屏幕上可以看到Multiwfn計算出的偶極矩矢量為(0.043151,-1.425485,0.174879) a.u.
    2  //平行于Y軸

    然后在選項0里看到的圖如下圖右側所示,下圖左側的藍色箭頭是GaussView載入這個fch文件后在Results - Charge Distribution里顯示的偶極矩矢量。可見確實在Multiwfn中當前分子的偶極矩方向已經精確朝向Y軸了

    順帶一提,如果你覺得當前體系的方向和你期望的正好相反,即你希望偶極矩方向是朝著Y軸負方向的,可以輸入
    9  //鏡面反轉
    [按回車]  //選擇整個體系
    3  //相對于XZ平面反轉。這相當于令所有原子Y坐標符號發生了反轉


    2.6 令BODIPY分子的S0->S1激發的躍遷偶極矩指向(1,1,0)方向

    筆者之前寫過《讓體系(躍遷)偶極矩平行于某個笛卡爾軸的方法》(http://www.shanxitv.org/507),當時是利用VMD實現的。現在用Multiwfn來實現方便得多。

    此例演示怎么讓BODIPY分子的S0->S1激發的躍遷偶極矩指向某個特定方向,比如(1,1,0)矢量方向。Multiwfn手冊4.11.11節演示了如何對BODIPY繪制熒光光譜,其中用到了一個文件examples\excit\BODIPY_S1_opt.out,這是Gaussian對BODIPY分子的S1激發態做優化的輸出文件,在第7333行的位置可以看到S1極小點結構下S0->S1躍遷的躍遷偶極矩為(0.6141,-0.2465,0.0124) a.u.。下面我們用Multiwfn對S1極小點結構進行旋轉,從而令這個躍遷偶極矩正好順著(1,1,0)方向。

    把Multiwfn的settings.ini里的iloadGaugeom設為1從而令Multiwfn載入Gaussian輸出文件時會載入里面最后一幀的坐標。然后輸入
    examples\excit\BODIPY_S1_opt.out
    300  //其它功能(Part 3)
    7  //對當前體系做幾何操作
    6  //使某個矢量平行于某個矢量或笛卡爾軸
    0.6141,-0.2465,0.0124  //S0->S1躍遷的躍遷偶極矩矢量
    4  //平行于特定矢量
    1,1,0

    現在內存里的坐標就是我們想要的新坐標了,之后可以導出gjf或結構文件。


    2.7 令C18Br6分子晶體中的分子保持完整

    http://www.shanxitv.org/attach/610/C18Br6.cif是C18Br6分子的晶體結構文件,直接用GaussView打開的話會看到分子幾乎都被晶胞邊界截斷了,如下所示。

    此例我們用Multiwfn令晶胞里的分子保持完整。啟動Multiwfn然后輸入
    C18Br6.cif
    300  //其它功能(Part 3)
    7  //對當前體系做幾何操作
    20  //令被晶胞邊界截斷的分子變完整

    之后進入選項0觀看,并且選Other settings - Toggle showing cell frame把晶胞邊框顯示出來,此時看到下圖,可見分子都已變得完整,晶胞里總共有8個分子。


    2.8 構造黑磷的超胞并調節密度

    http://www.shanxitv.org/attach/610/Phosphorus-black.cif是黑磷的晶體結構文件。在Multiwfn主功能0里進行顯示可看到下圖

    此例演示對黑磷在X、Y方向都擴胞成原先的4倍。啟動Multiwfn然后輸入
    Phosphorus-black.cif
    300  //其它功能(Part 3)
    7  //對當前體系做幾何操作
    19  //平移復制晶胞
    4  //第一個方向(當前正好是X方向)復制為4倍
    4  //第二個方向(當前正好是Y方向)復制為4倍
    1  //第三個方向(當前正好是Z方向)保持不變

    之后進入選項0并顯示晶胞邊框,看到下圖

    再演示一下對第三個晶格矢方向將其長度壓縮為原先的0.7倍并同步調節原子坐標。輸入
    21  //修改晶胞矢量長度以及相應地調節原子坐標
    3  //修改第三個晶胞矢量長度
    0.7  //變為原先的0.7倍

    之后再進入選項0,會看到晶胞的Z方向已經被壓扁了。


    2.9 對C18產生XY平面上隨機位移的一批結構

    此例演示產生一批隨機位移結構的功能,用18碳環(cyclo[18]carbon)作為演示。筆者對18碳環做過大量、全面、系統的研究,匯總見http://www.shanxitv.org/carbon_ring.html。此體系優化后的結構文件為Multiwfn文件包里的examples\C18.xyz,是D9h點群對稱性,在Multiwfn主功能0里顯示的結構如下所示

    此例我們產生此體系在X和Y方向隨機位移的10個結構。啟動Multiwfn然后輸入
    examples\C18.xyz
    300  //其它功能(Part 3)
    7  //對當前體系做幾何操作
    18  //生成一批隨機位移的結構
    a  //對所有原子做隨機位移
    4  //允許在X和Y方向隨機位移
    0.15  //隨機位移的幅度滿足正態分布,這里讓你輸入標準偏差,此例設0.15埃。此值越大相對于原先位置整體位移幅度越大
    10  //產生10幀

    現在在當前目錄下就有了多幀的new.xyz文件。讀者可以自行從xyz文件里提取各個坐標,格式介紹見《談談記錄化學體系結構的xyz文件》(http://www.shanxitv.org/477)。也可以將它載入到VMD里,若將里面所有結構疊加顯示,并用不同顏色區分幀號,就可以看到下圖,可見確實隨機位移只在要求的XY方向上。


    2.10 讓沸石吸附的分子在晶胞中居中

    http://www.shanxitv.org/attach/610/zeolite.cif是里面吸附了一個甲苯分子的沸石,如下圖所示,甲苯部分用綠色高亮顯示了

    由于甲苯在晶胞非常靠下的位置,在很多時候會給分析帶來不便,諸如使用《使用IRI方法圖形化考察化學體系中的化學鍵和弱相互作用》(http://www.shanxitv.org/598)和《使用Multiwfn結合CP2K通過NCI和IGM方法圖形化考察固體和表面的弱相互作用》(http://www.shanxitv.org/588)里的方法進行分析時不便于展示被吸附的分子與它下方的周期鏡像沸石原子間的相互作用。

    為了讓甲苯能處在晶胞中央便于分析考察,在Multiwfn里輸入
    zeolite.cif
    300  //其它功能(Part 3)
    7  //對當前體系做幾何操作
    24  //平移體系以令特定的部分在晶胞中居中
    217-231  //被吸附的分子的原子序號

    此時如屏幕上提示所示,目前有一些原子處在晶胞外部。為了讓這些原子卷回到晶胞里面,接著選選項22。之后進入選項0看到的結構如下,如藍圈所示確實甲苯已處在晶胞中央了。關閉圖形窗口后可以用比如選項-4導出常用的cif格式的文件。


    3 總結

    Multiwfn雖然是波函數分析程序,但也帶了不少其它的和計算化學研究密切相關的實用功能。本文介紹了Multiwfn中的幾何操作功能,里面提供的豐富的選項可以解決量子化學日常研究中遇到的各種幾何操作問題,而且使用非常簡單和靈活,支持的輸入文件格式眾多,給研究者提供了很多便利。Multiwfn的這些功能有的通過VMD程序的命令行也能等效地實現,但使用略微麻煩,對于不懂VMD的人解釋起來也比較費勁。

    如果你想做的幾何操作在Multiwfn的這個功能里無法實現,也可以向筆者反饋,如果筆者覺得有普遍意義的話也會加入到此功能里。

    久久精品国产99久久香蕉