用VESTA建立表面模型

1旗唁、本文搬運(yùn)自ETasci-2013-SurfacePreparationHowTo饼煞,簡(jiǎn)單總結(jié)一下,方便大家
2雄坪、首先講一下思路:我們要找到新的單胞,然后我們做晶格基矢轉(zhuǎn)換再加一個(gè)真空層就行了屯蹦,其實(shí)很簡(jiǎn)單维哈。下面講解步驟。
首先你需要兩個(gè)東西登澜,一個(gè)是晶格結(jié)構(gòu)阔挠,需要時(shí)VESTA能夠打開的格式,這里以Material Project上下載下來(lái)的*.cif文件為例脑蠕。然后把文件拖入到VESTA中购撼。

1.jpg

然后就是找新的單胞,首先我們要找到單胞對(duì)應(yīng)的6個(gè)平面谴仙,當(dāng)然在這之前要先擴(kuò)展成超胞看起來(lái)比較方便迂求。(這一步的所有步驟都沒有改變?cè)畔⒅皇菫榱宋覀兛粗奖悖ㄏ旅娴膭h除原子之類的晃跺。)點(diǎn)左邊的Boundary揩局,然后把x,y掀虎,z改成3 3 3
2.jpg

然后我們的模型就變成超胞了凌盯。
3.jpg
,然后選平面烹玉,
4.jpg

點(diǎn)左上角的Edit驰怎,然后點(diǎn)Lattice Planes,就出來(lái)編輯平面的窗口
5.jpg

然后點(diǎn)New二打,就可以新建平面县忌,新建完了以后會(huì)顯示在左邊,這里添加6個(gè)平面,得到新的單胞芹枷,如下圖所示衅疙。
6.jpg

7.jpg

刪除多余的原子,用最左側(cè)邊欄上的第二個(gè)鼠標(biāo)指針選中然后按鍵盤上的Del鍵即可刪除
8.jpg

然后我們就得到了新的單胞鸳慈,這里丟失了一些原子饱溢。
9.jpg

這里因?yàn)榫Ц耖g距和例子中的不一樣,所以截出來(lái)的單胞并不是很理想走芋,所以拿上面那個(gè)PDF中的來(lái)說(shuō)吧绩郎,實(shí)際操作中根據(jù)自己的需要來(lái)截,這一步是最關(guān)鍵的翁逞。
10.jpg

這個(gè)就是PDF中的例子給出的單胞肋杖,頂點(diǎn)上有4個(gè)原子挖函,像上邊一樣用左邊欄第二個(gè)箭頭選中4個(gè)原子下面的窗口會(huì)給出4個(gè)原子現(xiàn)在的坐標(biāo)怨喘,分別減去新的原點(diǎn)O‘的坐標(biāo)必怜,就得到了新的晶格基矢與原來(lái)的基矢的關(guān)系

a' = -a+b
b' = -\frac{1}{2}a-\frac{1}{2}b+c
c' = a+b+c

終于得到了晶格變換矩陣

\begin{matrix} -1 & -1/2 & 1 \\ 1 & -1/2 & 1 \\ 0 & 1 & 1 \end{matrix} \tag{1}
注意:到這里為止我們都沒有實(shí)際上改變?cè)瓉?lái)的晶格結(jié)構(gòu)文件暖途。下面我們就要改了
點(diǎn)Edit>>Edit data>>Unit cell然后點(diǎn)Transform在Rotation matrixP中填上剛才得到的變換矩陣就得到了新的單胞驻售,下面就是添加真空層了芋浮,只需要File>>Export data選VASP的格式然后選笛卡爾坐標(biāo)镇草,再把c方向加大就行了。PP

VESTA建立截止面/移除部分isosurface

添加平面不僅可以幫助簡(jiǎn)立新的單胞竖伯,還可以幫助截取isosurface的一部分。
我在畫電荷密度的時(shí)候祟偷,有時(shí)候會(huì)遇到想去掉自己不想要的isosurface部分的想法但是直接像刪除原子那樣的方式是刪不掉的打厘,說(shuō)明書里有一個(gè)如何截圖像的方法户盯,名字叫做建立邊界平面。
同時(shí)按ctrl吗伤、shift足淆、B就可以打開建立截止面的界面缸浦,然后輸入自己想要的截止面就可以了!

VESTA變換元胞后保持矢量與之前一致

按照上面描述的方法變換元胞之后卜高,原來(lái)設(shè)置的矢量有可能會(huì)改變方向掺涛,因?yàn)樵幕副桓淖兞诵嚼拢俏野l(fā)現(xiàn)只要在變換的時(shí)候選擇第二個(gè)選項(xiàng)就可以保持矢量不變拣帽,但是需要重新設(shè)置矢量和原子的對(duì)應(yīng)順序。

VESTA 批量添加矢量

VESTA里面添加矢量比較麻煩嚼锄,手動(dòng)一個(gè)一個(gè)點(diǎn),能不能通過(guò)腳本來(lái)實(shí)現(xiàn)呢区丑?答案是可以的修陡,因?yàn)閂ESTA的輸入文件prefix.vesta實(shí)際上是一個(gè)文本文檔,所有的信息都以文本的方式存在里面魄鸦,那么只需要按照VESTA的格式把矢量寫進(jìn)去就可以了,上網(wǎng)一搜有人寫過(guò)了癣朗,于是就直接拿過(guò)來(lái)了号杏。腳本來(lái)自GitHub - hzr-piggy/plot_vec_VESTA斯棒,他參考了另一個(gè)人的寫法GitHub - lucydot/vesta_vectors荣暮。非常感謝他們!
輸入文件就是兩個(gè)砾跃,一個(gè)是需要修改的VESTA輸入文件骏啰,還有一個(gè)就是記錄矢量的文本文檔判耕,大致格式是這樣的

-0.05
-0.05
-0.05
0.1
0.1
0.1

就是把矢量分成每行一個(gè)數(shù)就可以了翘骂。這里只加了兩個(gè)矢量壁熄,需要加更多只需要也參照這個(gè)格式加下去就可以了。


