• 讓指定化學鍵平行于笛卡爾坐標軸的方法

    后記:此文用VMD的做法已經沒有意義了,用Multiwfn來實現方便得多!仔細看《Multiwfn中非常實用的幾何操作和坐標變換功能介紹》(http://www.shanxitv.org/610)中的介紹,特別是2.3節的例子。


    讓指定化學鍵平行于笛卡爾坐標軸的方法

    文/Sobereva@北京科音  2013-Jan-27

     

    見到好幾次有人問怎么讓指定的化學鍵平行于某個笛卡爾坐標軸。這里提供一個筆者寫的VMD的Tcl腳本用于實現此目的。雖然也可以在一些分子可視化程序里拖動鼠標旋轉分子來達成此目的,但是那樣做所得坐標并不精確。

    首先啟動VMD,將分子結構文件載入,然后在控制臺里將以下內容拷進去執行

    proc alignbond {ind1 ind2} {
    set atm1 [atomselect top "serial $ind1"]
    set atm2 [atomselect top "serial $ind2"]
    set vecx [expr [$atm2 get x] - [$atm1 get x]]
    set vecy [expr [$atm2 get y] - [$atm1 get y]]
    set vecz [expr [$atm2 get z] - [$atm1 get z]]
    set sel [atomselect top all]
    $sel move [transvecinv "$vecx $vecy $vecz"]
    }

    之后,比如想讓4,9號原子對應的鍵平行于X軸,就在控制臺輸入alignbond 4 9,效果在圖形窗口上可以立刻見到。之后,file-save coordinate保存為坐標文件即可。(這兩個原子也可以沒有實際成鍵,它們只用于定義連線的矢量而已)

    若想讓這個鍵平行于其它笛卡爾坐標軸,先用上述方法令這個鍵平行于X軸,然后執行
    set sel [atomselect top all]
    之后,比如輸入$sel move [transaxis z 90]就可以讓體系坐標繞著Z軸轉動90度。z可以改成x和y來分別繞著x和y軸旋轉。根據實際要求,令體系適當旋轉即可達到目的。


    PS:如果你是想讓體系的某一個矢量平行于笛卡爾軸,看《讓體系(躍遷)偶極矩平行于某個笛卡爾軸的方法》(http://www.shanxitv.org/507)。

    久久精品国产99久久香蕉