VESTA是一款常用到的结构作图软件,上手容易,效果不错。做表面反应的同学为了得到比较好的结构立体感,可以将表面的原子突出而将次表面的原子弱化显示。但是VESTA只能对同种元素的显示做修改,而基底的不同层原子类型通常是相同的,因此在作图时,无法区分不同层的原子,也就没法定制它们各自的显示效果了。 经过探索,我们找到了一种可以变通方法可以实现这种效果,也就是使用脚本resort.py,将不同层的原子替换成别的元素,这样在VESTA中自然可以达到区分的效果。resort.py需要在python环境下运行,同时依赖numpy第三方库。

我们以Li在铜表面的吸附为例讲解脚本的使用。下图是Li原子在Cu(111)表面的FCC位的吸附的默认显示效果。

e53ae6127a542bf4dc6ce85b27a12e7a.png

VESTA将所有的Cu原子以相同的效果显示,从俯视图根本无法确定Li的吸附位置。下面是我们使用resort.py对原子进行魔法替换后,再用VESTA调整的显示效果。将表层Cu原子以橘色显示,而次表面原子以淡黄色显示以区分。层间再添加键以增强立体效果。我们将讲解使用VESTA绘制该图的步骤。

2b76691e5bc05a2ce2a4c6cafc13bfb4.png

在终端运行以下命令:

tamas@tamas-PC:~/Desktop$ python resort.py 
Now reading vasp structures.
Found 7 layers, choose how many layers want to substitute with various elements------>6

程序会自动读取CONTCAR的结构并进行分层,提示我们体系一共有7层(包含Li原子),我们选择将底下的6层元素替换为周期表后周期放射性元素,生成POSCAR-bak结构文件。可以看到铜基底已经被替换成放射性元素,这些元素一般不会是我们用到的基底。如果分层的判断不是你想要的,可以手动修改resort.py脚本里的判读阈值thresthold=1.5 #A来调节分层效果。

 Xe La Pr Nd Pm Sm Li
16 16 16 16 16 16 1

我们使用VESTA打开POSCAR-bak,效果如下图:

7552ac3dc9f2883463343df046715b07.png

接下来我们调节不同层院子的显示效果,在左边栏点击Properties-Atoms标签栏-Radius and color。 对表面原子Sm,次表面原子Pm和第三层原子Nd分别做以下设置,原子半径依次降低。

66326e28deb8c2f7714c8df42995d733.png

然后对不同原子层添加键,菜单栏点击Edit-Bonds,在表面原子Sm-次表面原子Pm和次表面原子Pm-第三层原子Nd之间添加键。键的显示效果可以在Properties-Bonds标签栏-Bond style里面调节键的显示效果。

f13f88443e294bc80a3a33863ed32036.png

Boundary里面多显示几个周期,最后再手动删除(delect键)多余的原子(Select 框选)即可。

8a5eb2dc1861b54746fdd99e157a3786.png

脚本可以在我的Github仓库下载。(https://github.com/tamaswells/VASP_script/blob/master/resort.py)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