使用structflow更改晶體結構中原子的位置

在第一性原理計算中,構建體系晶胞是常見的操作。同時,許多研究可能涉及到需要通過改變超胞中原子的位置來達到某種目的。這類工作通常可以經由專用的圖形軟件完成,比如開源軟件Avogadro、Vesta、Xcrysden等等。

但是今天,小編將為你介紹如何使用Pymatflow中的structflow工具來實現對晶體結構中原子位置的移動。

安裝

為了使用structflow工具,首先需要安裝Pymatflow。你可以通過pip來實現安裝:

<code>~$ pip install pymatflow/<code>

使用展示

這裡我們以兩個示例來演示如何使用structflow來移動晶胞中的原子。

移動NaCl原胞中的一個Na離子


使用structflow更改晶體結構中原子的位置

如圖所示為NaCl晶體結構示意圖,我們此次需要嘗試移動的為圖中單獨用黑色標註的一個Na離子。

為了移動該離子,首先我們需要知道他在結構中的原子順序編號,可以通過VESTA軟件打開,然後點擊該Na離子,然後在下方狀態信息中獲取選中的部分的編號,這裡是2。

然後我們需要將該Na離子往圖中右移1Angstrom的距離,為了描述該移動方向,我們需要從晶向指數的角度來進行判定,可以明顯地看到圖中朝右的方向是b軸所在方向,對應晶向指數為[0 1 0]。

知道所有信息後,我們給出實現該操作的命令:

<code>~$ sflow move -i nacl.cif -o nacf-moved.cif --atoms 2 --disp 1 --direction 0 1 0 /<code>

得到的結構如下圖所示:


使用structflow更改晶體結構中原子的位置

可以看到Na離子已經往[0 1 0]方向移動了對應的距離。下面我們來看看命令中各個參數的意義。

首先-i和-o參數分別用於指定輸入結構和輸出結構文件。然後參數--atoms用於指定需要移動的原子的編號,這裡移動的是2號原子。實際上,該參數可以指定同時移動多個原子。--direction參數通過三個實數指定移動的方向。最後參數--disp用於指定往特定方向移動的距離,單位是埃。

為何不直接使用圖形軟件?

有可能你想要問,這樣的操作可以簡單通過具有GUI的分子結構構建和可視化工具來完成,為什麼還要這樣麻煩地處理呢。

當然,對於少量樣本的操作,小編也建議您直接通過類似Avogadro、VESTA等圖形軟件進行操作,這樣可以很方便快捷。

但是有些情況,我們可能需要批量地進行結構地構建。比如,這裡我想產生一組Na移動不同距離的結構,從0.5 Angstrom到1.5Angstrom,步長為0.1,那麼使用圖形軟件可能需要進行多次操作,但是使用命令就可以通過一個循環很容易地進行:

<code>for d in `seq -w 0.5 0.1 1.5`
do
    sflow convert -i nacl.cif -o nacl-%{i}.cif --atoms 2 --disp 1 --direction 0 1 0
done/<code>

說這麼多,表達的觀點就是,你需要根據自己的需求選擇不同的解決問題的方案。

往期文章

晶體結構文件轉換工具structflow

CP2K教程系列之結構優化(Pymatflow篇)

CP2K教程系列之第一性原理分子動力學(Pymatflow篇)

Quantum ESPRESSO教程之結構優化(Pymatflow篇)

Quantum ESPRESSO教程之態密度能帶結構計算(Pymatflow篇)

Quantum ESPRESSO教程之電子局域函數計算(Pymatflow篇)

Pymatflow是一個用於第一性原理模擬的工作流自動化管理軟件,目前支持的計算程序有VASP、Qutum ESPRESSO、Abinit、SIESTA、CP2K。

項目文檔地址:

http://pymatflow.readthedocs.org/

中文手冊:

歡迎關注以獲取更多關於Pymatflow和第一性原理計算的精彩內容。


分享到:


相關文章: