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

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

在终端运行以下命令:
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
,效果如下图:

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

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

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

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