def plot_vec(vesta_file, vec_file,
        cutoff = 0.1,
        radius=0.5, color=[255,0,0], penetrate = True, add_atom_radius = False,
        scale_factor = 1,
        delim = None, vec_type = "Cart", lat = None,
        output_suffix = "_vec"):
    
    # vesta_file:   A *.vesta file
    # vec_file:    A file containing vectors having dimensions of 3N*1 (or 1*3N) 
    # with delimiter=delim i.e.
    
    #                     x1
    #                     y1
    #                     z1
    #                     x2
    #                     y2
    #                     z2
    #                     .
    #                     .
    #                     .
    
    # cutoff (Double):       Angstrom below which vector will not show
    # radius (Double):       Set radius of vector
    # color (Double 0-255):  Set color of vector
    # penetrate (Bool):      Set whether vector penetrate atom
    # add_atom_radius (Bool):Set whether to add atom radius to vector modulus
    # scale_factor (Double): Scale vector in the figure
    
    # delim:                 Delimiter in the vec_file
    # vec_type:              Type of vectors, can be "Cart" (Cartesian), "Lat" (Lattice vector notation [u v w], in reduced coord)
    #                        or "Modulus" (Modulus along crystallographic axis). Default is 'Cart'
    # lat:                   3-by-3 lattice parameter in Angstrom required if vec_type == 'Cart'
    
    import numpy as np
    import re
    import os
    
    # Read input files
    vesta_data = open(vesta_file,'r').read()
    temp = np.loadtxt(vec_file,delimiter=delim)
    N_dim = temp.shape[0]
    temp = temp.reshape((N_dim//3,3))
    
    # Convert to Modulus along crystallographic axis
    if vec_type == 'Lat':
        struct_match=re.findall(r'CELLP\n\s+(\d+\.\d+\s+\d+\.\d+\s+\d+\.\d+\s+)',vesta_data)[0]
        cell = np.array([float(x) for x in struct_match.split()]) # cell lengths in angstrong
        temp *= cell
    elif vec_type == 'Cart':
        assert lat is not None, '3-by-3 lattice parameter in Angstrom required if vec_type == Cart'
        temp = temp@np.linalg.inv(lat)*np.linalg.norm(lat,axis=1)
#   print(lat)  
    vectors = np.around(temp*scale_factor,decimals=3) # Round the disp to 3 decimals
    
    # Find unique vectors
    print(vectors)
    vectors_unique = np.unique(vectors,axis=0)
    
    # Vector penetrate atom or add atomic radius?
    flag = int(penetrate)+int(add_atom_radius)*2
    
    VECTR_str=r"\1"
    VECTT_str=r"\1"
    i = 1
    for v in vectors:
        if np.linalg.norm(v) > cutoff: # only create vector with modules > cutoff

            VECTR_str += "   {0}  {1}  {2}  {3}  0\n".format(i,v[0],v[1],v[2]) # create vectors

            atom_list = np.where((vectors == v).all(axis=1))[0]
            for atom in atom_list:
                print(atom)
                VECTR_str += "    {0}  0  0  0  0\n".format(atom+1) # create atom labels start from 1

            VECTR_str += "0 0 0 0 0\n"

            VECTT_str += "   {0}  {1}  {2}  {3}  {4}  {5}\n".format(i,radius, color[0], color[1], color[2], flag)

            i += 1
            
    output_data = re.sub(r"(VECTR\n)",VECTR_str,vesta_data)
    output_data = re.sub(r"(VECTT\n)",VECTT_str,output_data)
#   print(output_data)
    name, ext = os.path.splitext(vesta_file)
    file_out = open(name+output_suffix+ext,'w+')
    file_out.write(output_data)
    file_out.close()
mode = 12
plot_vec('NbAs.vesta', 'NbAs_vector'+str(mode)+'.dat',
cutoff = 0.1,
radius=0.4, color=[255,0,0], penetrate = False, add_atom_radius = False,
scale_factor =-1,
delim = None, vec_type = "Cart", lat =    [[6.374959638,   0.003597502 , -0.000000000],
  [ 4.478346762 ,  4.537022058 , -0.000000000],
  [-5.426653274 ,-2.270309811  , 2.457085633]],
output_suffix = "_vec"+str(mode))

VESTA保存帶電荷密度圖

VESTA為了保持vesta文件格式的簡(jiǎn)介一致性碳竟,將電荷密度這一類數(shù)據(jù)在保存的時(shí)候就刪掉了草丧,想要保存這一類數(shù)據(jù)需要將其再保存為一個(gè)XX.ggrid文件,然后打開的時(shí)候 Edit > volumetric-data 導(dǎo)入進(jìn)去就可以了莹桅。

VESTA 調(diào)節(jié)isosurface 透明度昌执,

VESTA中如果想要調(diào)節(jié)isosurface的透明度,是在properties里面然后打開isosurface選項(xiàng)里就可以調(diào)诈泼,關(guān)鍵在于理解兩個(gè)透明度的意思是什么懂拾,


image.png

這一點(diǎn)從這個(gè)圖上可以看出來(lái),其中O1和O2分別代變兩個(gè)方向的透明度厂汗,分別對(duì)應(yīng)opacity1和opacity2委粉,然后前面那個(gè)render from front to back 影響也很大呜师。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娶桦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衷畦,老刑警劉巖栗涂,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祈争,居然都是意外死亡斤程,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門菩混,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忿墅,“玉大人,你說(shuō)我怎么就攤上這事沮峡【纹辏” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵邢疙,是天一觀的道長(zhǎng)棍弄。 經(jīng)常有香客問我,道長(zhǎng)疟游,這世上最難降的妖魔是什么呼畸? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮颁虐,結(jié)果婚禮上蛮原,老公的妹妹穿的比我還像新娘。我一直安慰自己另绩,他們只是感情好瞬痘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著板熊,像睡著了一般框全。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上干签,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天津辩,我揣著相機(jī)與錄音,去河邊找鬼容劳。 笑死喘沿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的竭贩。 我是一名探鬼主播蚜印,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼留量!你這毒婦竟也來(lái)了窄赋?” 一聲冷哼從身側(cè)響起哟冬,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忆绰,沒想到半個(gè)月后浩峡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡错敢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年翰灾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚茅。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纸淮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亚享,到底是詐尸還是另有隱情萎馅,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布虹蒋,位于F島的核電站糜芳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏魄衅。R本人自食惡果不足惜峭竣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晃虫。 院中可真熱鬧皆撩,春花似錦、人聲如沸哲银。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荆责。三九已至滥比,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間做院,已是汗流浹背盲泛。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留键耕,地道東北人寺滚。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屈雄,于是被迫代替她去往敵國(guó)和親村视。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 最近看了一篇文章酒奶,是關(guān)于鉻的鹵化物 CrX3 的諸多性質(zhì)的計(jì)算 Robust intrinsic ferromag...
    jenny42閱讀 6,427評(píng)論 1 6
  • 這是我在簡(jiǎn)書的第一篇文章蚁孔,簡(jiǎn)書這個(gè)APP以后就用來(lái)作為我記錄模擬計(jì)算的一個(gè)地方奶赔。。勒虾。 第一次發(fā)文章打...
    Phystimulate閱讀 11,245評(píng)論 2 1
  • 最近在東京大學(xué)物性研究所參加第一性原理計(jì)算的Summer Workshop修然,期間要做一個(gè) Project,我選擇的...
    jenny42閱讀 85,132評(píng)論 1 24
  • 本文轉(zhuǎn)載自博主一個(gè)人就是一個(gè)疊加態(tài)质况,有部分刪減修改愕宋,文中對(duì)相關(guān)概念方法做了詳細(xì)的總結(jié),留坑待填... 1. 第一原...
    chempeng閱讀 43,726評(píng)論 1 33
  • 如何得到 CrI3 monolayer 的結(jié)構(gòu) 先由結(jié)構(gòu)優(yōu)化過(guò)后的 CrI3 bulk 的 POSCAR 出發(fā)结榄,切...
    jenny42閱讀 6,437評(píng)論 0 1