Learn VASP The Hard Way (Ex50):功函数(work function)的计算(二)

2018-01-09

Ex50 功函数的处理脚本以及可视化


前面一节我们介绍了计算功函数的具体流程,以及用p4vasp获取真空能级的方法。

本节我们介绍另外两个方法,从本质上来说,这些方法是一样的,都是基于对LOCPOT中数据的处理。


使用vtotav-v5.2f这个脚本,操作流程如下:




注意:


1)gfortran -o vtotav.x vtotav-5.2f

这个命令将vtotav-5.2f 这个脚本编译成可执行文件vtotav.x.

gfortran不管用的话可以试试 ifort -o vtotav.xvtotav-5.2f 这个命令

2)./vtotav.x 在当前目录下运行这个可执行文件;会让你选择计算的方向,这里我们slab的真空层是在z方向,所以我们输入3 (回想一下,上一节,我们在p4vasp中选择z方向的鼠标操作,它们是一样的),都是讲LOCPOT文件处理,然后生成z方向的相关数据。

3)运行完毕后,当前目录下会多出来一个 VLINE 文件。这个文件就是p4vasp中选择z方向之后所显示的红线数据,(不过横坐标有些不同)

4)我们看一下VLINE文件的数据内容,第一行中224代表有224个点,3代表z方向。

5)VLINE文件中横坐标为当前点的序号,从1-224,而p4vasp中导出来的文件,横坐标为z方向的坐标,不过这个不影响我们对真空能级的计算。




上图中最后的两行命令,

1)从上一级目录下拷贝了一个python脚本,名为:wplot-f.py

2)运行这个python脚本,效果如下:



我们又得到了前面一节的功函数的图像。真空能级,大家从150前后取个值即可,也可以在一段直线的区间范围内求个平均数。



对比下前面一节和本节中的数据:


 


左图为本节的,右图为上节的。



Python脚本这么神奇,是怎么写出来的呢?脚本内容如下:



思路如下:

1)读取VLINE文件

2)第一行画图的时候用不着,需要跳过,next(f)

3)将剩下的那些行中,第一个数存到x列表里面,第二个数存到y列表里面

4)使用 matplotlib 中的 pyplot读取x,y列表中的数据,进行画图: plt.plot(x,y)

5)将生成的图保存成workfunction.pdf文件,分辨率dpi为400



注意:

A)如果你想保存成eps,png,jpg,只需将.pdf 改成 .eps, .png, .jpg 即可。

B)如果想要分辨率更高,可以修改400这个数值

6)如果只想保存成pdf文件,不想弹出图片的查看窗口,把 plt.show()这一行注释掉就可以了,# plt.show()

7)如果只想看一下图,不想保存pdf文件,将第16行注释掉就可以了。



使用vtotav.py这个脚本


第一个脚本就讲到这里了,这个脚本不错,唯一的缺点就是横坐标不是z方向的数值,那么我们看一下第二个脚本的操作。



注意:

1)这里用到的脚本名字为:vtotav.py

2)vtotav.py LOCPOT z  这个命令意思是,用vtotav.py 读取LOCPOT文件,并处理生成z方向的数据;

3)脚本运行完毕后,目录中多了一个LOCPOT_Z 文件,这个文件内容如下:



4)图中最后两行,

A)大师兄又从前面的目录下拷贝了一个脚本: wplot.py

B)然后运行这个python脚本, 效果如下:




这个脚本中,横坐标为z方向的大小,比前面的脚本有所改进,和p4vasp的数据是一样的。首先我们先看一下可视化的脚本,然后再讲解vtotav.py这个脚本的获取和使用。



这个跟前面的那个脚本很像,不同的地方在于这个脚本中读取了第一行的内容,并将它们作为横坐标和纵坐标的名字。(Distance 和 Potential)



3 vtotav.py 脚本的获取和使用


这个脚本可以在github网站免费下载,网址为:

https://github.com/compphys/ase_tools/blob/master/scripts/vtotav.py 




本人的做法是:

·把图中的代码复制下来,然后保存到一个文本里面,将文本命名为:vtotav.py

·赋予脚本可执行权限: chmod u+x vtotav.py

·将脚本移至 ~/bin 目录下: mv vtotav.py ~/bin

·然后直接用就可以了,跟前面图中的操作一样。




不过本人刚刚发现这个脚本可以按照下面的方法下载,下载完成后,重复前面的2-4步即可:

1)  点击scripts

2)  鼠标右击这个脚本:

3)  另存为,然后选择保存的目录

4)  这里本人保存到电脑桌面上了。




注意:


如果你运行脚本的时候,没有得到下面图中的这个结果:



原因可能在与:




这个脚本需要调用 ase这个程序中的模块,那么什么是ase呢?ase怎么安装呢?

对于ase,本书的ex0 中就已经提到了,可能大家也忘记了。ASE是Atomic Simulation Environment 的缩写,这是一个非常强大的工具。官方网址:

https://wiki.fysik.dtu.dk/ase/ 是大大师兄(本人的师兄)做博后的课题组开发出来。Linux系统下面,安装ASE很简单:

一个命令就可以搞定了,Soooo eeeeeasy!至于Windows下面嘛,本人不会。不想用linux,还想用ASE的就只能自己捣鼓捣鼓了。捣鼓好了也不要给我发教程,因为本人不推荐用Windows做计算。



扩展练习:


1)下载本节的例子,以及所有的脚本,按照讲解的操作一遍流程,链接:https://pan.baidu.com/s/1dEHvHr7 密码:ponm

2)Linux用户自行安装,ASE,使用vtotav.py这个脚本走一遍过程。

3)熟悉下用python画图的基本方式。




总结:


讲解到这里,功函数的可视化也就差不多了。当然了,只要你有了数据,用什么画图都可以,excel,origin, matlab, gplot… 不过貌似作图也没什么用,我们大体上看下,然后找个区间取静电势的数值才是正事。

本网站由阿里云提供云计算及安全服务