You are on page 1of 448

大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn Vasp The Hard Way -Ex0:学习前的准备工作


2017-06-11

Ex0: 学习前的准备工作

在学习本书时,大师兄们会默认读者掌握了一些基本的电脑操作技能,以及化学的基本常识。本章列举出一些常用的计算工具和软件,以及假设大家掌握的一些技能。如果没
有达到基本的要求,那么请在学习前面几章的同时,抓紧提升自己的能力。 化学的基本知识如果没有掌握,不建议学习本书。

1 心态:主动行动,主动思考
学习过程中要时刻抱着主动去解决问题的心态,
1.1) 遇到不会的问题,主动去查找解决方法;
1.2) 遇到不懂的基础知识,主动去找教科书;
1.3) 遇到什么好的资源,书籍,课件等,主动去网上搜索,下载;
1.4) 主动去做本节的练习或者重复其他人的计算。
1.5) 没事就去官网溜达,求助的话第一反应就是去找官网的论坛!
1.6) 前面说的主动是对于你自己来说的,别碰到不会的就主动求助别人,这样你很难得到提升;
1.7) 很多人都是做实验的,被老板强迫做的计算,但老板屁都不懂,在这里,大师兄建议你找个做计算的组,让老板派你去交流一段时间,别自己在那里瞎捣鼓。
1.8) 很多人吐槽计算化学是个坑,既然你选择了这条路,要么抓紧改行,要么请避开这些负能量的说法。无论放弃或者坚持,都要拿出你自己的判断力出来,请不要再听别人在
你耳边瞎逼逼。
个人的理解是,计算化学可以使你的视野更加开阔,思维方式更加灵活。不论是否继续相关的研究,对今后的发展总会有所帮助。

2 操作系统:
2.1) Windows 系统:会使用Windows系统:会开机,打字,安装软件;
2.2) Linux 系统, 推荐使用 Ubuntu16.XXX版本的系统(强烈推荐使用linux系统,但不局限于Ubuntu系统);
2.3) Mac 系统(大师兄周围很少用的,这里就忽略掉了....)。

3 文本编辑工具(列举几个)
3.1) 初步使用远古神器vim, linux自带,如不会,慢慢学习(这个必须学);
3.2) notepad++: https://notepad-plus-plus.org/ (Windows用户,要求会创建文件,输入内容并保存文件!这个软件必须学会使用!);
3.3) Atom:https://atom.io/ (这个Atom是文本编辑工具,不是原子的意思,Windows,Linux均可使用,要求会输入文件,保存文件。装X神器,单身狗们可以拿来给小师妹们
炫耀!);
3.4) 记事本等其他编辑工具,大家根据自己的喜好进行选择;(强烈不建议!可以说是厌恶甚至杜绝使用!)
注意1: Windows下面编辑的文件如果想在linux服务器上运行,由于格式问题,最好先执行:dos2unix 这个命令。
注意2: Windows用户计算出错了,一定要首先想到 dos2linux 这个命令来解决问题!!!
4 常用建模相关软件:
4.1) Material Studio
自行下载(百度里面一大堆),安装(教程也是一大堆)。
PS: 默认已经安装成功,会不会使用暂且不要求; 不要问我从哪里下载,安装出现问题也不要找我解决! 这个自行百度即可搞定。

4.2) p4vasp
网址:http://www.p4vasp.at
Linux,Windows均可安装,Linux下功能更加强大,
Linux下安装(Ubuntu系统): sudo apt-get install p4vasp (一行命令搞定!!!)
注意: Ubuntu17.XXX 版本p4vasp会出现问题,建议大家使用16.XXX版本。
Windows:下载程序,解压,双击图标即可运行。(可以在大师兄QQ群文件中下载,也可以在其他群文件中搜一搜)
4.3) VESTA
Linux,Windows均可,小日本的良心软件,
linux下安装: 下载binary程序文件,本人解压后放到了/opt/VESTA-x86_64目录, 编辑 ~/.bashrc 文件
export VESTA=/opt/VESTA-x86_64
把目录添加到PATH里面
PATH="$HOME/bin:$OPENMPI/bin:$VASP:$VMD:$MOLDEN:$MOLEKEL/bin:$GAUSS_EXEDIR:$g09root/gv:$VESTA"
运行的时候,在终端里面输入 $ VESTA 即可
Windows下同p4vasp一样,下载程序,解压,双击图标即可运行;
4.4) Xcrysden
Linux下使用,可以批量生成图片, 网址:http://www.xcrysden.org/ ;
4.5) Molden
Linux下使用,可以查看频率振动等信息, 网址:http://wwwNaNbi.ru.nl/molden/ ;
4.6) VMD
Windows,Linux均可,功能极其强大,http://www.ks.uiuc.edu/Research/vmd/ ;
4.7) 经验丰富的,可以尝试安装下ASE(Atomic Simulation Environment),网址:https://wiki.fysik.dtu.dk/ase/
4.8) 其他程序等,vasp 官网列举了一些, 可以参考下该网址: https://www.vasp.at/index.php/resources ;
4.9) 注意事项: 不要过于纠结,担心不会使用这些程序。
刚刚开始,前面三个软件能安装成功就OK了(4.2是必须要安装好的)。会初步使用更好,学习软件跟学习vasp一样需要时间的积累。

5 服务器相关
5.1) 知道怎么连接自己组内或者租赁的服务器;
5.2) 初步使用linux命令:
进入目录 :cd;
移动文件(夹):mv;
复制文件: cp;
复制文件夹记得用: cp -r ; 注意 cp 和 -r 直接有个或者N个空格, (这个一定要记住,因为后面学习过程你可能会遇到相关的错误!)
创建文件夹:mkdir;
删除文件: rm ;
删除文件夹: rm -r
强制删除文件夹: rm -fr 或者 rm -rf (f 和 r 的顺序可以颠倒 )
显示目录下文件: ls,等命令;
这里大师兄就不再啰嗦了,老司机们自动略过,新手自行百度:linux 命令,你会得到铺天盖地的信息。

5.3) 组里面已经安装好vasp程序或者手上有可以正常运行的VASP。版本5.2以上最好。注意:我们在本书里,不讨论:
1) 怎么下载VASP;
2) 去哪里下载VASP;
3) 去哪里下载VASP的pseudo potentials
4) 怎么安装VASP;
5) 前三条命令禁止,杜绝在大师兄群里提问,第四条VASP安装遇到问题可以交流。

5.4) 自己组里已经有提交任务的脚本,如果没有的话,请
1) 找组里的师兄师姐帮忙;
2) 第一个啃螃蟹的人,找老师解决或者服务器商求助
3) 自行百度解决

6 程序学习 (建议大家学习两个语言)

6.1) shell 语言:下面有分很多种,ash, bash, dash等等。其中的区别俺也搞不清楚,本人学的是bash ;


6.2) python: python是一款很容易上手的程序,有着丰富的数据库支持;
注:learn python the hard way 是本人推荐的python学习书。(自行百度或者谷歌下载,不要问我从哪里下,其他的参考书当然也可以。)
6.3) 初步学习下程序语言,一方面可以极大地提高自己的工作效率,另一方面也可以改变自己看待事物的思维方式。

7 总结:
初学者学习本书,所必须具有的技能:
7.1) 熟练使用一个操作系统;
7.2) 会编辑文本,写入和保存(Windows 用户Notepad++必须掌握,linux用户vim或者其他编辑器);
7.3) 安装好或者会初步使用一款建模软件,p4vasp 必须安装在自己的电脑上。
7.4) 会连接服务器,且已经安装好了vasp程序;(这个大师兄帮不了你,自行找服务器商或者其他售后人员解决)
7.5) 冰冻三尺,非一日之寒,即使自己是彻头彻底的小白,也不必要担心。 相对于那些积累了很多错误经验的人来说,什么都不知道则具有更好的可塑性;
7.6) 大师兄要求:尽可能多地浏览VASP官网,阅读手册,最重要的是不要偷懒,遇到不会的东西或者困难,立刻记下来或者去解决,否则明天你就会忘掉;
7.7) 好东西要学会分享。

8 致谢:

本教程在写作的过程中,得到了很多人的支持。 有些地方可能描述不清,当然书里面的错误也有一堆,收到了很多人的建议和批评指正。在这里向他们表示诚挚的谢意。
很多人认为,通过这个教程,学到了很多东西,但不要过分把功劳归在我身上。引用佛系的观点:因果,完全是自作自受。你自己学习了,自己认真练习了,水平的提高完全是你自己辛苦付出的
结果。教程就在这里,你学或者不学,都跟我没有关系。私以为,收获最大的还是本人。一方面把自己多年的学习的经验整理总结出来,另一方面,很多当时一知半解的地方,在写作的过程中
,通过查阅资料,认真分析得到了解决。此外,教程的宗旨在于快速带领大家入门VASP的使用,这里大师兄想起了金庸笔下的打狗棒法, 本书传授的只是招式,而心法口诀则是你扎实的科研
基础功,是自己这些年(高中,大学,硕士,博士)通过坚持不懈学习来积累获得的,对次,本人确实无能为力,而这一点也恰恰是我们最欠缺的部分,希望可以引起大家的重视。
如有错误,疑问,或者建议,请发邮件联系大师兄: qli@bigbrosci.com

给大师兄留言:QQ号(2674006510) 微信: BigBroSci


加入大师兄QQ群:遇见大师兄 217821116 (先根据群公告修改群名片,若不修改,一经发现,立即踢出。)

如果你有自己的科研经验和心得,也欢迎分享给大家!
此外,QQ群专注于科研思维的碰撞与科研生活的分享,本书中已经详细解释或者指明的易出错部分,不建议在群中继续咨询,请大家认真学习并主动积极地去思考和练习。

如果喜欢大师兄的文章,欢迎关注我们,转载,转发。

打赏一下,鼓励大师兄们写出更好的文章!

上一篇:Learn VASP The Hard Way (序言):为什么写本书 下一篇:无


版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (序言):为什么写本书


2017-06-11

Learn-VASP-The-Hard-Way (序言)

此书主要针对于0-6个月的VASP初学者,VASP小白,或者刚刚转换计算方向(从VASP计算一个性质到另外一个性质时),以及某一部分计算细节生疏需要复习的科研工作者。列出来一堆求解薛定谔
方程中的各个公式定理等,肯定会对初学者造成一定的误导,因此本书不讨论过多量子力学的基本原理。旨在为初学者提供一个快速进入计算而又避免过多新手错误的方法。

由于对计算细节的不了解,且无人指导(导师啪啪啪打脸),很多人在计算了一个多月后发现自己的参数设置错了,并且需要重算,浪费了大把的时间和机时。大师兄遇到过很多种类似的情况,周围的朋
友遇到这种情况的也不在少数。更有甚者,课题做完了才发现是错的。 出现错误并不可怕,可怕的是我们不知道长教训,后面继续犯错。这也是本书的一个出发点,首先保证大家提交的任务准确无误
,可以尽最大可能避免遇到前面类似的问题,进而起到间接节约时间的作用。在正确计算的同时,大家可以从头学习密度泛函理论,阅读相关课题的参考文献等。

本书的另一个出发点就是,大师兄加了很多关于计算的QQ群,但是群里面很多问题都非常低级,令人费解,或者说是匪夷所思的,从最基本的建模都做不到,到计算结果不会分析等等。这些人简单而又
低级的问题充斥在各个QQ群里。暂且不说这些人的导师有多么地不负责任。很多热心的人却在群里整天忙着应付这些问题,而对于自身,除了得到个活雷锋的标签外,对理论功底的提高,帮助甚微
。可以说是花自己的时间替别人指导学生。 不论群主给自己的群定位有多高,高级群,中级群,精英群等等,都避免不了这样的问题出现。本书主要通过实例引导大家主动思考去解决这些最基本的常
见问题,进而避免因自己的低级问题浪费他人的时间。大师兄希望的是,对于求助或者应助的人,大家尽可能地讨论一些更高级,更深层次的科研问题,而不是浪费在这些低级的问题上。即使在新的计
算中遇到了之前没有碰到过的小细节,自己也知道怎么去动脑子,主动解决。引用一个牛人的话:量化入门一定要按照正确、合理的顺序,循序渐进。要从简单到复杂,从构建整体的知识框架并会用最
常用的量化程序算最基本的任务开始,再到逐渐了解更多理论、深化对理论的理解以及掌握更多计算技巧和程序的使用。具体可以浏览下网站:http://sobereva.com/355 。

学习计算化学的人,对解决科研问题都有着一种执着的态度,通过构建模型来阐明已知或者预测未知的结果。相对于做计算的科研工作者们,虽然我们没有实验技巧的提高,但我们可以通过训练自己
的大脑来弥补。懂得思考的人永远站在社会发展的最前端。

此外,国内做量化计算的人如雨后春笋般涌现出来,一批又一批,好多高校,学院都有老师开始主动尝试计算这个方向,很多做实验的老师也安排自己的学生"算一下", 但这一部分人之前没有
任何的计算功底或者经验,但仍然抱有一颗非常乐观的心态:计算无非就是操作软件的活,花几万块钱买台电脑,美其名曰计算!而到了真正计算的时候,乱七八糟的问题如瓢泼大雨般从天而
降,从软件的安装,模型的搭建,计算参数的设置,计算结果的分析等等.....却又不知道如何解决,一来浪费了自己的时间和精力,二来浪费了计算资源(至少很多电费是白交了,服务器白磨损
了....)。
最后,大师兄本人博士已经毕业,目前正在做博士后,早晚有一天会回到国内继续自己的研究生涯,也会有自己的学生,通过这本书把自己学到的东西保存下来,以便后面学生可以借此快速入门,虽然说
磕磕碰碰是最好的学习方向,但我更希望自己的学生能从本书中领悟到解决问题的一些基本思维方式。

如何学习本书,大师兄在学习程序时,受到learn_python_the_hard_way这本书的启发,务实是这本书的一大特色,开始学习语言,乱七八糟的先统统给我闭嘴,照着我的代码练习一番,然后再自己思考
琢磨,出现问题拿自己的代码和作者代码比较找出原因。通过系统地学习,随着水平的提高,再逐步解释前面未讲解的内容。这一种学习方法非常适合零基础的菜鸟,因为一开始太多的概念根本不可
能一股脑儿全部接受。从简单入手,指导着循序渐进,最后达到精通。 (https://learnpythonthehardway.org/ 打算学Python的,强烈建议此书,也建议直接学习python3。)

对于量化计算,本书也采用这样的思路,手把手先教会大家如何计算,如何避免错误。 从最基本的计算开始,通过示例讲解,结合一些脚本的使用,引导大家思考解决自己的问题。因此,在这本书的学习
过程里,每一章节会对应一个例子,大家务必手动搭建模型,输入文件(切忌复制粘贴),然后进行计算,得到和大师兄一致的结果。为了引导大家主动浏览官网解决问题,很多都会采用官网的例子,大师兄
会重新计算后放到章节里面(官网的结果版本比较陈旧)。
此外,论坛或者QQ群里,有很多无知或者stupid的回复,处在迷糊之际的菜鸟由于对自己的不自信,会一股脑儿去相信别人错误的观点,进而一路错下去,这是最可怕的。所以,如果有疑问,可以先酝酿一
两天,然后再大胆提出来,改正就是进步。

由于时间有限,且保证书的质量,更新可能会比较慢(计划1年),跟不上同学的科研速度,在这段时间,大家有什么问题,对之前的章节有什么意见,可以尽管提出来,这对充实完善本书有着莫大的推动作用
。你的一个问题,可以解决无数个师弟师妹们的疑惑,他们在后续学习中会受益匪浅。

There are kinds of questions you will find yoursel asking and not knowing where to get quick answers from.
That's what BigBro(a)s are trying to fix.

你会发现自己在问各种各样的问题,但不知道从哪里可以得到快速解答。
这正是大师兄正在尝试解决的问题:结合最基本的化学常识和软件计算细节,做最好的快速基本入门书籍。

对于刚刚入门VASP的小白,下面是大师兄推荐的两本书和一个网站:

参考书:
1 Density functional theory:A practical introduction, by David Sholl 下载方式:
i) 百度网盘: http://pan.baidu.com/s/1dFN9stj
ii) 点右侧的链接:/DFTAPI 密码(BigBroSci)
iii) 网络上很多阉割版本,如果你没有数据库权限,慎重下载。
2 Quantum Chemistry by Levine
3 Vasp Manual: http://www.vasp.at

所以:看到这里,大师兄群里禁止这样的问题:本人刚刚接触计算化学,使用VASP,请问有什么好的参考书啊?

此外,如果你感觉本书对你有所帮助,欢迎随意转发转载,也欢迎打赏,金额不限。为保证本书的简洁性,公众号二维码,留言联系方式,讨论QQ群号,打赏的二维码只在序言和Ex0里面出现
,如下:

如有错误,疑问,或者建议,请发邮件联系大师兄: qli@bigbrosci.com
给大师兄留言:QQ号(2674006510) 微信: BigBroSci (加微信后才可应邀加入微信讨论群,不建议在微信群里讨论问题。)
加入大师兄QQ群:遇见大师兄 217821116 (先根据群公告修改群名片,若不修改,一经发现,立即踢出。)
如果你有自己的科研经验和心得,也欢迎分享给大家!
此外,QQ群专注于科研思维的碰撞与科研生活的分享,本书中已经详细解释或者指明的易出错部分,不建议在群中继续咨询,请大家认真学习并主动积极地去思考和练习。
如果喜欢大师兄的文章,欢迎关注我们,转载,转发。

打赏一下,鼓励大师兄们写出更好的文章!
上一篇:Learn VASP The Hard Way (Ex1): VASP基本输入文件的准备 下一篇:Learn Vasp The Hard Way -Ex0:学习前的准备工作
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex1): VASP基本输入文件的准备


2017-06-11

Ex01:VASP基本输入文件的准备

1 准备输入文件, 脑子里要有下面几个概念:
1.1 Rubbish in,Rubbish out! 程序只负责算,对错由你决定!
1.2 遇到不懂的:
(思考 + 看官网)!(思考 +看官网)! (思考 + 看官网)!
重要的话说三遍,不要去看网上那些乱七八糟的说明书。如果英语不好,那么这是一个锻炼你阅读能力的好机会。通过查阅官网解决问题,可以保证你的血统纯正,进而提高你的杀伤力。
1.3 所有的输入文件都只是文本而已 (WAVECAR也可以当成输入文件,不是文本格式,这个后面再说,先不管)。这句话的意思是:所有的输入文件都可以通过文本编辑器打开。
A) Linux系统下使用Vim,或者其他的编辑器。
B) Windows用户请使用Notepad++。
C) Windows用户杜绝使用记事本,写字板等Windows自带的文本编辑器。
1.4 所有的输入文本没有尾缀,Windows用户可能习惯了带各种各样尾缀的文件,但是vasp里面的输入文件,没有尾缀且都是文本。 比如你使用Notepad++这个文本编辑器写了一个输入文件并保
存成 INCAR.txt,那么直接将 .txt删除即可。(INCAR是什么,下面会介绍。)
1.5 再次强调:对于Windows用户,本书中指的文本编辑器是:Notepad++。免费的软件,大家自己下载并安装。 请不要用写字板,记事本等编辑VASP的输入文件。如果你不听话,还是喜欢用写字板
,记事本等,那么:
A) 只可以用它们查看文件(只是查看而已,不要保存。)
B) 如果保存了文件,记得运行:dos2linux 这个命令转换一下格式! (自行百度这个命令是干嘛用的)
C)保存了文件,没有运行dos2linux这个命令。出现错误,你会死的很惨,折腾很久可能都找不到哪里出错了。
1.6 一步一步按照本书的练习进行操作,有问题,先记下来,如果后面没有得到解答,通知大师兄(邮箱:qli@bigbrosci.com)。

2 有了上面的概念,我们就可以准备输入文件了。
2.1 VASP输入和输出文件
下面是官网列出VASP的输入和输出文件,in 代表输入,out代表输出。
先声明一下:大家不要被下面这么多文件吓傻了,脑子里有个印象就行,很多文件可能穷奇你一生的计算都用不到,而且你以后会花很多时间在删这些乱七八糟的文件上面。
所以,大家先简单过目一下即可:
-------------------------
INCAR in **
STOPCAR in
stout out
POTCAR in **
KPOINTS in **
IBZKPT out
POSCAR in **
CONTCAR out
CHGCAR in/out
CHG out
WAVECAR in/out
TMPCAR in/out
EIGENVAL out
DOSCAR out
PROCAR out
OSZICAR out
PCDAT out
XDATCAR out
LOCPOT out
ELFCAR out
PROOUT out
-------------------------

2.2 对于VASP计算来说,前面绿色标出来的 INCAR , KPOINTS, POSCAR 和POTCAR 是必不可少的输入文件,必须有!


A)INCAR 告诉VASP算什么,怎么算。
B)KPOINTS 包含计算的K点信息(K点是什么,这个问题很抽象,脑子里先记住,计算的时候必须有这个东西)。
C)POSCAR是计算模型结构的文字描述,也就是各个原子在xyz方向的坐标信息。
D)POTCAR对应的是计算过程中每个原子的平面波基组,描述原子中原子核和电子的相关信息。
注意:
最新版的VASP中可以在INCAR中设置KPOINTS。但在涉及到计算能带的特殊K点时候,INCAR中就不可以直接设置了。所以,在本书中,KPOINTS是认为必须有的。请不要再纠结这个问题,也不要
专门找我争论这个问题。如果你认为可以没有,那就是可以没有。

2.3 基本输入文件的准备, 我们以单个氧原子的计算为例,


2.3.1 INCAR
打开编辑器,把下面几行挨个输入进去: #号以及后面的不用输入
SYSTEM = O atom # 氧 符号,不是零!
ISMEAR = 0 # 是零,不是氧符号!
SIGMA = 0.01 # 对于分子或者原子,用0.01

INCAR的注意事项:
1) INCAR 中有很多参数,改变参数来控制计算细节,从而得到我们期望的结果。INCAR准备的原则是,越简单越好。
2)网上很多人发INCAR的教程,列了一堆参数进去,甚至长达两页,有些连默认值也放在里面了,恨不得把所有参数全部放进去。不过,请记住:那些令人眼花缭乱的只是唬人装逼用的,在实际计算中会
严重拖你的后腿。
3)熟知各个参数的数值意义,以及在不同计算任务中的设置至关重要。
4)有人会说,那么多参数,怎么能记得过来? 放心,完全可以的。
i)一方面对于特定的体系,所需要的参数不同,如果你的课题比较稳定,那么你应该不会接触太多的参数。比如你专注于体系的能带结构,那么算过渡态的参数你就不会需要。
ii)另一方面,这些计算参数又不是一天两天能记住的,是一个长期积累的过程。随着时间的增长和个人经验的增加,自然而然地就记住了。
5) 每个参数后面跟着等号 = ,
6) 等号前后可以有空格,也可以没有,ISMEAR=0 和ISMEAR = 0 结果一样,
7)写INCAR的时候,不要使用 tab,用空格替换tab
8)本文中 # 后面写的是汉语,是给大家展示用的,大家在写的时候,最好不要把汉语写进去,有可能会出错!
9) 官网有些旧的文件可能用的不是# 号,而是 !。 大家记住: ! 可能会出错。
10) 前面7,8,9条对其他的输入文件同样适用。

INCAR的详解:
1) SYSTEM 后面是该计算的说明。你的这个任务算的是什么,目的是什么,体系是什么?等等,这写都可以随便写在里面。SYSTEM = O atom 和SYSTEM = I LOVE YOU 和 SYSTEM = VASP, 除了
多出几个字符外,对计算没有什么影响。不建议大家在这一行里写一堆乱七八糟的东西。当然,有或者没有本行对计算结果不会产生任何影响,看着不爽也可以删除。
2) ISMEAR这一项,目前需要记住的是:不同的值对应的是不同的展宽方法:
A) 对于半导体和绝缘体体系,ISMEAR的值取绝对不能大于0, 一般用0,
B)对所有体系,更加精确的时候用-5,
C)对于所有K点数目小于3的计算,不能用ISMEAR = -5。为什么呢?因为会出错。
D) K 点少,还是半导体或者绝缘体,那么只能用 ISMEAR = 0。
E) 对于金属来说,ISMEAR的取值一般为1。
F) 保守地说,ISMEAR = 0(Gaussian Smearing) 可以满足大部分的体系(金属,导体,半导体,分子),
G) 在DOS能带计算中,使用ISMEAR= -5 用于获取精确的信息。
3) SIGMA该项:
SIGMA的取值和ISMEAR息息相关:
A) 如果用了ISMEAR = -5 (对于所有体系),SIGMA的值可以忽略,也可以不管(VASP会自动略过)
B)对于金属: ISMEAR =1 或者0,非金属: ISMEAR= 0 的时候,一般取0.10 或者采用默认值 0.20 即可。
不过很多人都不放心,为了保险想测试一番。标准是: SIGMA 的取值要保证OUTCAR 中的 entropy T*S 这一项,平均到每个原子上,要小于 1-2 meV。
检查的时候可以用这个命令: grep 'entropy T' OUTCAR (这里有两个单引号,不要输入的时候漏掉) 得出的能量除以体系中原子的数目,然后再和 0.001 eV 比较,如果小于,SIGMA取值OK,如果大
于,再换个测试。
C) 对于分子,原子体系(也就是你把分子或者原子放到一个box里面),必须要用很小的值,这里我们用的0.01。

文本保存:
1) 输入完上面的几行,Notepad++ 保存的时候,文件名为: INCAR,保存类型选择 Alltypes (*.*)。 也可以保存成任意 INCAR.XXX 文件,然后重命名的时候将.XXX 手动删除即可。
2) 用Vim的筒子们输入前面的三行文字,然后保存成INCAR即可。
3) 前面说了很多,很多人可能会犯晕。目前来说,关键两点要记住:
A) INCAR是纯文本没有尾缀;
B)算原子或者分子时:ISMEAR选择0, SIGMA要足够小。
4) 再次强调:Windows用户请使用Notepad++作为文本编辑器,不要使用Windows自带的记事本或者写字板!

2.3.2KPOINTS
打开编辑器,把下面几行输入进去:#号以及后面的不用输入:
K-POINTS # 第一行随便写都行
0 # 零,格子自动生成
Gamma # gamma点centered
111 # 1*1*1格子
000 # S1 S2 S3, 一般保持 0 0 0 不变。
详解:
1) 该KPOINTS 文件里面,共有5行,第一行可以随便写内容,但不能没有;
2) 第二行是数字0,不是字母O,0 在这里表示的是自动生成K点。你可能注意到了,0前面有个空格,不过没关系,对计算不影响,可以删掉也可以再加一个空格,后面的第4,5行同样如此, 但是避免用tab
输入,VASP有时候不识别tab键输入的空白部分,导致计算出错。
3) 第三行,VASP只认第一个字母,大小写均可。在这里Gamma和gamma,Gorge,gorge 效果是一样的,当然这一行也可以直接写字母G或者g。G表示的是以gamma点为中心生成网格,
另外一种是原始的Monkhorst-Pack 网格,两者的区别是 M 或者 m 在 G的基础上在三个方向上平移了1/(2N)个单位。其中G,也叫 gamma centered Monkhorst-Pack Grid. 具体见扩展阅读K
POINTS;
4) 第四行,在xyz三个方向上生成对应数目的K点,本例是1*1*1;
5) 第五行,扩展阅读中对应的S1,S2和S3, 一般都写成 0 0 0 ;
6) 按照前面INCAR的方式保存文件,名字为KPOINTS;
7)请不要在每一行后面注释的时候使用 !,要使用 #,且最好不要写中文。
8) 对于原子或者分子的计算,K点取一个gamma点就够了,也就是这个KPOINTS文件可以用于绝大多数的原子或者分子计算,不用再修改;因此,不要在群里问类似这样的问题:我优化一个气相小分子
的时候,用gama点还是2*2*2的K点?
9) K点在VASP计算中非常重要,大师兄给的一个建议是,永远用gamma centered,也就是第三行保持G不变。因为M平移之后,网格的对称性和晶胞的对称性会出现不匹配的情况,从而导致计算出
错,尤其是对于六角晶系hexagonal的结构,必须用gamma centered!这一点,vasp官网说的很明确;
其他的建议后续慢慢展开讨论。
10) 前面看不懂,没事。目前记住这一点: 气体分子计算的时候,使用gamma点即可。

2.3.3 POSCAR

下面几行中,#或者!后面的文字是为了给大家展示用的,不用输入。
O atom in a box #1
1.0 ! universalscaling parameters #2
8.0 0.0 0.0 ! lattice vector a(1) #3
0.0 8.0 0.0 ! lattice vector a(2) #4
0.0 0.0 8.0 ! lattice vector a(3) #5
O ! O element #6 not zero
1 ! number ofatoms #7
cart ! positions incartesian coordinates #8
000 #9

(挑错:上面的 !是老版的,这是错误的!应该用 # 号!)

详解:
POSCAR包含了我们的模型结构信息。
这里,我们要计算氧原子能量,采取的模型是:把氧原子放到一个长宽高均为8.0 \AA (埃)的格子里,如果你要算其他原子或者分子,均采用这种模型,格子长宽高可以随便更改。
1) 第一行,同样随便写,但不能不写;
2) 第二行,一个Scalefactor,可以称为缩放系数,这里是1.0,如果写成2.0,则后面的三行中的数字以及xyz坐标都要除以2。一般来说,写成1.0即可,这样比较直观,清晰;
3) 第三到五行是格子在三个方向上的坐标信息;
4) 第六行是 氧的元素符号,这里需要注意的是,
A) vasp4.xx版本里面没有这一行,最新的版本里面有;
B) 另外,O的符号和数字0容易混淆,一定要注意!
C) 在POSCAR里面该行没有的话也不会影响计算,VASP会读取POTCAR中的元素信息,但输出文件CONTCAR中会把该行自动添上;
D)第一个元素符号要顶格写,前面不要有空格,有可能会出错。
5) 第七行对应第六行元素原子的数目;
6) 第八行的cart,同KPOINTS的第三行,只认第一个字母,C或者c代表笛卡尔坐标, D或者d代表分数坐标系,两者的转换见参考阅读POSCAR2, 值得注意的是,VASP输出文件CONTCAR里面采用的是
分数坐标系,
两个坐标系的区别从第8行开始,前面的七行都保持完全一致。 也就是说,如果想实现两个坐标系之间转换,我们只需改变第7行后面的部分即可;
7) 第9行是氧原子的坐标信息,这里我们把它放到了原点(0.0 0.0 0.0)的位置,大家也可以随便放一个位置,比如说(4.0 5.06.0 ), (1.1 2.5 6.5)等
由于周期性,不管你怎么放,相邻两个格子之间氧原子的距离都是一样的。
8) 如有迷惑,先记下来!

2.3.4 POTCAR

1) 每种元素都有很多种不同的POTCAR,VASP官网推荐了一些常用的, 见扩展阅读POTCAR2, 大家浏览该网址,寻找适合自己体系的POTCAR。


本例子中,我们采用官网推荐的氧原子POTCAR,默认的Cut-off 能量是400,价层有6个原子。大家把自己的POTCAR数据库中的直接复制过来即可。
查看POTCAR中的元素: grep TIT POTCAR
查看POTCAR的Cut-off 能量: grep ENMAX POTCAR
2) POTCAR中的元素顺序一定要和POSCAR保持一致,否则计算会出错。
这个后面我们也会继续讨论,目前大家先知道这一点即可。

3 扩展练习
3.1 新建10个文件夹,每个文件夹中的SIGMA的数值不同, 从0.01,0.02,0.03 ...0.10,其他输入文件与本章中的内容保持一致;
3.2 新建6个文件夹,每个文件夹中的KPOINTS不一样,1*1*1,2*2*2, 3*3*3,4*4*4,5*5*5,6*6*6 其他输入文件与本章中的内容保持一致;
3.3 新建6个文件夹,每个文件夹中的POSCAR不一样,格子分别为:8*8*8,10*10*10,14*14*14,16*16*16,18*18*18,20*20*20,其他输入文件与本章中的内容保持一致。

4 扩展阅读:

Vim使用练习:自己搜资料学习,百度里面很多,学会怎么输入,保存。
VASP文件: http://cms.mpi.univie.ac.at/vasp/guide/node50.html#SECTION00070000000000000000
INCAR: http://cms.mpi.univie.ac.at/vasp/guide/node91.html
KPOINTS1: http://cms.mpi.univie.ac.at/vasp/guide/node55.html#SECTION00075000000000000000
KPOINTS2: https://cms.mpi.univie.ac.at/vasp/vasp/Automatic_k_mesh_generation.html
POSCAR1: http://cms.mpi.univie.ac.at/vasp/guide/node59.html#SECTION00077000000000000000
POSCAR2: https://cms.mpi.univie.ac.at/vasp/vasp/POSCAR_file.html
POTCAR1: http://cms.mpi.univie.ac.at/vasp/guide/node54.html#SECTION00074000000000000000
POTCAR2: https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_PAW_potentials_DFT_calculations_using_vasp_5_2.html
ISMEAR1: http://cms.mpi.univie.ac.at/vasp/guide/node124.html
ISMEAR2: http://cms.mpi.univie.ac.at/vasp/vasp/Number_k_points_method_smearing.html

5 总结

本节主要给大家展示一下,VASP的四个基本输入文件是怎么制作的,以及每个文件中所对应的格式和细节, 从而消除大家的疑惑。本节信息量对于新手来说,可能有些大,下一个练习我们进入计算问
题部分。请务必完成扩展练习,手把手进行Hard-Way训练。扩展阅读链接均来自vasp官网,大家务必要静下心来浏览一遍,如果不懂,没有关系,也得继续看完。
这也是为什么本书叫The Hard Way 的原因:鼓励大家手动制作输入文件(避免复制粘贴),潜心学习官网教程,养成良好的习惯,从而远离网络上那些错误的信息。尤其是对于新手来说,很多都不懂的
时候,没有自己的主见,别人一说就被牵着鼻子走了。
本文中注意的地方大师兄能想到的都已经提出来了,所以,你可以主动去犯错误,然后去验证一下:如果不按照大师兄说的去办,会有什么错误出现。
希望大家:以官网为准,杜绝浮躁,熟知各项的含义,注意事项,拥有封面中金刚狼一般的利刃!

上一篇:Learn VASP The Hard Way (Ex2): 做计算常用的批量处理方法(一) 下一篇:Learn VASP The Hard Way (序言):为什么写本书
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex2): 做计算常用的批量处理方法(一)


2017-06-11

Ex02:做计算常用的批量处理方法(一)

前面一节大家已经学习了怎么制作文本格式的输入文件。回顾一下上一节所学:

1)必须有的输入文件都有哪些? INCAR、KPOINTS、POSCAR、POTCAR
2)这些文件用什么编辑器修改或者制作?
3)文本内部格式都有哪些需要的注意事项?
4)各个参数代表的含义?
5)文本中每一行所代表的含义?

从前面一节的扩展练习, 大家可以猜到:大师兄要教给大家如何对一些参数进行测试了。
在网上,你可以找到很多个测试参数的小脚本,然而,本节需要学习的是在linux系统下,大师兄本人常用的批量处理任务文件的一个办法。

这时候你要问了,师兄,哪个批量处理的方法最好啊?

没有最好的,这根据你所要达到的目标,目前自己对程序的理解水平来定的。

但是,你必须要学会一种,一个好的开始对于大家的后程发力和高效解决日常任务非常重要。

1 查看文件

首先,教给大家常用的三个linux命令 :ls, cat, grep。

通过这三个命令复习并查看上一节我们制作的输入文件: INCAR, KPOINTS, POSCAR 和POTCAR。


在大师兄电脑的 ~/test/vasp/O/ex1 的文件目录下。大家进入自己练习的目录(通过cd 命令),然后按照图中的命令,先敲一遍,看下输出结果,
详解:

1) ls 命令:列出来当前目录下的所有文件和文件夹, 注意:本例中没有文件夹;
2) cat 后面加上文件名,就可以在输出里面查看该文件的内容:cat 和文件名之间有空格, 可以是一个,也可以是N个;
3) 对于一个大文件来说,里面有很多行, 用cat就不方便查看了, 我们可以用grep这个命令提取出来所需要的信息。
4) grep 命令用于提取文件中的我们有兴趣的信息。
例子1:我们想知道POTCAR中包含的元素,可以用这个命令: grepTIT POTCAR ,
TIT就是POTCAR中的一个固定的字符,通过提取这个字符,获取我们需要的结果,这里我们知道了 POTCAR中含有O元素;
例子2:通过使用: grep ENMAX POTCAR 可以获取POTCAR中O元素的截断能是400 eV;
5) 注意,grep 后面提取的字符,最好在文件中是唯一存在的或者只出现几次,否则我们不容易得到期望的结果; 大家可以运行下面这两个命令,感受下结果;

grep PBE POTCAR


grep 0 POTCAR (可以是0,也可以是字母O)

6) 查看文件的命令还有 more 和 less, 运行less 命令后退出 敲一下 q 键即可;


运行less后再敲一下v,进入vi编辑界面,退出时和vi的退出方法是一样的;

注意:

上面名为详解,但想学的更加深入还要靠自己百度查找相关的linux命令学习手册,ppt等,多加操练。
但,请不要让我推荐参考书给你。百度搜索关键词: limux命令 即可。

2 扩展练习1:

新建10个文件夹,每个文件夹中的SIGMA的数值不同,从0.01, 0.02,0.03 ... 0.10,其他输入文件与本章中的内容保持一致。

按照图中的命令,自己先敲一遍,感受下效果。

注意:
如果出现 cp: omitting directory 这个错误,使用 cp -r 0.01 0.0$i ,也就是在cp 后面加上 -r

详解:

大师兄不想挨个创建10个文件夹,也不想挨个编辑修改INCAR文件中的SIGMA数值。
想必大家都不想这么做,因此在这里教给大家使用一个for循环来快速实现我们的小目标;

2.1 创建名为0.01的文件夹: mkdir 0.01


qli@tekla2:~/test/vasp/O/ex1$ mkdir 0.01

mkdir 是创建文件夹的一个命令,后面紧跟着你要创建的文件夹的名字。
mkdir的使用,有很多敲门。大家可以百度关键词查找: mkdir 窍门,小诀窍 等等。

如果你是看了本文去搜索并学习的小诀窍,请记得分享给周围的人。
大师兄希望本文的读者都有一股乐于分享的精神,而不是自己学到了什么东西,偷偷揣在怀里。

如果你这么想: 我自己学到的东西,凭什么教给别人。那么请:

立即滚蛋,并立即停止阅读本书! 大师兄自己学到的东西,辛苦总结的经验。凭什么让你这种人看。

如果你继续阅读本书,那么后面书中的每一个字,每一个标点符号,空格,空行都时时刻刻代表着我向您致以最鄙视的敬意。直至你学会分享的精神为止

本人无法阻止别人看我写的东西,但我可以通过写几句严厉的话把那些自私的人排除在读者之外。

2.2 将输入文件移动到0.01文件夹中:
qli@tekla2:~/test/vasp/O/ex1$mv INCAR KPOINTS POSCAR POTCAR 0.01/

mv 是linux中: 转移、重命名文件(夹)的一个命令

使用的时候:

1) 转移文件:

mv + 要转移的文件或者文件夹(可以是一个,也可以是N个,N个的话,中间用空格分开,也可以用N个空格分卡) + 转移的目的地。

2) 重命名

mv + 要重命名的文件或者文件夹(只有一个) + 新的名字

3) 1) 和 2) 中的 加号 请使用的时候不要输入,只是解释用的。

2.3 查看下结果:使用ls 命令
qli@tekla2:~/test/vasp/O/ex1$ ls
0.01

此时,只有一个文件夹,说明文件全部移动到0.01文件夹里面去了

注意:

即使是ls这样简单的命令,也有N中玩法。
大家百度搜索 ls 窍门 ,然后进阶学习。

2.4 for循环实现我们的效果
qli@tekla2:~/test/vasp/O/ex1$ for i in {2..9}; do cp 0.01 0.0$i; done
qli@tekla2:~/test/vasp/O/ex1$ls
0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09

详解:

2.4.1 {2..9} 是为了获取从2到9的所有数字, 有两点需要注意:


1)用的是花括号
2)2和9中间有两个点 ..
3)两个点之间没有空格, 2,9 与两个点之间也没有空格。
大家可以练习下面这几个命令来看一下效果:
echo {1..100}
echo {A..Z}
echo {a..z}

2.4.2 for i in {2..9} : 翻译过来就是:对于从2到9的任意数字 i, i在这里是一个变量;我们给 i 赋值,值的范围是 从2到9 ;两点需要注意:


1) i 只是个人喜好而已, 你也可以用 for a in XXX ; for b in XXX;
2) in 后面是一个 集合; 怎么选取这个集合决定了for循环的威力;

2.4.3 for i in XXX 这个句字后面跟着一个分号,如果没有便会出错。


分号前后可以有空格,也可以没有,为了让自己写的东西更加直观,建议加上空格;

2.4.4 do 翻译过来就是: 我们要实现什么任务,目的; do 后面跟一个空格, 或者几个空格

2.4.5 cp 0.01 0.0$i cp 0.01 把 0.01 这个文件夹复制成 0.0$i 文件夹;

在这里
1) $i 调用for 里面赋予变量 i 的值,然后将$i 替换;
2) 我们使用了 cp 这个命令 复制文件夹:

cp + 要复制的文件(夹) + 新的文件夹的名字

思考下:

对于一个文件A: 我们执行了下面2种操作:

第一种) mv A B
第二种) cp A B 然后 rm A

我们的目的是将A重命名为B。但这两种做法都是可以的。这里大师兄想告诉你的:

i) 尽量找最简单的方法(第一种)实现所期望的目的
ii) 如果不知道最简单的方法, 那么可以尝试其他方式来解决(第二种)。

3) 再次强调: 如果出现 cp: omitting directory 这个错误,使用 cp -r 0.01 0.0$i ,也就是在cp 后面加上 -r

cp -r 0.01 之间由两个空格, - 和 r 之间没有空格。


2.4.6 复制完成后,后面跟着一个分号; 分号和前面的内容之间可以有空格也可以没有空格;

2.4.7 done 完成任务。

2.4.8 大家可以尝试着其他类似的命令:for iin XXX; do XXX ; done


比如: for bigbro in {A..Z}; do echo bigbro is $bigbro ; done
这个例子只是为了说明,for 后面的变量如果你用i 表示,那么后面就用$i 来引用;如果用bigbro 来表示,后面则用$bigbro; $ 和后面的变量之间没有空格。(你可以加上空
格,看看有什么错误出现!)

3 扩展练习:

3.1 熟练使用 ls, cat, cd , mkdir , cp , mv 这几个命令,如果不会,从百度里面多找一些linux常见命令学习的文章;


3.2 学会用grep命令提取文件中的内容;
3.3 创建从A到Z的26个文件夹,并且把INCAR复制到这些文件里面;

4 总结:

这一节主要是交给大家展示下如何使用一些基本linux的基本命令:
1)使用cat查看文件内容;
2)grep 提取大文件中的内容,
3)使用for循环初步实现一个批量的效果。
请大家务必多加操练,以及完成扩展练习。至少图中的例子要练习一遍,能看懂什么意思。 下一节我们介绍另一个批量处理的方法。

5 给读者的话:

文中也提到了,本人不希望自私的人作为我的读者。请大家主动,并乐于分享自己的所学。
就如同心灵鸡汤里的老和尚所说:只有倒掉杯子里的脏水,才可以装更多干净的水。
当你把自己学到的东西分享之后,别人就和你在一个起跑线上了,你就必须去学习新的东西才能继续将别人甩在后面。
但你学习的过程,对事物的理解以及解决问题的思路和策略,别人是不会通过你分享的东西学到的。这也是你最宝贵的财富。
所以,请大胆的分享吧。当然,如果你的课题是要保密的,请遵守基本的原则,不要拿出来装X。

上一篇:Learn VASP The Hard Way (Ex 3): 做计算常用的批量处理方法(二) 下一篇:Learn VASP The Hard Way (Ex1): VASP基本输入文件的准备
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 3): 做计算常用的批量处理方法(二)


2017-06-11

Ex3 做计算常用的批量处理方法(二)

前面练习中我们在0.01的文件夹基础上,通过一个命令,复制得到了从0.02到0.09的文件夹。但是, 所有文件夹中的输入文件都是一样的,我们还需要把INCAR中的SIGM
A参数值 SIGMA = 0.01 改成与文件夹对应的数值。 首先我们可以逐个进行编辑,但太浪费时间,这也不是大师兄的风格。下面练习中,我们结合上节的for循环和一个新的l
inux命令: sed 来教给大家实现批量处理输入文本的另一个方法。
注意:大家要主动,并系统性的学习linux下面的基本命令。光指望着本书中的这么一点,是很难提高的。

1 重复图中的命令:

详解:
1.1 刚开始,在 sigma 文件夹下面,有一个文件夹0.01,包含了我们的VASP输入文件(INCAR,KPOINTS, POSCAR 和 POTCAR);
1.2 for 循环将0.01的文件夹复制成其他的sigma数字的文件夹;
1.3 使用cat 查看 0.04 文件夹中的INCAR文件
1.4 重复第三步,但这次在命令后面加了一个选项 –n ,该选项在输出中给每一行标出了行数,方便我们查看。
注意:
1)Linux 下面的命令都有很多的选项,用以丰富我们的不同需求。可以使用 man cat 这个命令查看 cat 的其他选项.使用这个命令后,如果想退出,敲 q 键即可;
2)另外,我们也可以使用 cat –help 来查看,效果与man cat 一样。
1.5 for循环命令实现我们的批处理目的:将每个文件夹中INCAR 的SIGMA值替换成文件夹的值。
1) for i in *; 这里的 * 指的是sigma文件夹下所有的文件以及文件夹,本例中没有文件,只有从0.01, 0.02, 0.03 到 0.09 的文件夹;
for i in * = for i in 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
2)等号右边的一系列文件夹之间用空格隔开,可以是一个空格,也可以是N个, 同样 for i in {1..5} = for i in 1 2 3 4 5
1.5.2 使用sed 命令将INCAR中的 0.01 (所有文件夹中的都是0.01)替换成文件夹的数字;

1.6 sed -i “3s/0.01/$i/g ” 精解:

sed –i 是sed 的命令和其附加选项, -i 表示直接对源文件进行编辑,也就是说编辑之后源文件被新文件替换掉。因此,使用这个参数的时候要小心,先不加 -i 运行下sed命令


,确保输出的是正确结果后,然后再加上 -i运行,要不然源文件就被替换了。
1) 双引号中是我们的操作, 3s 表示的是选择第三行,因为我们知道 0.01 在第三行中出现,s 是select 的缩写
2)3s 后面跟一个斜杠 / 用来和后面被替换的内容分开,这里0.01 表示选择第三行的0.01;
3)0.01后面再用一个斜杠,将其和替换后的数字分开(0.01 0.02 0.03 等),表示将0.01替换为斜杠后面的内容;
4)再加一个斜杠,后面的g 代表 global ,意思是全部替换。
5)输入完毕后,我们选择要执行该命令的对象(要替换的文件),也就是所有文件夹下面的INCAR 文件,$i/INCAR

注意:这里我们用的是双引号 " " ,sed 命令中你也会见到大部分都用单引号 ' ' 。但如果这里使用单引号,则所有的 0.01 都会被替换成 $i (单引号中的$i 是纯字符),因为单
引号中的所有内容都会被当做字符来处理,也就是里面是什么就输出什么。使用双引号,则可以读取变量 $i 的值,下面的例子大家一看就知道怎么回事了:
这里单引号中的内容被原封不动地打印出来了。

1.5.3 done 敲回车执行任务

1.6 该命令瞬间运行完成,我们查看下 0.04 中的INCAR , sigma的数值已经替换成0.04 ,完成任务!


----------------
备注: sed 是一个非常强大的命令,对于做计算的我们来说,正确的使用sed可以极大的提高我们的工作效率,大家务必硬着头皮掌握这个命令。这个网站列举了一些基本的
用法,大家参考下,
http://man.linuxde.net/sed
也可以百度里面搜索一些其他的 sed 使用技巧,如果你有认为很好的sed 技巧,也可以留言分享给大师兄。

2 Ex1中KPOINTS的扩展练习

返回上一级目录,并创建 kpoints 文件夹,


cd ..
mkdir kpoints

然后执行下面图中的命令,完成KPOINTS的批量操作;
(PS:图中大师兄故意犯了两个错误,一个是没有正确设置需要修改的文件, 另一个是上面提到的单引号和双引号,大家可以根据前面所学尝试着避免里面的错误)

单引号和双引号的区别,相信大家在练习完之后能大体知道个所以然了,但这个例子中我们怎么把已经犯的错误改正过来呢? 难点在于区别$i是参数还是字符上。下面我们
用一个反斜杠 \ 将$i当成字符来处理,进而避免将其按照变量来处理。

此外,如果被替换的内容中含有 / , 直接输入则会被认为是分隔符,因此我们需要这么输入\/ (一个反斜杠加单斜杠,中间没有空格),这样的话 / 就会被当成字符来处理啦! (


大家可以运行下这个不加反斜杠的命令: for i in {1..6}; do sed -i "4s/$i $i $i/$i $i $i/g" $i$i$i/KPOINTS 看看有什么效果)

3 本节要求
1) 学会 man command 或者 command –help 查看命令的具体参数;
2) 大量使用sed 命令进行操作练习;
3) 熟知单引号和双引号以及 \ 的使用;
4) 百度查找其他关于前三个的知识。
5) 根据前面所学,完成ex0中POSCAR的扩展训练。

4 总结

本节练习:
1)主要教给大家如何查看linux下面各个命令的详细参数(cat –n, sed -i),
2)知道 * 在for循环中代表的含义;
3)如何使用sed 命令对文本进行替换;
4)sed 中的单引号,双引号的区别;以及 \在字符处理中的作用。

下一节我们学习简单批量处理的最后一个关键点。

上一篇:Learn VASP The Hard Way (Ex 4): 做计算常用的批量处理方法(三) 下一篇:Learn VASP The Hard Way (Ex2): 做计算常用的批量处理方法(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 4): 做计算常用的批量处理方法(三)


2017-06-11

Ex-04 做计算常用的批量处理方法(三)

相信大家已经完成了Ex-03中关于POSCAR批量操作的扩展练习。在这里,大师兄需要指出的是,批量操作的方式有很多种,大家千万不要仅仅局限在本书的例子里面,自己主
动去思考这些命令的运行方式,学习新的东西,开发你的大脑,最后才能做到随心所欲,达到无招胜有招的境界。如果只跟着大师兄的教程去练习而不主动思考的话,时间长了
思维就会被限制了。

此外,大师兄给的例子是都可以正确执行的,虽然易错的地方已经指出来了,但大家主动犯错,得到错误的结果时,印象会更加深刻些。有句古话说的好:纸上学来终觉浅,绝
知此事要躬行。所以,行动是很有必要的。大家在此基础上多加尝试,尽可能多的犯错误,知道什么样的输入对应什么样的错误。

1 POSCAR 批处理练习:

重复下图中的操作,完成POSCAR的批量练习,思考这些命令是怎么工作的。
2 命令详解:

2.1 seq 命令用来打印一系列的数字:


在这个例子中 seq 8 2 16 获取8到16之间的数字,间隔为2;
其中, 8 2 16 三个数字间需要用空格分开;
看到这里你会想到之前我们使用的花括号 {};
对的,如果间隔是1的话, {1..9} 和 seq 1 1 9 以及 seq 1 9 是一样的;
seq 1 9 中省略的是 seq 1 1 9 中间的 1, 因为它是默认值;

2.2 for 循环的精髓之一: for i in $(seq 8 2 16); (注意,是分号,不是冒号!!!)

在这里,我们使用了 $() 这个组合, 它的作用是: 调用一个命令或者函数的输出,进而转化为for循环的对象集合;


for i in $(seq 8 2 6) 等于for i in 8 10 12 14 16 。

注意: $ 和 后面的括号之间没有空格!!!

大家运行一下 for i in $ (seq 8 2 16) 这个命令,主动尝试, 看看会出什么错。

此外,你还会见到一些人使用 ` ` 这个符号(反单引号);
`seq 8 2 16` 的效果等于 $(seq 8 2 16);
所以,当你见到 ` ` 时,不要害怕,因为你知道里面是在调用一个命令或者函数,和 $() 效果是一样的。linux下面有很多奇奇怪怪的字符,当你知道他们的意思时就见怪不怪了

为什么说这是 for 循环的一个精髓呢?

从for循环的语法上看,有两个部分:
1)第一个是选取对象,也就是for i in XXX 语句中的 XXX 部分;
2)另一个是去执行的动作, do YYY ;

对于do YYY 我们根据自己的要求或者要现实的目的,把命令填到YYY这一块就可以了。

但是,对于前面的集合选取,这就需要大家脑洞大开了。
最简单的是根据自己的任务要求选取合适的范围直接输入,比如 for i in 1 2 3 4 5 ;
再复杂些,我们使用一个函数,命令或者更高级的命令操作来得到所需范围,如本例中 for i in $(seq 8 2 16)。

当我们准备计算输入文件,查看计算亦或者整理计算结果时,首先要对这些文件或者文件夹进行选择,即把需要处理的对象放在一起。为了保证for循环变量范围的高效
选择,养成一个良好的计算习惯非常重要:那就是保持计算在不同目录下的一致性;也就是目录要规范,根据不同的计算等级或者类型进行创建。

在这里教给大家另外一个linux 命令: tree 来查看当前目录下的文件夹级别信息,用以给for循环提供合适的变量; (tree 和 tree -d, 尝试下有什么不同)


图中例子给出了一个非常清晰的文件目录结构

2.3 for + sed 的命令组合:

在for循环中的do YYY部分,我们使用了 sed –i “3,5s/8.0/$i/g”

3,5s 的意思是 选择第三行到第五行中所有的8.0;然后将它们替换成$i;


有很多同学不知道怎么一次性选择三行中的内容,便运行了这和循环命令三次:
sed –i “3s/8.0/$i/g”
sed –i “4s/8.0/$i/g”
sed –i “5s/8.0/$i/g”

从这里可以看出,如果你会用一个命令,可以节省很多时间; 但如果你懂得如何进一步发挥这个命令的作用,那么它会更加节省你的时间。省下来的时间你可以去看书,运动,
谈恋爱…等等。想想都是很美好的事情。记得本人刚读博士的时候,组里的一个博后给我说:如果你想偷懒,那么就必须多动脑! 大家可以在运行完命令后,仔细体会下这句话
的思想。后面我们也会在计算过程中有针对地介绍sed 的用法。
而大家主动学习怎么去偷懒是最重要的。

3 扩展练习

3.1 尝试着运行0.01中的计算,
3.2 在vasp官网中查找资料,初步了解VASP的输出文件;
3.3 使用vi(vim)或者其他文本程序打开这些输出文件,了解它们的内容;
3.4 发现输出中的关键词(原则:只出现一次或者几次),并用grep命令提取它们。

4 总结

本节我们学习了:
1)seq 命令获取数字序列的方法;
2)for循环中使用 $() 调用命令输出为变量提供选择集合的方法;
3)以及sed 一次性选择多行的方法。
4)for 循环处理任务时,对象的选择很重要,这要求我们的文件系统有序而整齐。如果文件夹一个套一个,随意创建,毫无规则可言,那么在用for循环的时候,工作效率就会大大
地打折扣。

前面这几节没有直接进入计算部分,是因为我们的一句古话:工欲善其事必先利其器。进行理论计算,学会最基本的相关操作知识非常重要。当然这只是一个小利器而已,真
正的利器在于你扎实的理论化学基本功。
上一篇:Learn VASP The Hard Way (Ex 5): VASP运行以及OSZICAR详解 下一篇:Learn VASP The Hard Way (Ex 3): 做计算常用的批量处理方法(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 5): VASP运行以及OSZICAR详解


2017-06-11

Ex5 VASP运行以及OSZICAR详解

前面我们已经准备好了VASP的四个输入文件,那么该如何让vasp 算起来呢?
每个课题组都会有自己不同的任务提交系统,常见的就是PBS的作业管理系统;分下面三种情况:用脚本提交,用命令提交,以及网页提交;大家可以向自己的师兄师姐讨要提交
任务的方法,这里边不再具体介绍。

1 运行vasp:

本图仅做参考,大家自己练习时的要求:VASP正常运行结束。

1.1 登录服务器;这里大师兄用的Ubuntu系统,终端里面直接输入登陆命令,输入密码即可。
Windows系统可以使用 Winscp + Putty, SSH SecureShellClient 以及其他的服务器连接工具;
1.2 将任务文件拷贝到服务器上;Winscp, SSH SecureShellClient这些软件界面直接拖拽即可;
1.3 进入练习的文件夹,前面几节的练习大家也可以直接在服务器上进行;
1.4 上图中提交任务的脚本为:sub4
1.5 命令: qsub sub4 提交任务,排队,等待计算完成
1.6 怎么登陆服务器,上传和下载任务文件,以及提交命令,这些都是大家从自己课题组里面学到的东西,如果没有,请找导师或者服务器商解决。

所以:
怎么提交任务?
谁有提交任务的脚本啊?
怎么用命令提交任务?
类似这样关于服务器提交任务的问题,是杜绝在大师兄群里提问的。

2 查看输出文件,判断任务结束:

计算完成后,会出来很多文件,前面ex0里面大家已经初步了解到这些文件大部分都没用,不用被他们所吓倒,我们后面会一一解释。
检查任务是否算完有很多种方式:查看队列,邮件通知(看大师兄任务脚本里面的邮件),查看输出文件。这里大师兄用的是后者: tail OUTCAR (OUTCAR是vasp的主要输出
文件), 这个命令用以查看文件最后面的几行,如果你的OUTCAR 和图中的一样,说明任务已经完成。

备注: tail 以及 head 这两个命令,自己学习下相关的用法,熟练掌握。

百度直接搜索关键词: linux head 或者 tail 命令 即可得到很多教程,这里大师兄就不啰嗦了。

3 OSZICAR 详解:

大师兄你是不是搞错了? 前面不是说OUTCAR是主要的输出文件吗?怎么跳到OSZICAR上面来了? 没错的,大师兄想了很长时间,基于OSZICAR的重要性(包含了计算过程的


具体迭代信息)和简单的特点,对大家初步了解计算过程非常有帮助。

怎么打开或者查看OSZICAR文件?

首先记住一点:它是文本格式。因此可以用:
1)文本编辑器(NotePad++)直接打开;
2)也可以用vim打开;
3)还可以用cat 命令查看,
4)亦可以用 less 或者 more 命令查看,
Sooo easy!!!
不管用什么方式打开,我们需要的就是把里面的内容呈现在眼前。
首先说明一点,由于体系是单个原子,没有必要进行结构优化,因此这里只有一个离子步。
请以后不要再这么问:大师兄,怎么优化一个单原子的体系啊?

1 N E dE d eps ncg rms rms(c)


2 DAV: 1 0.363606608360E+02 0.36361E+02 -0.98834E+02 24 0.195E+02
3 DAV: 2 0.815260584647E+00 -0.35545E+02 -0.35545E+02 48 0.327E+01
4 DAV: 3 -0.364886031610E-02 -0.81891E+00 -0.81561E+00 24 0.117E+01
5 DAV: 4 -0.123886775924E-01 -0.87398E-02 -0.79838E-02 36 0.110E+00
6 DAV: 5 -0.123956401569E-01 -0.69626E-05 -0.69631E-05 24 0.349E-02 0.307E-01
7 DAV: 6 -0.134138210989E-01 -0.10182E-02 -0.18030E-03 36 0.222E-01 0.155E-01
8 DAV: 7 -0.135108544930E-01 -0.97033E-04 -0.22625E-04 24 0.934E-02
9 1 F= -.13510854E-01 E0= -.11021795E-01 d E =-.746718E-02

3.1 第一行:

1) N 代表电子步的迭代步数,本例中里面有7个电子步。
2) E 代表当前电子步的体系能量;
3) dE 该步和上一步体系能量的差值;
4) d eps the change in the bandstructure energy;本征值的变化
5) ncg the number of evaluations of theHamiltonian acting onto a wavefunction;波函数的优化次数
6) rms the norm of the residuum of the trialwavefunctions (i.e. their approximate error)
7) rms(c) the difference between input andoutput charge density.

注意:4)-7)大师兄直接把原文复制过来了,因为这里俺也是一知半解,对每一个电子步的具体计算过程也不了解,直接翻译过于太生硬,恐对大家造成误解。如果知道怎么
恰当描述,请多多指教。

3.2 第2-8行:

3.2.1 DAV:blockedDavidson iteration scheme 的缩写,一个电子自洽算法的缩写,今后的计算中你可能还会看到RMM (residual minimization scheme) 和 CG (conjug


ate-gradientalgorithm)等,这些是由INCAR中的ALGO 参数决定。可以参考一下VASP官网(扩展练习4.2)以及PPT介绍: 此外, rms(c)最后一列为什么会有几行空着,我也
不知道。
3.3 最后一行(收敛结果):

1 F= -.13510854E-01 E0= -.11021795E-01 d E =-.746718E-02


1) F前面的 1 代表 离子步的步数,本练习只有1步,
2) F = 是体系的总能量, 与OUTCAR中 free energy TOTEN 后面的值相等(下图倒数第二行);
3) E0 后面的能量对应OUTCAR中 energy(sigma->0)后面的能量(下图到数第一行)。

注意: 我们这里提到了一些OUTCAR的内容,大家可以顺便查看下, 有个印象。


free energy TOTEN 后面的能量 减去 Entropy T*S 后面的能量, 就是 下面一行 energy without entropy 对应的能量。

4) d E 项:在优化结构过程中,等于前后两个离子步之间能量差值; 在单点(静态)计算中(本例),等于 entropy * sigma 的值, sigma值来自INCAR, entropy 可以在OUTC


AR中获得, 对应 entropyT*S 这一项:具体操作如图:

1) 这里用到了grep 命令;
2) 提取的内容为单引号中的 'entropy T' ,单引号必不可少,因为T前面只有1个空格;
3) 用了一个 | 符号(pipe), 它表示把前面命令的输出传递给后面的命令;
4) tail –n 1 只获取最后一行;
5) head –n 1 只获取开始的一行。

3.4 OSZICAR 中 E0 与OUTCAR中 energy(sigma->0)后面的能量是一样的,这是计算完成后我们需要获得的体系能量(死死记住!)。所以计算完成后,可以通过 grep E0


OSZICAR 或者 grep 'energy(' OUTCAR 来获得, 为什么要加单引号呢? 大家可以练习一下图中的操作。

grep 不能直接识别括号,必须把它放到单引号里面作为文本处理, 也可以额加一个反斜杠 \ ;


细心的你可能注意到了:最后一行和前面不太一样,因为它的 without 前面有两个空格。
观察到这一点,我们就可以通过grep ' without' OUTCAR 来获得能量结果,
此外:在本例中:grep ' without' OUTCAR (两个空格) 与 grep ‘ without’ OUTCAR | tail –n 1 (一个空格或者没有空格)
效果是一样的,大家可以尝试下,并多多练习一些基本的命令。

很多人问: energy without entopy 后面有一个能量(先标记为能量1),后面还有一个能量:energy(sigma->0)(标记为能量2),那我们该用哪一个呢?

1) 首先强调一下:前面我们说了,要牢牢记住 energy(sigma->0)后面的那个能量。这并不是说energy without entopy后面的能量不能用。


2)能量2 跟能量1 的主要区别在于,能量1是在INCAR中SIGMA数值下的能量。 而能量2则是SIGMA趋于0的时候的数值。我们知道Sigma越小越精确,但我们的计算
量也会增加。因此VASP便在计算的结果基础上推导出SIGMA趋于0时的数值。
所以,如果你设置的SIGMA足够小的时候,能量1和能量2应该会很接近。
3) 此外,如果当你的SIGMA数值在合理的范围之内,你也可以用能量1。需要注意的是:如果你在一个课题中用的是能量1,那么就一直用能量1。如果你用能量2,那
么久一直用能量2。 两者不能混了,虽然有时差别很小,但当你发现混着用的时候,心里还是憋得慌。

有人问,为什么不直接提取sigma,而非得加单引号呢?

答:可以提取,但很危险!看下面的例子:

神马情况?

这里大师兄用了 grep sigma-> OUTCAR 命令,运行后迟迟没有动静,于是强制杀掉(control键+C)。运行cat OUTCAR命令后,发现OUTCAR已经空了….


所以,如果你想通过sigma来提取OUTCAR中的能量:
grep sigma OUTCAR OK,
grep sigma- OUTCAR OK,
但绝对不要画蛇添足,把箭头 > 再放进命令里面!

4 扩展练习:

4.1 阅读官网链接:进一步了解OSZICAR的输出各项的含义, 了解VASP电子步计算的过程,以及ALGO参数;


https://cms.mpi.univie.ac.at/vasp/vasp/stdout_OSZICAR_file.html
https://cms.mpi.univie.ac.at/vasp/vasp/ALGO_tag.html
https://cms.mpi.univie.ac.at/vasp/vasp/Algorithms_used_in_VASP_calculate_electronic_groundstate.html
4.2 同样的方式打开OUTCAR,查看里面的信息,结合官网学习各项含义,尝试着用grep,|, tail, head 这几个命令组合提取信息。
4.3 结合自己关于氧原子的化学知识,思考本计算,有什么地方不合理?

5 总结:

经过本节练习,大家学习了OSZICAR 中各项的具体含义,以及与OUTCAR中一致的能量部分,学习了 grep 结合| 以及 head, tail 提取信息的方法,知道了计算完成后哪一个


能量是我们所需要的。一定要耐住性子浏览官网,万事开头难,稳扎稳打,不要图快导致基础不扎实。此外,OSIZCAR 电子步的部分解释(4-7)没有到位,希望大家提出宝贵的
意见。

上一篇:Learn VASP The Hard Way (Ex6): OUTCAR 的基本内容 下一篇:Learn VASP The Hard Way (Ex 4): 做计算常用的批量处理方法(三)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex6): OUTCAR 的基本内容


2017-06-11

Ex-06 OUTCAR 的基本内容


OUTCAR是VASP的主要输出文件,但官网并没有给出太多详细具体的说明。大师兄对这一点也存在疑虑,思考了下其中的两个原因:
1) VASP可以计算的性质很多,每一个特定的任务都有其对应的输出内容,这就导致了OUTCAR的复杂多样性,比如说优化结构、频率、声子谱,能带、DOS等计算等,这些都会有特定的输
出,需要用户根据自己的计算内容去学习;
2) 另外一个原因就是里面的条目太多了,每一项单独解释都需要花费大量的时间,
工作人员偷懒,也就把这个问题留给了用户自己去解决。

本节,我们通过前面的计算例子,简单介绍一下OUTCAR的基本结构以及输出内容,给大家一个大体的印象,不至于看到这么多行的结果眼花缭乱。
在介绍之前要告诉大家的是,VASP各个输出部分之间用横杠分割(---------------------),当你看到横杠的时候,就知道要进入结果的下一个部分内容了。
VASP会列出来其版本,时间,以及服务器的相关情况,如下图:

所以,如果你不知道,自己的任务是VASP哪个版本计算的,也不知道如何去VASP的安装目录查找版本信息,可以运行一下,然后在OUTCAR的开头去找。

输出我们的INCAR和POTCAR的部分信息:
每次运行的时候,(即使你的输入是正确的),VASP都会输出一个大大的WARNING来吓唬你,大家可以忽略它。但如果你的计算失败了,这个警告信息对你排查错误可能会有所帮助。 下面
是POTCAR的基本信息,如果你想通过OUTCAR查看POTCAR中的元素时,可以使用下面的命令:
grep POTCAR OUTCAR
grep TIT OUTCAR
grep ENMAX OUTCAR
…..
ZVAL是该POTCAR中对应元素的价电子,这里氧原子含有6个外层价电子。

POSCAR的一些基本信息: 坐标格式,原子位置,以及晶胞的形状大小。

体系的对称性以及点群操作相关的信息,在这里我们的体系是立方体,为O_h的点群,有48个对称操作。群论的知识大师兄早已原封不动地还给老师了,在这里就不再详细介绍了…
K点信息:想查看K点个数:grep irreducible OUTCAR 或者 grep irre OUTCAR

计算参数详情(默认的参数值以及代表的意义也列出来了,这个地方大家仔细看下, 一些不常见的参数,采用默认值就好,不用在INCAR里面额外再写一遍!
强调一下,不知道的参数,不要瞎往INCAR里面放!新手的话经常会加一些乱七八糟的参数,导致计算错误。)

本计算的文字描述,任务类型:
体系大小,K点数目等信息:

计算所需的内存信息:
开始电子步的的迭代过程:注意能量在不同迭代步数中的变化:

每一电子步完成后,输出结果同时在OSZICAR中更新一行。
其中各项的具体含义:alpha Z and the Ewald energy define the electrostatic interaction of the ions in a compensating electron gas.
The alpha Z component deals with the divergent parts (G=0). The following parts are the Hartree and exchange correlation energy as
defined in theKohn-Sham Hamiltonian. The entropy part stems from the smearing (using the free energy as variational parameter, electronic entropy), EBANDS fromKohn-Sha
m eigenvalues, and EATOM is the reference energy for the potential(which is defined in the POTCAR file). 出自扩展阅读3
迭代结束,输出主要的结果:费米能级以及能带信息。Band 1 对应的是2个 2s 电子, band 2 34 对应的是4个2P电子。固体物理中,费米能级对应的是最高电子占据轨道的能量,也就是HO
MO,大家可以对比下band 2 3 4 和费米能级的能量。再思考下,这个结果是否正确?

体系的坐标,各个方向力的大小,以及总的能量,不包含使用ISMEAR时,所引入Entropy的能量,以及sigma趋于0 时的能量。这里 without 和 energy 之前有两个空格。(注意:这里的Entr


opy是采用ISMEAR方法而导致的,与物理化学中的熵这个概念不一样,如果你要计算熵,则需要通过计算频率,然后通过公式求解。)
计算的内存和时间等信息,看到下面,说明计算正常结束了。

分析完前面的内容,大家会发现:具体到里面各项的含义以及各个细节上,还有很多值得讨论的地方,比如群论,薛定谔方程求解过程,POTCAR的相关信息等。对于新手来说,看完本节,能大体浏览下来,
知道各个部分包含什么内容就很不错了。
扩展训练:
1 结合氧原子的外层电子排布,思考下,本例算的结果是否正确?
2 POTCAR 的相关信息,浏览官网,尽可能多的掌握信息:
https://www.vasp.at/vasp-workshop/slides/pseudoppdatabase.pdf
https://cms.mpi.univie.ac.at/vasp/vasp/POTCAR_file.html
http://cms.mpi.univie.ac.at/vasp/vasp/Pseudopotentials_supplied_with_VASP_package.html
https://cms.mpi.univie.ac.at/vasp/vasp/PAW_potentials.html
https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_PAW_potentials_DFT_calculations_using_vasp_5_2.html
https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_GW_PAW_potentials_vasp_5_2.html
3 https://cms.mpi.univie.ac.at/vasp-forum/viewtopic.php?t=273

总结:
本练习中,带领大家粗略浏览了一遍OUTCAR中各部分的信息。大家在浏览的时候时刻要思考,这部分包含的什么内容,具有什么物理或者化学意义? 怎么用grep 关键词获取有用的信息等。
由于计算内容的多样性,对于OUTCAR的详细解释,目前来说还需要很多的时间和精力去完成补充,当然,在后续的计算过程中,我们还会结合具体的例子进行讲解。

一般来说,等你计算上手之后,OUTCAR里面的很多内容,可能等课题结束或者毕业了,都不会用到,更进一步说,你可能都不会打开OUTCAR了。因此,完全不用担心里面的很多内容不理解。但,这不是
你偷懒的理由,如果你想把VASP学好,学精,这些都需要自己下功夫去琢磨,理解。

上一篇:Learn VASP The Hard Way (Ex 7): 前6节总结 下一篇:Learn VASP The Hard Way (Ex 5): VASP运行以及OSZICAR详解
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 7): 前6节总结


2017-06-11

Ex7 前6节总结
Ex{0..6} (Ex$(seq 0 6))

前面6节练习讲述了初学vasp的一点皮毛,但通过大家的学习过程以及提出的问题来看,还是没有达到大师兄所期待的效果,本节回顾一下前面所讲的内容点,帮助大家加深印象,消除疑虑。

前言
在前言里面,大师兄介绍了如何进行vasp学习的方法,并推荐了3本参考书(QQ群文件,自己去下载)。但是大家经常提问的是:我是vasp小白,请问有没有关于量子化学的入门书啊?
大师兄的经验是,小白们都很贪,希望入门书越多越好。很多人手上都有好多本,这样感觉才踏实,但真正阅读的一本都没有,取而代之的是整天在群里瞎问。如果你有这样的问题,先看前言,自己默默
下载这三本书,放弃这个问题。

Ex0
0.1 VASP 的输入文件均为文本,不存在尾缀等格式问题,使用的编辑工具:Linux下面可以用vim,atom,Windows 下可以用 notepad ++, atom等等;这些软件的基本操作,大家平时多加琢磨,notep
ad++ 还可以竖着选择文本。另外推荐一个编辑工具:ultra-edit 大师兄读硕士的时候组里面的人经常用,有兴趣的也可以尝试下。

0.2 程序语言学习:
A)bash 语言:前面6节大师兄带领大家学到了很多相关的命令,自己勤加操练;
B)python语言:在处理数据方面有着得天独厚的优势,支持丰富的扩展库;可以尝试着去了解,学习。参考书(learn python the hard way)
C)关键是自己主动去思考命令的运作方式,怎么把自己的思维转化成程序语言表达出来,这一点大师兄后面会继续强化。

0.3 计算相关的可视化软件的安装:
Materio Studio, P4VASP, VESTA, VMD,Molden,Xcrysden,

学习完本节:大师兄群里禁止提问的内容:
A)求学习python的参考资料;B)求MS的下载链接; C)VASP的输入文件怎么打开啊?

Ex1
在ex1 练习中,我们学习了如何制作INCAR,KPOINTS, POSCAR 和 POTCAR这四个文件:
1.1 INCAR里面参数的原则是:越简单越好,乱七八糟的默认值不要往里面放。目前学习到的ISMEAR和SIGMA参数熟记于心,知道这个参数是干什么的,在不同体系中的值怎么设定。
1.2 KPOINTS 记住 gamma centered 和 monkhorst 的区别。为保持晶格和K点的对称性,优先选择gamma centered;
1.3 POSCAR中知道分数坐标和笛卡尔坐标的区别,大师兄见过有人在POSCAR里面写Cartesian,然后用分数坐标的情况!
1.4 POTCAR:知道自己组里面安装的POTCAR数据库的目录,不要问大家去哪里找你们服务器里面的POTCAR!

学习完本节:应该懂得输入文件中每一行对应的含义以及如何制作输入文件,对VASP不再抱有恐惧的心理,如果计算出错了,这四个文件是必须要检查的部分。永远记住这句话:rubbish in, rubbish


out!
Ex2
2.1 学习基本的linux操作命令:ls,mkdir, cat, grep, cd, mv 等;
2.2 初步掌握for循环,实现简单的批量处理;

学习完本节,对Linux环境不再陌生,并且初步熟悉linux下的相关操作,如果遇到问题,主动去把出错信息复制到百度或者google里面,搜索自己解决。

Ex3
3.1 学会使用man command 或者 command –help 进一步拓展命令的使用功能;
3.2 学会sed 命令,结合for循环进行批处理

学习完本节:学会for循环+sed命令实现文本批量处理,并且对linux环境下的命令有进一步的了解。

Ex4
4.1 通过调用命令结果,实现for循环中变量范围的选取;
4.2 Sed 多行选择,批量处理;
4.3 学会整理工作目录,保持其规则有序,以便于后面的批处理。

学习完本节:学会$()调用命令的输出结果,在后面的学习或者科研工作中,养成一个整洁的好习惯。

Ex5

5.1 提交任务并正常结束;(如出错,请认真对比大师兄的输入文件,找到出错点,记下来!);
5.2 掌握OSZICAR中各项的基本含义;
5.3 OSZICAR中的能量信息和OUTCAR中的对应部分要知道;
5.4 OSZICAR 的第一列对应的ALGO选项(算法:DAV,RMM等)要知道;
5.5 Grep sigma--> OUTCAR 这个命令绝对不能用来获取能量;
5.6 Grep,head, tail 以及通过 | 将两个命令串联起来的方式要熟记。

学习完本节:对OSZICAR不再陌生,认识了VASP输出文件的其中一个!

Ex6

6.1 OUTCAR的大体流程要了解;
6.2 学会grep + 关键词提取每一部分中怎么有价值的信息,
学习完本节:认识了VASP最重要的输出文件,并且在后面的学习中,知道如何获取想要的信息。

总结

通过复习一下前面6节以及前言中的问题,新手们对自己目前的水平应该有所了解。
此外,序言里面推荐的这本书:Density Functional Theory:A Practical Introduction对于那些基础不扎实菜鸟们来说,务必要认真阅读。网上很多版本里面,公式符号丢失了,建议区Wiley官网或
者大师兄QQ群里面下载完整版。

新手学习VASP一定要循序渐进,不要贪多。VASP官网很多示例,自己也可以主动去练习,并和官网结果对比。此外,出现错误更不要慌张,仔细检查自己的输入文件,或者把出错信息复制到百度或者g
oogle里面,查找原因。很多低级的错误,去群里面求助只会浪费你和大家的时间,而且你自己解决问题的能力也不会得到提升。

上一篇:Learn VASP The Hard Way (Ex 8): 氧原子能量的正确计算 下一篇:Learn VASP The Hard Way (Ex6): OUTCAR 的基本内容
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 8): 氧原子能量的正确计算


2017-06-11

Ex8 氧原子能量的正确计算

前面的扩展练习中,要求大家结合自己的化学知识,判断计算结果是否正确。相比很多同学已经知道了氧原子含有磁性,我们在计算用需要考虑进去。在本节练习中,大师兄
教给你如何分子氧原子在轨道中的占据情况,判断计算是否合理,并正确进行氧原子能量的计算。

氧原子的电子构型是1s22s22p4 轨道占据情况如图:

所以氧原子含有两个单电子,具有磁性,且磁矩为2 μB。

我们看一下前面的计算结果:

OSZICAR :

能量信息:
电子占据的情况:(OUTCAR中查看)

Band1 含有两个电子,对应的2s2;
Band 2-4 为三个简并态,每个能带上有1.33个电子,对应的2p4 。
但在这里,电子的占据是不正确的:
因为2px轨道上含有两个电子,而不是把2px上的一个电子平均分配到3个p轨道上;

此外,通过这个电子的占据情况,我们不能正确得到氧原子的磁矩信息。

那么怎么解决这个问题呢?

分两步解决问题:

第一步:由于氧原子具有磁性,自旋极化计算要进行考虑,在VASP计算中,需要在INCAR中添加一项: ISPIN = 2

ISPIN的取值有两个,1 和 2 :
1 代表不考虑自旋极化,是VASP的默认值;
2 代表打开自旋极化该选项,计算中考虑。

自旋极化什么时候该加,什么时候用默认值呢?

要计算的体系具有磁性时,必须要打开自旋极化。一般来说,单原子的计算,O2分子(基态为三重态),以及含Fe,Co, Ni 的体系需要考虑自旋极化。

添加该选项后,重新计算,结果如下:

INCAR

OSZICAR
可以看出,加了自旋极化后,电子迭代步数增加了,这是因为体系中的电子被强制分成了alpha 和 beta 两种,并分别进行计算,因此增加了计算量。

体系的磁矩大小在OSZICAR中查看,对应右下角的 mag= 该项,从这里我们可以看到,磁矩信息与我们已知的2μB吻合,这一点是合理的,正确的。

OUITCAR中的能量信息:

考虑自旋极化后,体系的能量降低了。

我们重点通过查看体系的电子占据情况,判断该计算是否合理:

从图中可以看出,结果由两个spin 组成: spin component 1 和 2:


spin component 1 中含有4个电子,另一个中含有2 个电子:
参考该图,可以看出 spin component 1 为自旋向上的alpha 电子,另一个是自旋向下的beta 电子。但是:

1)Spincomponent 1中,能带2-4中3个alpha 电子的能量是一样的,这不正确,因为其中一个2px轨道中的alpha电子已经成对,能量要比py 和 pz 低;描述失败!

2)spincomponent 2 中,另一个beta电子还是平均分配在了三个能带上面。
电子占据依然不合理。

上面的结果是由于体系的高对称性导致的简并所造成的。 8x 8 x 8 的立方体格子,在这里具有高阶的点群对称性: O_h, 见OUTCAR

在GGA泛函中,为了获得体系更低的能量,对于原子来说,通常会采用一种symmetry broken solution的处理方法。但是在VASP计算中,体系的对称性则是通过晶胞来获得,


即把这个晶胞当成一个原子来处理,因此我们需要手动改变晶胞的形状来消除对称性造成的简并结果。(此处的解释可能有些牵强,有兴趣的可以查找与symmetry broken
solution相关的文献)

INCAR, KPOINTS, POTCAR等均保持不变。修改POSCAR,如下:

通过改变格子在三个方向的大小,降低对称性。大师兄还尝试了三斜的格子,结果和这个是一致的。(有兴趣的可以尝试下)

下面我们看一下改变晶胞为7.5 x 8.0 x 8.9后的计算结果:

OSZICAR
OSZICAR中电子迭代步数又增加了,这是因为对称性的降低增加了计算量。
磁矩为2μB,这一点跟前面一样,正确!

体系的对称性:从O_h 降低到了D_2h

能量信息:

跟前面能量相比,可以看出,对称性降低后,体系的能量进一步降低了。
电子占据情况:

分析:

1) 在alpha 电子(spin component 1)中,能带1 是 2s中的alpha 电子;能带2-3为两个简并轨道,对应 py和 pz 电子,能带4位px 中的alpha电子。这里能带4 的能量应该比2
和3 要低,但结果恰恰相反,描述不合理;

2) 在beta电子(spin component 2)中,能带1是2s 的beta 电子,能带2为px中的beta电子,此时该beta电子占据了一个轨道,而不是分布在三个p轨道上,结果是合理的。

计算到这里,已经是VASP官网对于单原子能量最为完整和准确的计算了。虽然上面px的alpha电子比py和pz能量高,至少电子的轨道电子占据情况是正确的,且磁矩和简并
的错误已经消除。由此可见, VASP对于单原子的电子占据情况(至少对于O原子来说),虽然取得了部分理想结果,但还是有不足的地方。

此外,体系的对称性可以通过ISYM来控制(扩展阅读ISYM),
ISYM=0的时候,不考虑对称性进行计算,

大师兄也尝试过了将ISYM=0 应用在 8x8x8 (test3)以及 7.5x8.0x8.9 (test4) 的格子里进行计算。对于电子占据情况来说,均得到了与前面7.5x8.0x8.9一致的结果。但是使


用7.5x8.0x8.9所得到的能量更低(test4 的能量比test3低)。

使用7.5x8.0x8.9格子时,ISYM=0 (test4)和采用默认值,得到的能量结果是相同的,因此,改变晶胞的对称性在计算单原子能量的时候是必须的,单独通过ISYM这一项不考虑
对称性是远远不够的。

扩展阅读:

1)ISYM:http://cms.mpi.univie.ac.at/vasp/guide/node115.html

2)重现本节所有练习,并自己认真分析结果,查看电子占据情况,体系的磁性,以及能量信息。

总结:

1)知道什么时候使用自旋极化计算,怎么进行自旋极化计算;
2)知道为什么自旋极化后计算量增加了;
3)知道在哪里查看体系的磁性信息;
4)知道为什么对称性降低后计算量增加了;
5)会分析单原子中电子轨道的占据情况;判断结果是否合理;
6)知道通过改变晶格大小调节体系的对称性从而消除简并对能量的影响;
7)知道ISYM这一个参数,在计算单原子能量中,ISYM的作用远远不及改变晶格大小;
8)知道vasp也存在自己局限性,不要完全相信。

上一篇:Learn VASP The Hard Way (Ex 9): 学会收敛点! 下一篇:Learn VASP The Hard Way (Ex 7): 前6节总结
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 9): 学会收敛点!


2017-06-11

Ex9 学会收敛点!

前面一节我们学会了正确计算氧原子的能量并分析电子在轨道中的占据情况,这一节稍作总结补充。

1 首先我们复习一下上节的结果。
在VASP计算的O原子的电子结构讨论中,来自不莱梅大学的群友(江湖人称梅梅,单身水牛一头!)画了一幅画,大家可以看下:

VASP的结果分析完毕后如下:
看画填数,照猫画虎

由此可见,VASP对于氧原子的描述不是很准确(不理解的请看上一节的详细描述: Learn-VASP-The-Hard-Way(ex8))。而这一点,VASP官网你是找不到的。因此,在计算
的时候,对于自己的体系有一个清晰的化学物理印象很重要。VASP的结果也要有针对的去判断。有的时候,即使计算收敛了,但没有体现出任何正确的物理或者化学意义,那
就是单纯的数学收敛,结果是不可取的。VASP是一个计算的工具,如何正确分析和判断它的输出才是关键的。这一点我们在后面的学习中也会反复强调。

2 VASP是怎么判断收敛的?

我们看一下VASP的迭代计算过程:
这里就是VASP的
整个结构。

首先,它会猜一个初始的电子密度,然后据此计算体系的势能,求解KS方程,并给出体系的总能量以及对应的电子密度。
将最后一步的结果与前面进行对比,当前后两者的差值达到我们预设的收敛标准时,计算结束。

这个预设的收敛标准在VASP中通过两个参数来描述:EDIFF 和 EDIFFG。

EDIFF 控制电子步(自洽)的收敛标准。在O原子的计算中,由于我们不需要优化,直接进行静态计算,完全由EDIFF控制计算的收敛情况。

从图中可以看出:

第19步和18步的能量差为:-0.3484 E-04,停止迭代,开始输出结果。
这是因为VASP的默认值是 1 x 10-4(扩展阅读EDIFF)

那么,是不是精度越高越好呢,答案是肯定的!

但是,但是,

精度高意味着需要更多的迭代次数,也就是需要更多的计算时间,看下图:
本例中,收敛标准从默认值的1E-4 降低到1E-7,单迭代次数从19增加到了27,相当于增加了原来1/2的工作量。所以,精度太高,计算量会增加。应了那句流行语:请在wifi下观
看,土豪随意。

我们看一下扩展阅读的内容:

第一点:红色框中,官网说:如果我们把收敛标准设置成0,那么迭代会永远进行下去。大师兄很感兴趣,便测试了一番,结果如下:

可以看到,在VASP进行了45步迭代后,精度收敛到了1E-12。VASP便停止了,而不是所谓的always! VASP又把俺们给骗了!
思考另外一个问题: 既然精度从默认值1E-4提高到1E-12 (8个数量级),那么我们算出来的氧原子能量有什么变化呢?看下图:

图中的0, 4, 7 分别代表EDIFF为 0, 1E-4和 1E-7 的情况,我们可以看出,这三个计算结果中,能量随着EDIFF的减小变化甚微。

当然,这也与我们简单的测试体系有关系。倘若计算N多个原子的体系时,不同的精度间的差值会有所增大。

那么我们再看一遍VASP官网的说明:

注意底部的Mind部分:

收敛速度跟EDIFF的值成指数关系,在大多数的情况下,1E-4足以胜任,没有必要采用其他的数值,如果大伙感觉不放心,大师兄建议1E-5即可。

此外,大家在浏览VASP官网的时候,凡是带有Mind,Important字样的,它们后面的文字一定要认真阅读,把握其中的含义。因为这都是大家常见的疑难点以及易错的地方。

EDIFFG 控制几何优化过程的收敛情况,当结构前后变化达到我们的要求时,便停止优化。对于优化,我们可以使用力作为收敛标准,此时EDIFFG为负值。一般来说取值在-0.
01到-0.05之间(-0.01对于力收敛来说已经是一个很严格的要求了)。

当然,我们也可以使用能量作为标准:此时,EDIFFG 为正值,一般为0.001-0.0001。

注意:

不要把正负值弄错了。大师兄见过一个群友这么设置的: EDIFFG = -0.0001


然后在群里咨询为什么他的计算不收敛。这就好比在没有WiFi的时候看视频,卡里的钱扣完了,视频才看到一半…..

小结一下:

EDIFF,EDIFFG 是控制收敛标准的两个参数。

前者负责电子自洽过程(单个离子步内),取值为1E-4或者1E-5即可,没有特殊要求,不建议设置的太低。
后者负责结构优化的过程(可正可负)。对于EDIFFG,默认值采用能量收敛,标准为:EDIFFx10。

扩展训练:

1 EDIFF: https://cms.mpi.univie.ac.at/wiki/index.php/EDIFF
2 在1的页面中,左侧框中搜索EDIFFG,查找相关参数;
3 继续查询之前了解的相关参数,学会使用改网址;
4 根据前面所学,进行O2分子的静态计算,并分析其轨道结果,判断是否合理。

总结:

1 重温了一下上节的结果,不要完全相信程序的结果,物理,化学意义更为重要;
2 初步了解VASP的迭代过程,目前脑子里有个印象即可;
3 必须掌握EDIFF在电子步中的作用,取值大小与收敛速度的联系;
4 死死记住EDIFFG代表的含义,取值可正可负及其默认值;
5 经常浏览VASP官网,尤其是Mind,Note, Important等后面的部分;
6 建议大家浏览VASP的Wiki版网页(左下方原文链接),搜索相关参数,里面的公式较之前模糊的形式,有了很大的改进。

上一篇:Learn VASP The Hard Way (Ex 10): O2结构搭建以及POTCAR注意部分 下一篇:Learn VASP The Hard Way (Ex 8): 氧原子能量的正确计算
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 10): O2结构搭建以及POTCAR注意部分


2017-06-11

Ex10: O2结构搭建以及POTCAR注意部分

前面O原子的能量计算已经告一段落,下面我们把体系变得更加复杂些:O2分子。扩展练习已经做的同学,相信现在已经完成了O2分子的静态计算。本节我们主要介绍一下, O2分子模型搭建的细节
以及POTCAR和POSCAR的对应关系,注意事项。

O2分子模型的搭建:
O2分子很简单,将两个原子在一个直线上连起来就行了。 键长大小可以书本上查, 数据库里找,也可以去网上找些参考资料。
大师兄推荐常见常用的数据库:

1 CRC hand book:


网页版: http://hbcponline.com/faces/contents/ContentsSearch.xhtml

PDF 电子书:
在1403 页(本书有2661页,建议大家查询的时候先把左侧的目录展开,要不然实在是太痛苦!)
2 NIST 数据库(我老板推荐的):

网址: http://cccbdb.nist.gov/exp2x.asp

3 Wikipedia
4 谷歌和百度:

在谷歌或者百度里面直接搜索O2、键长这两个关键词,就可以得出很多的链接,比如下面两个。
https://zhidao.baidu.com/question/101615129.html
http://www.science.uwaterloo.ca/~cchieh/cact/c120/bondel.html
--------------------
大师兄你特么在逗我嘛?氧气原子这么简单的分子,随便一番,当然到处都能得到结果啦!

哈哈,没有逗你。这里主要给大家提供一个数据查询手册(CRC handbook)和数据库(NIST)。当然根据自己的研究方向,还有其他更加专业的数据库,在这里就不详细说明了。

此外,搜索的时候尽量用谷歌,而不用百度,尽量搜英文,不要输汉语。这样你得到的信息会相对多一些。写论文的时候,如果实在不想找相关的参考文献,可以直接引用CRC hand book这本书(前提是


你在这本书里面找到了相关的数据);

另外一个重要的原因是:
如果你的初始结构,比较理想,这会大大加速你的计算过程,还会避免一些意想不到的计算错误(后面的章节会具体介绍到)。

知道了键长信息后,开始结构搭建:

我们知道O2分子为直线型结构(算大师兄没说),其中一个原子在原点的位置上了,那么我们在三个方向上随便找个坐标就可以了。

修改POSCAR如下:

两点要注意:
1 第7行原子个数:把1 改成2 ;
2 第10行添加第二个氧原子的坐标:

第一个氧原子的坐标为0.0 0.0 0.0,不用变动;


另一个我们可以设置为:
沿x方向: 1.2074 0.0 0.0 ;
(xyz三个方向的数值之间可以有1个或者若干个空格)
沿y方向: 0.0 1.2074 0.0 ;
沿z方向: 0.0 0.0 1.2074 。

在搭建模型的时候,脑子里要有一个立体的概念,原子在三维方向上的排列,移动变化等。

关于POTCAR

有人问,大师兄,氧原子多了一个,POTCAR怎么办?是不是每个原子对应一个POTCAR啊?

不是的,POTCAR 是根据POSCAR中的元素顺序创建的(第6行),与原子数目无关。
第6行是体系中的元素,只有O元素,所以我们的POTCAR还是用之前O原子练习的那个;
第7行是体系中对应上一行中元素的原子数

但是!在你的POSCAR中,如果把O写了两遍,如下图:

此时,第6行中有2个O,且第7行中有两个O的原子数目分别为1。 POTCAR中就要对应的两个O原子的Potentials!

主动出错:

如果我们使用上图的POSCAR,且POTCAR中只有1个O原子的Potential。
提交任务后,瞬间完成。这么快就算完肯定不是因为你的服务器多么的牛逼! 而是因为出错了!!
那么我们需要找到错误的原因,怎么去找错误信息呢?

1 查看OUTCAR
VASP就这么几行,从这里看不出来是哪里错了。

2 一般来说,VASP计算的时候,会生成两个额外的文件,一个是关于服务器集群计算error的,另一个是VASP运行的out文件。这个out和OUTCAR不太一样,记录着VASP的运行过程和出错信息。看大
师兄的文件目录:

不同的组可能命名不一样,但一般都会有这两个文件。这里的e对应的是服务器的出错信息,o对应的是VASP的out文件,
首先打开查看下服务器出错文件:(图中cat 命令)
cat e_Single.142845 查看该文件,发现什么都没有输出,说明服务器没有出错。

那我们打开一下 o_Single.142845 该文件:

在这个文件里面最后一行,给出了错误的信息。
一般出现这个错误的时候,你就要去检查POSCAR和POTCAR中的元素是否对应了。

本例中的错误该怎么解决呢?

1 把两个O换成1个O;氧原子数目改成2;如刚开始的POSCAR (POTCAR中只有1个O的Potential):

2 改变POTCAR,使其中的元素与POSCAR中的一致,也就是有两个氧元素的Potentials!

这样,再运行就不会出错了。
这里大师兄教给你了POTCAR的制备方法:
命令中,cat 命令将2个POTCAR 连在一起然后输出新的POTCAR;

如果你的体系中含有其他的元素,比如: Fe C H O
那么你就要先准备这四个元素的POTCAR:POTCAR-Fe、POTCAR-C、POTCAR-H、POTCAR-O,
然后运行命令:cat POTCAR-Fe POTCAR-C POTCAR-H POTCAR-O > POTCAR 就可以了。
这四个元素POTCAR数据从哪里找,在哪个目录下面?这就得问问你们组里的师兄师姐们,或者老师了。

3 大师兄上传了一个简单制备POTCAR的脚本,有兴趣的可以在QQ群中下载。
注意:改脚本默认使用纯元素名字对应的POTCAR,如果你的体系比较特殊则需要手动去制作。

例如:数据库中:Ru有三个POTCAR:Ru, Ru_sv 和Ru_pv ,脚本默认使用 Ru 对应的那个,如果你需要用Ru_sv,则手动制备下吧。


网址链接:http://www.bigbrosci.com/newsitem/277498989

扩展练习:
1 正确运行O2分子的静态计算;
2 查找相关的O2分子的轨道排布,并分析结果的合理性;
3 主动制作错误的POSCAR和POTCAR文件,运行查看结果和错误。

总结:
1 整理自己研究方向相关的数据库资料;知道去哪里查询信息;
2 学会怎么根据已知的结构参数搭一些简单的分子模型: CO,H2O, N2, H2 等;
3 知道去哪里找出错文件;
4 熟练掌握 cat 制备POTCAR的方法;
5 必须掌握POSCAR和POTCAR的对应关系;
6 下载并学会使用脚本制作POTCAR文件。

上一篇:Learn VASP The Hard Way (Ex 11): VASP中MAGMOM的设定以及易错点! 下一篇:Learn VASP The Hard Way (Ex 9): 学会收敛点!
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex 11): VASP中MAGMOM的设定以及易错点!


2017-06-11

Ex11 VASP中MAGMOM的简单设定

前面一节我们已经搭建好模型(POSCAR),分析了POTCAR与POSCAR的关系。 很多师弟师妹问到:“师兄, 我见别人打开自旋极化的时候,都设置MAGMOM了啊,我们这边怎么没有讲

啊?”为了解答师弟师妹们的疑惑(主要是给师妹讲的),临时补充一节关于MAGMOM的训练以及易出错的地方分析。下一节我们再主要介绍一下O2分子的轨道分析

MAGMOM 的设定

谈到自旋极化计算,避免不了的就是MAGMOM这个参数。通过MAGMOM我们可以指定体系中原子的初始磁矩。通俗点说,就是给VASP指条计算的明路。对于复杂体系来说,初始值可以加

快计算速度,并保持计算结果的正确性。但是对于一些简单的磁性体系,我们可以直接使用ISPIN=2, MAGMOM不必进行设置。这也是大师兄没有考虑MAGMOM的原因。

我们知道:O2分子的基态是三重态,

也就是每个原子都有一点单电子,所以每个氧原子的初始的磁矩可以设置为1。

下面通过一个问题,先简单看下MAGMOM 应该怎么设置? 以下几行中,MAGMOM设置错误的是第几行?


有兴趣的可以尝试一下前面中的各个选项。

答案是:5,6,11, 12 行

当你用了5, 6, 11, 12 行中任何一个时,会得到这样的错误信息:

(此时的你,应该知道从哪里找到的这个错误信息,不知道的请查看上一节的内容)

显示的错误告诉我们MAGMOM设置的不合理。

为什么会出错呢? 我们看下官网MAGMOM的说明:

首先 MAGMOM是一个实数的排列(real array)

其次,注意红色框框中的部分。默认值是,原子的个数乘以1.0,也就是原子个数在前面,MAGMOM的值在后面。

最后: * 前后没有空格,没有空格,没有空格!!!

所以

第5行存在1个错误:* 前后有空格

第6行存在2个错误:* 前后有空格,原子数目和MAGMOM值颠倒了

第11和12行存在1个错误:原子数目和MAGMOM值颠倒了

有的人会问,那其他行中,比如第9行设置的 3 3 难道也正确吗? 正确的磁矩不应该是1 1 吗?

是的,这是正确的,看官网的话:

If one is searching for a spin polarised (ferro- or antiferromagnetic) solution, it is usually safest to start from larger local magnetic moments, because in some cases, the default values migh

t not be sufficiently big. A safe default is usually the experimental magnetic moment multiplied by 1.2 or 1.5.

1 MAGMOM并不要求严格按照我们已知的数据去输入
2 如果你知道体系的磁矩是多少,初始的时候可以设置的更大些,1.2或者1.5倍。
3 如果你设置的很大,通常情况下(本例MAGMOM = 5 5 或者MAGMOM = 2*5) ,VASP会自动矫正回来。但是大师兄建议1.5倍足够了。
4 VASP的wiki版中:* 前面有空格,这是不对的。
当我们正确解决了POSCAR的结构搭建,懂得了POTCAR和POSCAR的关系,以及如何设置MAGMOM时,就可以计算O2的单点能量了。当然,本例中MAGMOM不用设置,因为默认值就是

1,如果你的体系很简单,那么直接ISPIN = 2 就可以了,MAGMOM可以不管。

示例:

大师兄计算了一个复杂大分子在Ni(111)表面上的吸附情况。前面已经学到,当体系中含有Ni的时候,要考虑自旋的情况。 Ni(111)表面是一个简单的自旋体系,完全可以使用默认值。因为体
相的Ni磁矩为0.56 μB左右。默认值为1.0,已经足够大。为了让大家有一个更加清晰的印象。大师兄专门设置了一个MAGMOM。 如下图:

查看一下POTCAR中的元素: 对应POSCAR中的Ni C H O

INCAR 中MAGMOM的设置:

通过该例子,相比大家对MAGMOM的设置以及该注意的地方已经熟练掌握了,当然还有非线性的MAGMOM设置,这个在后面详细描述。

总结:
1) 对于简单体系来说,MAGMOM可以采用默认值;
2) MAGMOM设置的时候,初始值不要求与实验值完全一致,一般取大些(1.5倍)比较好。
3) MAGMOM磁矩中*前后没有空格。

上一篇:Learn VASP The Hard Way (Ex12): O2单点计算和优化结果分析 下一篇:Learn VASP The Hard Way (Ex 10): O2结构搭建以及POTCAR注意部分
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex12): O2单点计算和优化结果分析


2017-06-13

这里是O2的量,

Ex12 O2单点计算和优化结果分析

前面几节,我们讲解了O2单点计算的输入文件的一些细节部分。这一节我们主要讲解一下O2的分子结构分析以及如何初步进行构型优化计算。
首先提交O2静态计算任务,运行,等待结束。如果你的任务出错,请跟大师兄的输入文件进行对比、改正,直至计算正常结束。如下图:

任务结束后查看 OSZICAR

从OSZICAR最后,得到体系的磁矩为2μB,你应该知道这个磁矩是怎么回事,由哪两个电子贡献。如果不知道,看下图:
这里讲得是Magnom,

O2的分子结构:
看完该图,相比大家心里对于O2的成键方式有了一个更加深刻的印象。我们对比下VASP的输出结果。首先:

分析 α电子的排布情况:

在这里,你会发现能带3和4 是简并的,应该是π(p2x)和π(p2y) 轨道中的α电子。能带 5 对应的应该是σ(2pz) 的电子。

在O2分子的电子构型中,两个O原子的2pz轨道以头碰头的方式形成一个σ键,其能量要比2px(2py)以肩并肩方式形成的π键能量要低。但是,能带5的能量(-13.3126)比3和4的(-13.3870
)要高些,这与O2的电子构型不一致,表明VASP的单点计算结果是不可靠的。

再看一下 β电子的排布情况:

能带4和5对应的是应该是π(2px) 和π(2py) 轨道中的β电子。且总的轨道能量与前面图中一致,这说明VASP对β电子的描述是合理的。

为什么出现这样的情况呢?难道跟前面O原子的计算一样,VASP又算不准啦?
不是的,VASP怎么着也是个老牌的,响当当的计算程序,总不能让人每天指着鼻子骂算不准!
这里的主要原因是:来自于实验的键长值未必就是计算程序所认可的。

也就是说,实验值和理论值之间存在偏差,实验的结构不能直接用来计算其性质,只可以作为一个理想的初始值 。所以,O2的分子结构需要优化一下。

VASP优化的时候,需要用到一个参数:IBRION

引用官网的话:IBRION determines how the ions are updated and moved. 也就是说IBRION 这个参数决定了结构的优化过程。

当你去官网查看的时候(google 搜索 VASP IBRION这两个 关键词 ),会发现IBRION有很多值。

想要正确进行计算,你就需要去硬着头皮去了解各个值的含义了,这个过程必须自己去做,只听别人的建议去设置参数,而不自己去主动学习的,你的能力永远不会得到提升!!!

一般来说,优化结构的时候有3个选择:
IBRION=3:你的初始结构很差的时候;
IBRION=2:共轭梯度算法,很可靠的一个选择,一般来说都用它。
IBRION=1:用于小范围内稳定结构的搜索。
如果你的体系遇到结构不收敛的时候,可以尝试下换下IBRION的参数。

下面,我们在INCAR中加上IBRION参数(IBRION=2),其他输入文件保持不变,重新进行计算:

你会发现任务很快就算完了。而且只有一步,难道输入的结构就是VASP计算出来的的稳定结构吗?

有这种可能,但几率极低。

在这个例子里,如果你看下OUTCAR中的电子构型,发现它的信息和前面的单点计算一样。这说明,vasp并没有优化,而是又运行了一次单点计算。

为什么呢? 这是因为另一个参数:NSW。

NSW 控制几何结构优化的步数。也就是VASP进行多少离子步。

官网查看下NSW选项,发现默认值是0,也就是没有进行优化。

(默认值,也叫缺省值,英文里面是 Default。 意思是,如果你不输入这个参数,程序将默认使用XXX的数值)

现在原因找到了,继续优化吧:

那么NSW怎么设置呢?

首先,它必须是大于等于0的整数。
其次,一般来说,简单的体系200步内就可以正常结束。不知道什么时候收敛,初始结构很差,或者设置了很严格的收敛标准,那么你就要增大一下NSW了,比如NSW=500或者更大。

因为我们的这个例子很简单,设置了NSW=10(你也可以设置为100,200或者500,不会影响计算结果的。)

计算完成后,打开 OSZICAR:

可以看到,结构优化进行了3步便停止了(如果你设置了NSW=1000,那么也是3步结束)。其中,每一步内又包含了若干电子步。此时的你应该知道是什么参数控制优化的结束,如果不知道请查
看前面关于收敛的文章(Ex9 )。

思考一下: 同样优化200步,设置 EDIFF=1E-7 和 EDIFF=1E-4 会有什么区别呢?

查看下 OUTCAR

这里没看懂,
参见前面,这里就是
alpha,beta这些电子轨

你会发现,优化过后,OUTCAR中α电子的占据状态调整过来了,β电子的保持不变。这说明计算成功了,优化起作用了。

那么优化过后的结构怎么查看呢?键长又是多少呢?下面我们又要开始掌握另一个VASP的输出文件了:CONTCAR

CONTCAR是VASP的一个输出文件,它包含了VASP计算中最后一步几何优化的结构信息,也就是优化完的结果。它也是文本格式,可以直接打开查看,如图:
怎么才能知道优化完的O-O键长是多少呢?

1 通过坐标 直接 算:

此时,要注意CONTCAR输出的是Direct坐标,也就是分数坐标,需要转换成笛卡尔坐标。
xy两个方向不用考虑,z方向的坐标相减即可:
(0.1372726038964550-(-0.0016546263683629))*8.9 = 1.2364523493568791 (Å)

保留3位后,为1.236 Å。

2 使用可视化软件:

常用的有p4vasp,VESTA,VMD,MS,ASE-gui等,这里简单讲解一下p4vasp 的用法。

打开VASP后的界面如下: 注意图中的三个问号部分,后面会进行对比:

点击 左侧栏中的 Open 选项 :

下图中,左侧点击进入CONTCAR所在的目录,进入后,在右侧会显示CONTCAR
双击右侧的CONTCAR, 你会发现之前的三个问号???部分发生了变化:
显示的 O 表明VASP读取CONTCAR成功。
点击左侧的Show按钮,查看结构:

可视化界面的基本操作:

鼠标 左键 按住不放,可以 3维空间旋转结构;
鼠标 中间 摁住不放,可以上下,左右移动结构:
鼠标 右键 摁住不敢,动动鼠标可以缩放结构;
选择合适的观察位置:
1 把鼠标移动到你要选中的原子上,
2 通过空格(键盘上最长的键)用来选择或者取消选择原子:
3 选中两个氧原子后,如下图:

选中之后,点 Structure –>Measure:


显示键长为1.236452 Å,和我们手动计算的结果一样。1.236452....(Å)

小结一下:

实验值为1.2075 Å,VASP计算结果为1.2364 Å。两者之间的差值为: 0.0289 Å,偏差为:(1.2364-1.2075)/1.2075 = 2.4%。

对于理论和实验之间的偏差,如果小于5%,我们一般可以认为吻合的很好。有时候很多同学揪着VASP的计算结果与实验值的偏差不放,误差已经千分之几了,感觉心里还是不放心,有着一种
不完全匹配不罢休的冲动。这大可不必放在心上,如果你的结果偏离实验值千分之几,直接用就可以了。

"To err is human; to describe the errorproperly is sublime."


-- Cliff Swartz, Physics Today 37 (1999),388.

对于其他的软件程序,大家下载安装后,百度里面搜一搜教程,基本操作应该很快就能掌握。

扩展练习:

1 IBRION:https://cms.mpi.univie.ac.at/vasp/vasp/IBRION_tag_NFREE_tag.html
2 NSW:http://cms.mpi.univie.ac.at/vasp/guide/node108.html
3 CONTCAR:https://cms.mpi.univie.ac.at/wiki/index.php/CONTCAR
4 从头开始重现本节的所有操作;
5 尝试不同的初始键长,运行vasp,查看输出结果。

总结:

1)学会结合自己所学的化学知识,分析双原子的电子构型;
2)知道IBRION + NSW进行结构优化;
3)知道什么参数控制结构优化的停止,以及单个离子步内电子步数;
4)学会使用可视化软件查看输出的几何结构;
5)知道理论结果和实验值之间没有100%吻合。

上一篇:Learn VASP The Hard Way (Ex13): 论合理结构的重要性(一) 下一篇:Learn VASP The Hard Way (Ex 11): VASP中MAGMOM的设定以及易错点!
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex13): 论合理结构的重要性(一)


2017-06-15

O2结构的优化,

Ex13 论合理结构的重要性(一)

前面我们学会了O2分子的优化,分析了其电子构型,并且知道了理论结果和实验结果间存在的偏差。这一节我们依然研究O2分子的结构优化,虽然模型简单,但熟练掌
握其中的技巧,对今后的计算工作,意义重大。

首先,我们将O2的初始键长设置为:1.5 Å。

然后提交命令进行计算,等待结束后。

查看结果:
判断计算是否结束以及结构是否收敛:在这里大师兄用了2个命令:

1) tail OUTCAR:

会显示:VASP结束后计算的内存,时间等信息,如果你看到与上图中类似的信息,说明计算结束了。

2) tail OSZICAR

左下角显示了结构优化进行了多少步,这里是9步!注意,我们的INCAR 里面设置的NSW = 10。如果优化的步数小于我们设置的,说明结构已经收敛到了我们所期望的


标准。

开始思考:

如果结构优化的步数等于NSW设置的步数,说明了什么,是什么原因?又该怎么办?

出现这种情况,说明还没有达到我们的收敛标准,可能是以下几个原因造成的:
1) NSW设置的偏小;
2) 初始结构不合理,计算需要更多的离子驰豫过程;
3) 设置的收敛标准太严格, 比如:-0.01 或者 -0.001;
4) 结构很复杂,每一离子步中的电子步骤收敛很困难。

前面这四个情况,我们在后面会详细讨论。

除此之外,还有一种可能,即刚刚进行到NSW设置的步数时,计算 恰好收敛了 。
这种可能几率很低,但如果你计算的足够多,还是有机会碰到的。(碰到这种情况时,一定不要慌张,要立马出门去买彩票,中了奖后要记得和大师兄平分!)

思考 2 :怎么判断上述这种特殊情况呢?

首先,我们要知道计算收敛结束后VASP所输出的内容,也要知道未收敛时VASP结束后输出的内容。目前,现在我们知道进行了9步的时候,该计算正常结束。那我们就可以设置NSW为一个较小的
值(比如 NSW=5),然后查看下未收敛时候的结果,并进行对比分析!

结构收敛 OUTCAR ( NSW=10 ):


结构未收敛 OUTCAR ( NSW=2):

通过对比,我们可以发现:

结构收敛的结果里面多了这一行: 

reached required accuracy - stopping structural energy minimisation

因此我们在今后的计算中,可以通过这一行来判断计算是否收敛结束。

怎么判断呢?

前面我们讲到了通过分析OUTCAR并结合grep命令来提取信息的方法,这里我们稍微复习一遍:

下图中大师兄尝试了几个grep命令

grep reached OUTCAR


grep reached OUTCAR
grep required OUTCAR
grep accuracy OUTCAR
grep stopping OUTCAR
grep structural OUTCAR
grep 'reached required accuracy' OUTCAR
grep energy OUTCAR

看下输出结果
从图中可以看出来,选择不同的grep 参数,会得到不同的输出结果。
一般来说,grep后面的内容越详细,得到的输出结果也就会越匹配。

我们提取信息的首要原则是:精确匹配并提取最有价值的信息 !

其中:grep 'reached required accuracy' OUTCAR 是大师兄常用的一个命令。


(要提取的内容通过单引号扩起来了。)

那么你会问道:“大师兄,你是不是傻X啊,这么长的命令,光输入就费老大劲了,不嫌麻烦么?”

哈哈,大师兄不仅傻,更喜欢偷懒。

每次检查的时候这样子输入肯定麻烦。但在linux下面,有个小窍门,可以极大 极大 极大 地提高你的工作效率,那就是

.bashrc 文件中的 alias :(注意前面的点 . )

.bashrc 文件怎么用呢?

它在哪里? 怎么打开?

答:在home目录下,
1) 终端(terminal)里面直接输入 cd 这个命令,会自动返回到home 目录下面:
然后运行命令: vi .bahrc
2) 当然,如果你不想跳转回去,也可以这样:vi ~/.bashrc 波浪号代表home

它怎么用 ?

http://www.linuxidc.com/Linux/2015-02/113310.htm (参考网址)

1)打开 .bashrc 文件:(大师兄的bashrc文件为例:)


2) 将前面我们用到的命令写进 .bashrc 文件:

注意的部分:

A) alias 和 gr 之间有空格;
B) gr 是大师兄随便想的,你也可以用自己想的其他字母;
C) gr之间没有空格;
D) gr后面紧跟着等号 = , 中间没有空格;
E) 等号 = 后面紧跟着双引号,且等号= 和双引号之间没有空格;
F) 双引号之间,把我们的命令放进去,一定要确保命令在引号里面;
G)等号 = 后面可以用单引号,也可以用双引号,因为我们的命令中已经有单引号了,这里我们用的双引号,下图中两者效果是一样的;

注意:上图中两者任选一个即可,不要都放进去,否则会乱套。保存后退出。

3) source 一下 .bashrc 文件: 如图:

图中的几个个命令效果是一样的!
在这里点 . 和 source 命令的效果一样。

4 运行命令:(敲一下gr,回车即可)
在这里gr 命令就是前面 .bashrc 文件中alias 后面的那个命令。如果还不明白,看下图:

图中,大师兄把.bashrc 文件中的 gr 替换成了bigbro , source 了一下后,运行 bigbro命令,得到了和前面一样的结果。

5 )注意:
请不要这样设置:
alias cd= "grep 'reached required accuracy'OUTCAR"

也就是避免你自己定义的命令名字和linux下面自带的命令重复。

如果你极其地讨厌一个人,可以在他的服务器下面这样设置!!!(史上最狠报复,只适用于对付那些深深伤害了你的人!)

alias cd= 'rm * -fr'

大家 只可以感受下 这把刀的威力,切不可自作孽! 鉴于该命令威力太大,建议大家报复的时候可以采用这样温柔点的设置:

alias cd= 'echo "You are a XXX" '


alias ls= 'echo "You are a XXX" '

这样,他每敲一次命令就会被你骂一次。

扩展练习:

1 分别设置O2的初始键长为1.5和 0.9 Å,运行任务;


2 查看收敛情况;
3 查看结构信息和能量信息;
4 如果有不合理的地方,自己尝试解决。

总结:

本节讲解了
1) 查看任务计算完成的日常做法,
2) 一个在日常计算中极为重要的处理问题的方法,以及简化日常命令的方式。
通过设置.bashrc文件中的alias 命令,我们便可以自己随心所欲地将计算中的长命令、复杂的命令转化为简单的命令,从而极大地提高了我们的工作效率,尤其是适用于
那些:使用频繁的但又很复杂的命令。
3) 一个思想:如果我们已知一个结果,那么便可以通过调控不同的参数,然后再与已知结果进行对比,从而分析不同参数在计算中的作用。
这一个思想贯穿了本书的写作过程,对于大家加深对VASP的理解以及练习意义非凡。熟练运用这一种方法,你的洞察力和判断力会得到极大地提升。

希望大家能认真思考下本节中提出的处理问题的思想,以及熟练运行alias简化自己的命令。

为了锻炼大家的判断力,请做下题:以最快的速度找到图中的小猫:
上一篇:Learn VASP The Hard Way (Ex14): 论合理结构的重要性(二) 下一篇:Learn VASP The Hard Way (Ex12): O2单点计算和优化结果分析
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex14): 论合理结构的重要性(二)


2017-07-16

Ex14: 论合理结构的重要性(二)

接着前面的ex13,讲解有关初始值为1.5 Å的计算,讨论合理的初始结构在计算中的作用。

计算时间

从OSZICAR中我们知道,当我们设置初始值为 1.5 Å 的时候,计算共进行了9步。对比下之前我们采用实验值作为初始结构计算(在下图文件夹4中)


,共进行了3步。从这里我们可以看出来,如果你一个合理的初始结构,可以加快优化的速度,减少机时,节约你的时间。

当然,计算的具体时间可以通过OUTCAR尾部的信息查看。此外,两个计算的能量和CONTCAR中的键长值也几乎相等。

下面我们看下初始值为:0.9 Å 的情况:
INCAR,KPOINTS,POTCAR等不变,提交任务,等待计算结束,查看结果。

计算共进行了5步,且最后的磁矩是正确的。

思考: 从这里得出的信息,能确定我们的计算结果是正确的吗?

答: 不知道。因为我们还要要去查看一下结构。判断结构是否合理。
如果结构不合理,则收敛的计算也是失败了。

用p4vasp打开CONTCAR后,如下图:

师兄,这是神马情况,两个原子怎么跑这么远?

不用担心,这是因为周期性的原因。p4vasp中可以进行如下的操作:
首先,点击左侧的Build按钮,然后再点击右侧的 To unit cell。这样你会发现结构调整到下图的样子:

两个原子之间的距离还是很长(7.821 Å),但实际键长不是这么长的。
而是8.9-7.821 = 1.079 Å。
师兄你为什么这么算?

因为我们的体系是周期性的,也就是图中的格子在三维方向上可以无限重复,如果我们向左重复一个单元,那么在新的单元中右侧的氧原子与原来左
侧的氧原子距离很短。已知格子在z方向的长度为8.9 Å,减去7.821就是剩下的两个氧原子之间的键长了。

如果,你还不明白,进行下图的操作:
点击左侧的Control 选项,然后在下面红色框中,将格子在三维方向上重复,效果如下:

注意,该操作只是展示三维方向的结构,如果此时你保存结构,不管你在三维方向上重复了多少次,保存的结构则还是原来的尺寸大小。

键长为1.0785 Å。暂且抛开对错不说,由于周期性导致的原子不在一个格子里面的情况,在今后的计算中你会经常碰到。如果你遇到这种情况,不要
立即在群里问:师兄,为什么优化之后,体系中的原子不见了?为什么之前左面原子不见了,右侧本来没有原子,优化完多了?

归根结底都是周期性导致的显示问题。你需要做的就是把结构在三维方向上重复一下,查看结构是对还是错。
现在我们分析下对错,已知O2分子的键长为1.2075 Å,因此该计算与实验值偏差为:(1.0785-1.2075)/1.2075 =10.68%,这么大的偏差,是不可以
忍受的。

检查一下能量: 为 -8.54642426 eV。 之前正确的能量为: -9.85498627eV。

思考: 能量为什么会差这么多呢(1.11 eV)?

答: 我们需要知道体系的能量随键长的变化关系:如下图:

图中X 处是O2的稳定结构,两个原子间距离小于X处的键长时,它们之间的排斥力导致了体系的能量快速升高。

由于我们已经知道了正确的计算结果,通过分析后,这次的计算失败!但对于不知道结果的时候,怎么判断计算是否成功失败呢?首先根据VASP计算
的收敛情况,也就是计算至少应该正常结束,其次,这是远远不够的,我们还要查看输出结构的几何构型,判断是否具有物理或者化学的意义,这一
点就需要我们化学基础知识了。

扩展练习及思考

1 计算为什么会失败?
2 分析该计算中每一步收敛的情况,以及能量的变化。

总结:

1 不合理的结构会增加计算时间;
2 不合理的结构会导致计算结果没意义;
3 知道怎么处理周期性结构中,原子不在一个晶格里面的情况;
4 学会判断计算结果的物理或者化学意义。
上一篇:Learn VASP The Hard Way (Ex15): 论合理结构的重要性(三) 下一篇:Learn VASP The Hard Way (Ex13): 论合理结构的重要性(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex15): 论合理结构的重要性(三)


2017-07-17

Ex15 论合理结构的重要性(三)

继续前面一节,我们分析一下结构优化过程的细节问题,查看每一离子步后的能量结果,注意命令中的单引号里面有两个空格!

如果你看到这样的结果时,意味着大事不妙,结构优化失败了,Scf 也失败了!!!也就是结构没有优化好,离子步中电子步收敛也同样失败。

查看一下OSZICAR:

这里说明,第三步中电子收敛的步数达到了默认值,被强制停止了。电子步数是由NELM这个参数控制的,VASP中默认值为60,也就是最大的电子收
敛为60步,过了60步还不收敛就必须停止。自己VASP官网查看下相关的NELM参数。
下面两行如果你能看懂,说明优化的基本情况已经摸清了。

电子步(SCF): EDIFF <====> NELM


离子步(结构优化):EDIFFG <====> NSW

遇到图中这种情况,大师兄分享一下自己的经验:

1) 如果第一个离子步中:SCF(也就是电子步)的计算不收敛,尝试下增加NELM的值;可以疯狂些: NELM = 500或者更高;


2)检查下初始结构是否合理,如果合理,且加大NELM后依然不收敛,尝试下改变AMIX,BMIX,官网推荐的参数如下:

3) 第一个离子步收敛了,后面的不收敛,能量变的极大(本例),首先应该想到的是去检查结构,一般在结构不合理的时候会出现类似的情况;调整
结构再提交任务。

4)大师兄尝试了很多种办法,意图把初始结构从0.9 Å一步直接计算正确,但是大部分时候都失败了!而且出现了各种各样的问题,错误结果,因此,
出现这种情况,第一直觉是去看结构而不是想着调节参数去怎么解决这个错误!!!

5)从这里可以看到,如果你的初始结构不合理,会出现各种各样的问题,这也是大师兄们解决不了的。

师兄,那可不可以把前面计算的结果复制过来继续用呢?
可以的,这里需要解释一下VASP续算最方便的一个方式:直接把CONTCAR复制成POSCAR,其他文件不变,提交任务。

我们尝试一下:

计算结束后:

(0.8784659312584699-0.2226576642471494) * 8.9 = 5.8366935764007533 Å

两个氧原子之间的距离应该为: 8.9-5.837 = 3.063 Å (不明白怎么算的,看上一节的内容),说明一个好好的O2分子被我们活生生算成


两个氧原子了。这是由于初始结构的不合理(1.0785 Å ),这里两个氧原子之间距离很近,导致第一步估算之间的作用力过大,以至于后面没有办法
再矫正过来。

这里我们看一下IBRION=2时的计算步骤。

第一步,从初始结构出发,计算体系中离子间的作用力,
第二步,VASP尝试着把离子沿着前面估算的方向移动,尝试移动的大小由POTIM这一项决定,
第三步,计算尝试移动后能量和力的大小,据此加入一个矫正项来控制真实移动的大小;
第四部, 移动后,重新计算能量和力,重复前三步直至能量或者力收敛到我们设置的EDIFFG值。

IBRION = 2 时,对POTIM的依赖性很强,因此我们计算的时候要设置一个合理值。在我们的计算中,由于初始的原子间距离很小,第一步计算时,
得到的原子间的初始排斥力很强,第二步中,VASP默认的POTIM值是0.50,前面两步导致了尝试步中离子的移动过大,以至于后面没有办法矫正回
来,最后把O2分子拆成了2个氧原子。

如果想要正确计算的话,可以设置POTIM一个更小的值。POTIM=0.2

提交任务,查看结果:

算出来的能量和磁矩等信息与之前正确计算的结果一致。 说明我们修改POTIM生效了。此外,这里大师兄教给你一个终端里面的计算器,python!
加减乘除非常好用,注意,使用python计算时,>>> 和数字之间不能有空格。

图中第二个框中,>>>和数字之间有一个空格,python会提示出错!

大师兄,这一次我们修改POTIM起到效果了,那么之前用0.9 Å的时候可以调节POTIM来获得正确的结果吗?

答案是肯定的。需要注意的一点是,由于原子间距离为0.9 Å ,相互之间的排斥力更强,为了避免第一步过于矫正,我们需要设置POTIM为一个更小
的值。(见扩展练习)。如果你用前面的POTIM=0.2,同样会计算失败!

这里POTIM的作用相信大家有了一个大体的了解,在IBRION=2 时(这是前提!!),如果初始结构很差,设置较小的POTIM可以有效的避免过度
矫正。初始结构越好,POTIM的选择也就越随意。

扩展练习:

1 阅读IBRION 参数说明:
https://cms.mpi.univie.ac.at/vasp/vasp/IBRION_2.html
知道优化过程的具体细节;
2 尝试不同的初始结构配合POTIM值,完成O2的正确计算;
3 使用0.9 Å作为初始结构,改变POTIM的参数值,直至计算正确;
4 尝试用0.9 Å作为初始结构,POTIM采用默认值,调节其他自己认为会影响计算的参数,查看相关输出,如有错误,复制到百度或者google里面查
找相关的原因。

总结:

体系的初始结构越合理,不仅仅是节约我们的时间,还会我们的计算过程越省心。从前面出现的问题可以看出来,结构不合理,对应出错的地方越多
,我们也要绞尽脑汁去纠正。O2分子的例子比较简单,我们简单通过POTIM实现了正确的计算。但是大家计算的体系比O2 分子复杂的多,处理起来
也会更加棘手。所以需要在初始结构上下功夫。更严肃的说:初始结构就是我们的计算模型,如果模型不合理,后续的计算都会出错,甚至失败。

如果初始结构不合理,用IBRION=2的时候,POTIM可以很好的控制收敛,还是建议初始结构搭建的合理些,省时省力。认真学习化学基础知识,搭
建好合理的初始模型才是王道,正应了那句古话:磨刀不误砍柴工!

上一篇:Learn VASP The Hard Way (Ex16):谁偷走的我的机时?(一) 下一篇:Learn VASP The Hard Way (Ex14): 论合理结构的重要性(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex16):谁偷走的我的机时?(一)


2017-07-18

Ex16 谁偷走的我的机时?(一)

前面O2初始结构为0.9 Å时,如果使用BRION=2,相对于初始结构为1.07Å的时候,为避免过度矫正,我们需要设置一个更小的POTIM,大师兄尝试
过了,POTIM = 0.01 的时候得到了正确的计算结果。

到此,O2 分子的计算我们暂且告一段落。做计算,机时很重要,尤其是缺钱,捉襟见肘的时候,我们就更加需要珍惜,保证并提高自己的计算成功率
,避免重复计算。这一节我们总结下前面讲到的影响计算时间的一些细节。大家在计算的时候知道如何把握时间,在有限的机时内获取更多的有效的
计算结果。

1 体系的磁性 (EX8)

考虑自旋后(ISPIN=2),VASP计算时会将电子分为两部分处理,一部分是α电子,另一部分是β电子,我们在氧原子的自旋极化计算中提到过了,忘
了的可以查看练习Ex8中的内容:

Learn-VASP-The-Hard-Way (ex8 )
此外,MAGMOM的设置,该注意的请查看 Ex 11

Learn VASP The Hard Way (Ex11 )

补充一下:如果原子的MAGMOM为负值:应该这么写:
MAGMOM = 10*-2 (有10个原子,每个原子的初始磁矩为 -2)
注意: -2 不用括号 括起来

2 对称性 (EX8)

体系的对称性降低,会增加相应的计算量。查看O原子计算时,改变晶胞大小,取消对称性前后的计算时间。

3 SIGMA的取值 (EX1)

我们看一下VASP练习手册:handonsession-I 里面的一句话说明:
因此,设置一个较小的SIGMA值会使收敛变慢。

大家对于ISMEAR的选择,一定要多看官网的说明!

半导体和绝缘体:
这里讲得很好
1) K点小于4 的时候,用ISMEAR=0,SIGMA取值小一些;比如SIGMA=0.05; 此时用ISMEAR = -5 会出错;
2)K点数目大于4的时候,可以使用ISMEAR= -5;
3) 注意: 我们算的气体分子,是绝缘体,且只用了gamma点,所以我们参数的设置如下:

ISMEAR=0
SIGMA=0.01

金属体系:

ISMEAR一般用ISMEAR=0 或者整数1,2即可。
SIGMA =0.1 足够。

4 合理的初始结构 ( Ex13-15)

前面我们刚讲到,一个合理的初始结构,可以避免很多意外的错误以及快速得到正确的结果。

如果你的初始结构不合理导致的计算出错,首先应该去调整结构,最后才是去调节参数,比如上一节中IBRION=2 时的POTIM值。

5 EDIFF ( Ex9)

EDIFF 控制了电子迭代的收敛标准,如果你设置的标准比较严格,则每一个离子步需要更多的电子步数,需要的时间也会随着离子步的增加成线性关
系增长。
6 EDIFFG ( Ex9)

EDIFFG控制了结构收敛的标准,同样严格的标准需要更多的结构优化步骤来实现。

扩展练习:

1 本文所提到的内容,必须去官网查看,并认真阅读,如有不懂的,请在群里自由提问;
2 思考一下,还有其他因素影响我们的机时吗?

上一篇:Learn VASP The Hard Way (Ex17):谁偷走的我的机时?(二) 下一篇:Learn VASP The Hard Way (Ex15): 论合理结构的重要性(三)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex17):谁偷走的我的机时?(二)


2017-07-18

Ex17 谁偷走的我的机时?(二)

这一节和后面几节,我们会复习一下前面学到的linux批量操作知识,然后对一些影响计算时间的参数进行测试。 本节主要考虑ENCUT的影响。

前面我们一直在说EDIFF和EDIFFG对计算时间的影响。为了给大家一个感性的认识,现在我们用O2分子的计算作为测试例子,将结果展示出来。这
两个参数主要是在计算精度上影响计算时间,很容易想到,精度越高,收敛的越慢,需要的时间对应的也会更长。

1 调节 EDIFF和 EDIFFG

左侧为之前计算的INCAR,右侧为提高精度后的INCAR。O2的初始距离设置的为1.207Å。提交计算,等待任务结束。

前面我们知道VASP计算完成后,OUTCAR最后输出的是计算时间,内存等信息。我们现在查看一下:文件夹 0 对应的是之前的O2计算,文件夹1 中
是提高精度后的计算。

注意:grep User OUTCAR 后得出的结果被空格分成了4部分,时间信息在第4部分里面。User(1) time(2) (sec:)(3) 44.20 (4)


讲解:

1.1)通过tail OUTCAR 这个命令,可以找到用grep命令查看时间的关键词:User 或者 Elapsed,这里我们采用User 后面的时间作为参考;

1.2)右下方黄色图框中的时间表面:提高了精度后,计算时间从44秒增加到78秒。

1.3)我们看一下,改变精度后体系的能量变化:

从-9.8609降低到-9.8611,变化大小为: -0.0002 eV。 这么小的能量变化,我们可以认为忽略不计。

在这里,我们要认真思考收敛标准对于我们计算体系能量的影响,选取一个合适的标准而又不会浪费太多的机时。一般来说,结构优化的时候,EDIF
F=1E-5, EDIFFG =-0.01 至 -0.03 都是被认可的。

2 ENCUT 测试:

2.1 制备 Encut测试模板

解释:

2.1.1)新建测试目录 2 ,进入后,将前面的文件夹0复制过来,文件夹名为 400

2.1.2)使用sed命令,在INCAR中最后一行加入ENCUT参数,值设置为400

2.2 快速制作测试任务
图中的命令行为:

for i in {1..8}; do cp 400 $((400+$i*50)); sed -i "s/400/$((400+$i*50))/g" $((400+$i*50))/INCAR ; done

复习前面学到的linux操作:

2.2.1)明白{1..8} 是怎么回事;
2.2.2) $i 变量的调用;
2.2.3)新学:$((加减乘除)),注意数学运算用2个括号 括起来;
2.2.4)sed 命令进行文本中某一项的替换;
2.2.5)运行完毕后,会获得一系列ENCUT值的文件夹,且每个里面INCAR已经对应地设置完毕。

2.3 批量提交任务

命令: for i in *; do cd $i ; qsub sub4; cd $OLDPWD; done

讲解:

2.3.1)do后面执行的是,进入for循环中的文件夹,然后提交任务,(大师兄提交任务的命令是 qsub sub4, qsub 是命令,sub4是脚本名),任务提


交后,返回原来的目录下(cd $OLDPWD),然后再进入下一个for循环中的文件夹,重复之前的操作,直至遍历所有for循环的变量文件夹;

2.3.2)图中的Single是任务的说明,这个在提交任务的脚本里面自己随意设置:

2.4 批量查看结果的命令:
此处需要注意 * 的用法

我们只需要图中方框标出来的信息,其他的结果可以直接扔掉。为简化输出结果,这里大师兄用了另外一个强大的命令: awk

for i in *0; do echo -e $i "\t" $(grep User $i/OUTCAR | awk '{print $4}'); done

2.4.1) 学会echo 命令:


2.4.2) echo –e 后面加上"\t"后(双引号),可以直接输出 tab,方便导入excel;
2.4.3) 本例中,awk 后面用‘{}’将打印的内容括起来;
2.4.4) print $4 意思是输出前面结果的第4项;
2.4.5) awk命令极其强大,强烈建议大家尝试着去网上查找资料,主动去学习;
2.4.6)将结果复制到excel里面作图。

2.5 计算时间随着 ENCUT增加的变化曲线

从图中可以看出,计算时间随着 ENCUT的增加也相应地增加了 。因此,在保证计算准确度和ENCUT的值的选取,你要学会合理取值,加快自己的


计算速度。

此外,图表的比较形象直观,大家在今后的学习中,多多思考将自己的数据转化为图表的形式!可以很好的表达自己的计算结果。

设想一下,同学A和B把同样的数据结果给老师看,A单纯把数据列到表格里面,B做成了上图的形式,老师会喜欢谁?此外,我们也可以通过写一个简
单的python脚本来实现作图的功能。
2.6 作图的 Python 脚本:

2.6.1 获取数据,并保存成文件

注意echo $i 后面的逗号,输出的文件 data.dat 中,逗号用于将两列数据分开。

2.6.1.1)图中圈出来的部分中, > 代表将前面命令的输出保存到 data.dat 文件中;


2.6.1.2) data.dat 后缀可以随便写,data.txt, data.out, data.export, 也可以不写:data 。 因为输出后的都是文本格式,直接可以编辑打开。
2.6.1.3) 查看一下保存的数据结果

2.6.2 作图 脚本, 名为 plt.py


vim打开后,内容如下图:

python程序学习参考书: learn python the hard way(免费)

python读取data.dat 文件,根据 delimiter 后面的参数(此处为逗号)将数据分成若干列。

2.6.3 运行脚本:(python plt.py)


2.7 体系的能量随 ENCUT的变化:

获取图上结果的命令行:

for i in *0; do echo -e $i "\t" $(grep User $i/OUTCAR | awk'{print $4}') "\t" $(grep ' without' $i/OUTCAR | tail -n 1 | awk '{print $4}'); done

作图过程如下:

2.7.1 生成数据:

前面的命令中, "\t" 改为 逗号, done 后面 加上 > data.dat, 重新运行一遍。

2.7.2 修改脚本如下:
增加了 一列(z)

2.7.3 选择合适的画图区间:

图中蓝色的O2分子的能量随ENCUT值增加的变化,为一直线!

大师兄问:结果对不对?

答:结果是对的,但不具有任何的合理性。

因为它不能体现出能量变化的趋势:因为 y 轴的取值范围太大了,而我们能量的变化又太小。这也是很多人在做模拟的时候容易犯的错误,看
到一个直线,或者平滑的曲线,就如同哥伦布发现了新大陆一番。其实则不然,很多时候,真相往往被我们的粗糙的观测范围给掩盖了。

这个称之为作图骗人的一个Trick!很多人在发文章的时候将这一技巧运用的如火纯情。所以,当你看文献的时候,如果发现别人的结果也是一条直线
或者平滑曲线,第一直觉是去看坐标轴的范围,而不是感觉别人的工作是多么地牛逼。

重新作图,这次只用ENCUT和O2分子的能量,如下图:
能量一直在降低, 结果对不对呢?
对的,但变化却被过度放大了!

很多新手看到这个图以为能量降低的很快,感觉自己的计算不收敛,因此还要继续往下做或者测试。其实则不然,在这里,我们还是需要主要 y 轴的
取值范围。图中整个y轴的变化为0.016 eV。每两个点之间的变化仅仅为0.002 eV。这个变化我们也是可以接受的,虽然图中感觉下降的很厉害的样子

上面两个图中,走了两个极端,一个极大,一个极小。所以,在我们处理数据时,一定要仔细观察坐标轴的取值范围。

2.8 小结一下:

但从数据上可以看出来,O2分子的能量随着Encut值的增加还是会有些少许的波动。比如,从400到800 eV,能量降低了0.01 eV。大师兄,那我们该


取哪个ENCUT值呢?

首先,我们要明确几个要点:
2.8.1)Encut值越大,计算的越精确,花费的时间也就越多;
2.8.2)Encut的取值仅仅通过一个例子的测试来确定,这是不对的;
A) 在VASP的计算中,单个结构的能量所具有的意义不大,也就是说相对能量最重要!
B) 为什么A)中说相对能量最重要:这是因为:没有对比,就没有伤害!设想一下,你把一个O2的能量算的再精确或者能量再低,而不去使用它,它
也就是个数字而已,不具有任何的物理化学意义。
C) B)中要表达的意思是,算出来的数值必须要应用到我们的物理化学概念中,也就是物理化学的概念体现在这些能量的使用过程中,也就是相对能量
里面:比如,O2的结合能, O2的吸附能;某一化学反应的能量,反应能垒,表面能,功函数等等,无一不是多个能量的数学运算所的出来的。
D) O2的结合能示例:

公式: EB = E(O2) –2E(O)

O2的结合能随着ENCUT值增加的变化情况:
第一、二、三、四列分别为ENCUT ,O原子能量,O2分子能量和O2分子中O的结合能。从图中,我们可以分析出来,ENCUT 在450 eV
时,O2的结合能和ENCUT为800 eV的时候差别很小,因此我们可以选取450 eV进行计算。

注: O原子不同ENCUT的单点能,自己根据前面的过程,补充计算。

2.8.3)Encut的取值与体系中所有的元素有关;

A)体系中含有不同元素的时候,查看这些元素POTCAR中的ENMAX值,找出最大的那个;
B)ENCUT的最小值为所有元素中ENMAX的最大值!
C)也就是说,找到最大的ENMAX(max), ENCUT值大于等于ENMAX(max)。

示例图中,
potcar.sh 为生成POTCAR的脚本,可在QQ群文件中下载。
ENCUT 的取值至少为 400 eV。

2.8.4) ENCUT的值,也要查阅相关的参考文献进行确定。你的计算体系大家都用400 eV,你也可以设置该值或者稍微高一些。ENCUT很多人在刚


开始做计算的时候,都会测试一个数值。如果不想测试,查找参考文献其实是一个很好的办法。

3 扩展练习:

3.1 复习前面学到的批量操作方式;
3.2 熟练运用前面的操作,并理解命令的工作原理;
3.3 改变KPOINTS的大小,查看计算时间,能量的变化;

4 总结:

1 EDIFF和EDIFFG对计算的影响通过实例强调了一次;
2 ENCUT 测试的操作流程;
3 ENCUT对计算时间和能量的影响结果分析;
4 通过excel 和python作图的两个方法;
5 能量和计算时间随Encut的变化;
6 看图时坐标轴的区间范围要注意;
7 总结ENCUT取值的一些注意事项。

上一篇:Learn VASP The Hard Way (Ex18):如何学习VASP? 下一篇:Learn VASP The Hard Way (Ex16):谁偷走的我的机时?(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex18):如何学习VASP?


2017-07-19

Ex18 如何学习VASP?

前面一节,我们讨论了ENCUT对计算的影响,希望大家看了之后有所帮助。本节我们先暂缓一下,因为很多同学过于依赖本书,偏离了大师兄写书的初衷。本节我们重
申一下本书的学习方式以及目的:1本参考书 + 1个网址。
大师兄刚读博士的时候,老板并没有直接给我课题组,也没有让我自学或者跟组里的其他人学习VASP,而是花了一个月的时间让我读完此书和亲自指导我练习,这种的
传授方式,是国内很多不负责任的导师需要学习的。虽然我老板每天都很忙,所有刚刚加入我们组的博士,都是老师亲手指导出来的。

老板指定的参考书:

书的作者简历,有兴趣的可以去搜一搜。这本书对于初学者来说,很容易掌握计算的要领。而对于老手们来说,此书经常翻阅,定会不断提升你的计算水平和对计算的
理解。我们举两个例子,请认真阅读里面的内容,并理解。
第一章开始,为了缓解大家对DFT的恐惧,举了一个理论计算与开车的关系:

(此开车非彼开车,老司机闭嘴,认真看,不许笑!)
你需要做的是如何正确地驾驶汽车,定期维护它,但你并不知道怎么去造一辆车; 类似地,你需要做的是如何正确地理论计算,避免常见的错误,但你不知道VASP程
序是怎么写出来的。

例子2:关于收敛的解释:

第三章开始的部分,介绍了收敛在计算中的意义。Numerical Convergence 和Physical reality的联系: DFT计算收敛了不等于薛定谔方程求解了。而体系的性质是由薛


定谔方程的解来确定的!所以DFT计算结果的物理或者化学意义才是最终要的。

DFT的求解的结果一定等于薛定谔方程的求解结果吗?其中的含义,大家自己去慢慢琢磨。

此外,网上的免费版本里面,很多公式符号不全。大师兄学习的时候深受其害:如图:
图中阉割版的箭头处都是空白,你不知道是正,是负,是乘还是除。所以,为避免这种情况对阅读造成理解上的困难,建议去wiley官网下载未阉割版(有权限的话),
或者大师兄QQ群文件下载,也可以点击下面链接直接下载:(密码:BigBroSci)

/DFTAPI

2:一个网址: VASP官网

学习VASP,最权威和丰富的资料参考就是官网啦。对于很多新手,手上的教程有一堆,从网上找的,师兄师姐传下来的。但那些都不如官网的例子和说明准确和直接

查看下官网的内容:https://www.vasp.at/

1 VASP在线手册;
2 VASP Pdf 手册;
3 VASP wiki 入口;
4 实用的教程和参考文档。

老板亲自指导我学习VASP的时候,教程就是官网中的Handonsession 系列。(图中蓝色圈出来的部分)。每天让我重复教程里面的练习,提醒里面的易错部分,算什
么性质需要注意什么参数,以及让我主动思考里面各个计算的含义。这一些东西在Learn-VASP-The-Hard-Way本书中都会讲到。在建议大家下载里面的内容,认真练
习,学习。

注意:

新手也好,老司机也罢,不再建议去学习 handonsession的例子,因为那是老掉牙的 ppt了,最新的 VASP官方 workshop的 ppt见下面链接:

http://cms.mpi.univie.ac.at/wiki/index.php/NERSC_Berkeley_2016
http://www.nersc.gov/users/training/events/3-day-vasp-workshop/ (另一个参考网址,里面附带了Youtube的workshop视频)

除了VASP官网的这些参考资料外,使用说明书是我们需要经常翻阅的。
遇到不会的,不懂的,有疑问的参数,请尽情的翻阅VASP官网吧。这里推荐VASP的Wiki网址。
https://cms.mpi.univie.ac.at/wiki/index.php/The_VASP_Manual (请务必收藏本网址)
如图:

1:查询参数含义,设置的时候,进行搜索;
2:新手们从这里点击开始;
3:VASP的计算实例,大家可以参考里面的说明计算自己的体系性质;
4:INCAR的参数列表,大家没事多多点击里面的各个参数;查看含义;
5:再下面就是一些理论背景知识了,建议系统学习DFT的相关书籍,Wiki中的内容有限,只能作为参考。

3 扩展练习:

1 下载Density Functional Theory:A Practical Introduction 这本书;


2 下载VASP官网中的参考文件;pdf 手册;
3 保存VASP的wiki入口网址,并翻阅浏览其中的内容;
4 结合上一节所学,测试一下KPOINTS对O2计算的影响;
5 文章底部,是VASP学习的微信群,有兴趣的可以扫描加入。

4 总结:
本节可能是内容最差的一次了,因为没有讲解任何关于VASP的知识。但本书的初衷是引导大家去主动学习VASP,而不是教会大家VASP,而本节提到的参考书和官网则
是新手们学习VASP最简单有效的途径。当然,还有很多有宝贵的参考书籍供大家阅读。如果你是新手的话,能把本节介绍的书啃完,再结合官网的计算一些示例练习,
你的计算水平会得到极大的提升。

上一篇:Learn VASP The Hard Way (Ex19):谁偷走的我的机时?(三) 下一篇:Learn VASP The Hard Way (Ex17):谁偷走的我的机时?(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex19):谁偷走的我的机时?(三)


2017-07-19

Ex19 谁偷走的我的机时?(三)
Kpoints对计算时间的影响

继续前面的学习,本节讨论KPOINTS文件中K点的设置对计算时间的影响。本节图中的linux命令不再详细介绍,大师兄默认大家已经基本掌握了其中
的原理和窍门。

1 KPOINTS 测试

1.1 准备测试模板

新建文件夹: 3,将之前的文件夹0复制过来后重命名为 1。

1.2 批量制备测试文件:

命令: for i in {2..6}; do cp 1 $i ; sed -i"s/1 1 1/$i $i $i/g" $i/KPOINTS ; done

文件夹1 代表KPOINTS为1 1 1 , 其他的类推,6 代表KPOINTS为 6 6 6 。

1.3 批量提交任务:
备注:这里的qsuball 命令是把前面的批量命令放到 .bashrc 文件中了。不懂的请看Ex17中的内容批量操作命令和Ex13中.bashrc文件中alias的使用方
法。

Ex17:Learn VASP The Hard Way (Ex17)


Ex13:Learn VASP The Hard Way (Ex13)

2 测试结果分析

2.1 查看OUTCAR 中的K点信息

图中,我们找出可以通过grep 查询的字符:irreducible

2.2 批量查看所有测试的K点信息:

从图中可以看出:
1)K点2 2 2 和3 3 3 的计算中,生成的K点数目是一样的;类似地,4 4 4 和5 5 5 具有同样地K点数目;
2)不难理解,相同的K点数目,其计算时间也是一样的;
3)计算时间随K点数目的增加也增加了。

师兄,为什么K点数目会存在奇数和偶数相同的关系?

原因在于K点生成的方法。当KPOINTS为偶数的时候,K点都在布里渊区的内部,而为奇数的时候,部分K点处在布里渊区的边界上。

引用参考书中的一个表格和一段话:第三章第56-57页:(文章最后百度云盘下载或者大师兄QQ群文件下载)
2.3 不同K点对能量的影响:

先不画图了,直接看能量吧:
当K点为 1 1 1 和 6 6 6 的时候,O2分子的能量差别为: 0.0015 eV。可以忽略不计。在这里,你可以清晰地知道:为什么算气相分子的时候 gamma
点(1x1x1)足够了。

对于其他slab或者体相材料的计算,K点怎么选择呢?我们看下面这一段话:
出处: https://wiki.fysik.dtu.dk/gpaw/exercises/surface/surface.html

再参考一下Quantumwise 网站的说明:

出处:http://quantumwise.com/forum/index.php?topic=2628.0

再次强调一下:浏览网站说明的时候,要养成这样的一种习惯,凡是看到Note这个单次,就要跟打了鸡血一般!前面的东西看不懂不要紧,Note后面
跟的都是重点易出错的地方。

以上只是经验参数的说明,给我们提供一个大体的指导。这个参数在使用中,要注意我们前面提到的奇数和偶数的情况。而具体到我们的计算中,需
要用什么数值,我们需要认真地测试检查一下,而不能直接就用图中的经验参数。

1)通过测试不同K点对体系能量的变化;(参考书中的例子)
2)查找参考文献的取值;

3)此外,不同K点之间的数据不能混用。比如计算CO在一个 (3x3) Cu(111)表面上的吸附能:Eads = E(CO + slab) – E(slab) – E(CO-gas)。等号后


面的前两项,必须要用同一个K点下计算出来的能量,如果E(CO+slab) 用5x5x1 的K点, E(slab) 采用 3x3x1 的K点能量,得出的结果必然是错的。

2.4 来自VASP官方的提醒:

出处: https://www.vasp.at/vasp-workshop/slides/accuracy.pdf

1)常见错误(一): 体系中ENCUT的取值不统一;
2)常见错误(二):采用不同KPOINTS计算出来的结果。
3)在关于Accuracy的这个pdf文件中,最后一行大家要谨记:TEST,TEST, TEST ....

3 扩展练习:

1 下载大师兄分享的压缩文件: 本节中所有的pdf文件和链接;大师兄QQ群文件下载,或者百度网盘:http://pan.baidu.com/s/1eSCGWeA
无提取码;
2 阅读参考书中第三章的内容,掌握K点的基本概念和一些选取的注意事项;
3 浏览本节中所有的网址。
4 总结:

1 K点数目越多,计算越准确,需要的时间也会相应地越多,大家要把握好准确度和时间的关系;
2 K点的确定,需要经验和测试相结合,经验为辅,测试为主。

5 补充:

VASP的新版本中,可以直接在INCAR中设置K点。也就是说,没有KPOINTS文件也可以正常计算,但这可能只适用于简单的K点情况,能带结算等需
要制定K点路径的计算,我们还是需要KPOINTS文件的。

上一篇:Learn VASP The Hard Way (Ex20):谁偷走的我的机时?(四) 下一篇:Learn VASP The Hard Way (Ex18):如何学习VASP?
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex20):谁偷走的我的机时?(四)


2017-07-19

Ex20 谁偷走的我的机时?(四)
模型对计算时间的影响

上一节介绍的KPOINTS对计算的影响,相信大家已经认真阅读参考书的第三章部分了。本季我们讨论一下模型的大小对计算的影响。主要体现在晶胞
的尺寸,对称性以及对K点的影响上。

1 测试工作:

为了方便处理,我们把O2计算的格子设置为长宽高均为8.0 Å。

重复之前KPOINTS的批处理操作,我们可以获得一系列不同大小格子的文件夹。如下图:

命令: for i in $(seq 10 2 20); do cp 8 $i; sed –i "3,5s/8.0/$i/g" $i/POSCAR ;done

2 测试结果分析

2.1 模型大小对计算时间的影响
注意:在后面加入 sort –n 后输出的变化。

从图中可以看出来,计算时间随着格子的大小,需要的计算时间增加的很快。

注意:在测试中,Kpoint一直保持不变(因为只有一个Gamma点)。而在我们实际的计算操作中,使用1x1x1 Kpoints的机会并不多。如果格子在某
个方向增加了2倍,那么对应的改方向的K点就需要除以2。重复一下上节的经验指导。也就是在计算过程中,保持k*a保持不变。当然,k*a是我们提
前测试好的。
举例:

一个10x10x10 Å3的体相材料,我们计算的时候K点设置为:6x6x6。
当我们将材料在x方向增加1倍,变为20x10x10 Å3。为保持一致的精确度,那么我们的K点需要设置为:3x6x6。

这是因为倒易晶格矢量和实际的晶格矢量之间存在着倒数的关系:

注: 类似的图,不加说明,均出自我们的参考书

也就是说,我们选取的晶格越大,倒易晶格矢量越小。用同等数目的K点分布到倒易晶格中,网格的密度也会越大,从而造成计算量的增加。

2.2 体系的对称性对计算速度的影响:

2.2.1 K点保持不变:

这一点前面关于氧原子的计算就已经介绍到了,降低体系的对称性会增加额外的计算时间。如图:将12x12x12 Å3(计算需要186.86 s)的格子修改如


下:
计算结束后,查看时间,为194.9 s, 计算时间增加了8秒。

2.2.2 对称性对K点的影响:

体系的对称性不仅仅提现在前面的计算中,更可以在计算中极大地减少K点的数目,从而加快计算,节省时间。这一点我们引用参考书中的一段话:

2.3.3 模型对称性与K点对称性的关系

在这里,体系的对称性与K点对称性的匹配问题,尤其是对于hexagonal的结构来说,必须要使用 gamma centered points. 也就是第三行的第一个字母


必须为G或者g。我们看一下官网的原话:

We strongly recommend to use only Gamma centered grids forhexagonal lattices. Many tests we have performed indicate that the energy convergessignificantly faster with centered grids than with standard

Monkhorst Pack grids. Grids generated with the "M" setting in the third line, in fact do not have full hexagonal symmerty.

如果你不确定自己的体系,直接用G就可以了。

For reasons of safety it might be a good choice to use only meshes with theirorigin at (switch "G" or "g" on third line or odd divisions) if the tetrahedron method is used.

3 扩展练习:

1 认真阅读: Density Functional Theory: A Practical Introduction: 第三章的前两节;


2 VASP官网查找K点相关的说明。

4 总结:

学习完本节,大家应该掌握的内容有:

4.1 晶格大小对计算时间的影响;
4.2 体系的对称性对计算时间的影响;
4.3 掌握K点和晶格大小的经验规则;
4.4 晶格对称性和K点对称性的一致性。

上一篇:Learn VASP The Hard Way (Ex21):谁偷走的我的机时?(五) 下一篇:Learn VASP The Hard Way (Ex19):谁偷走的我的机时?(三)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex21):谁偷走的我的机时?(五)


2017-07-19

Ex21 谁偷走的我的机时?(五)
并行

前面几节讨论的都是一些涉及到模型以及计算细节对时间的影响。本节我们讨论一下服务器节点设置(并行)的影响。从字面上不难理解,并行就是
多个节点同时计算同一个任务。好比之前用一匹马拉车,现在改用两匹,三匹或者更多的马拉同一辆车。一匹马拉车的时候,对马的要求是足够强壮
,能拉得动还要跑得快。但你想跑的更快,就需要驾驭两匹或者多匹马,但这个时候对于驾驶马车的你就需要提出技术要求了:如何控制马儿之间的
节奏。控制好了,并驾齐驱,得儿驾得儿驾,爽歪歪。控制不好结构,你跑你的,我跑我的,整体下来,马儿也累,马车行驶的反而更慢了,搞不好
还会栽跟头。

同样的道理,如果想加快计算速度,或者在最短的时间内获取最多的计算数据,我们就需要知道并行在计算中的作用。首先我们先测试一下,不同节
点同时运行O2分子计算所需要的时间。注意:本练习讨论的是多个节点下的并行!

1 测试活动:

为了观测更加明显,我们使用 8x8x8 Å3的格子,K点使用3x3x3, ENCUT为400 eV。

测试的服务器每个节点有4个核,每个核有两个进程。
文件夹用核数命名,4,8,12,16 分别代表使用了1,2,3,4个节点进行计算。
在这里,每个节点可以看成1匹马,4个核可以看作马的四条腿。每个核的两个进程可以看做每条腿的上下两部分。
设置计算的节点数目

使用多少个节点进行计算,在提交任务的脚本里面设置。每个课题组可能不太一样,也有通过命令设置的,不过都大同小异。大师兄晒一晒自己组里
提交命令的脚本,如果和你们的不一样,不要纠结:

这个任务的脚本里面,我们使用32个核(32条腿),也就是8个节点(8匹马)同时计算。提交所有的测试任务后,等待结束。

大师兄的邮箱放到图中了qli@bigbrosci.com,大家有什么疑问、批评指正的地方可以发邮件告诉我。

2 测试结果分析:

2.1 提取结果

for i in *; do echo -e $i "\t" $(grep Elapsed $i/OUTCAR | awk '{print $4}'); done

这里复习下上一节: sort –n 命令的用法,将数列从小到大排列。

注意:这里我们没有用之前的User time提取时间, 而是用的Elapsed time。这一项是计算真正花费的时间。所有的时间里面:Total CPU time = User T


ime + Systemtime,一般来说, Elapsed time 总会比 Total CPU time 多上那么几秒。

User time 和 System time 是干嘛的?怎么的出来的?大师兄也不知道具体的含义。希望知道的童鞋们给大师兄上上课。


之前几节中,用User time的分析结果可靠吗?
没问题的,大师兄检查了一下,前面的System time均为 2s左右,Elapsed Time 中绝大部分由User time来贡献。

2. 2 作图分析:

核数的单位为 个 , 对应图中的拼音 ge

1 从4核到8核,计算时间并没有减少,反而增加了15s
2 从4核到12核,计算时间也仅仅减少了20s
3 从12核以后,增加核数,计算时间反而增加了。

从12核开始,增加的核数白白占了你的任务,缺丝毫没有提高计算速度。因此,增加核数反而成了计算的负担。这是因为并行计算的时候,不同核之
间的数据传输浪费了大量的计算时间。这好比是你多安排了几匹马来拉车,但马儿们却彼此交流,各跑各的,不愿意拉车了。

2.3 既然是这样,VASP并行还有个卵用?

答:并行是有用的,只不过我们需要调教这些不听话的马儿们,让他们服从我们的命令。这里我们就会需要一些其他的参数,NCORE和NPAR。

NCORE:控制多少个核同时计算;
NPAR:如何把计算任务分配到计算资源上面计算。

它们之间的关系是:NCORE= 计算使用的核数 / NPAR

注意:这两个参数只能选取一个来使用:

测试数据结果(给喜欢看表格的人准备的)
图中红色部分为前面计算的结果,
蓝色为NCORE=4的结果(测试的服务器每个节点有4个核,所有的计算军用NCORE=4);
绿色为NPAR=4的结果(所有的计算中均用的NPAR=4);
黄色为NPAR=Core/4的结果,
根据NPAR和NCORE的关系,该设置与NCORE=4等同,但是实际测试中蓝色和黄色为什么没有完全一样,我也说不清楚。

1)使用NCORE以后,单节点运行也加快了;(单匹马儿被你调教的更听话了)
2)加入NCORE和NPAR参数后,计算时间明显提高了。在20核以后的计算中尤为明显;
3)如果你想用多个节点计算,NCORE或者NPAR,不要忘了加(二者选其一)。
4)可以肯定的是:NPAR和NCORE的乘积就是我们计算所用的核数,这一点大家要记在心里。
5) 在本测试中(这是前提!!),增加节点个数并未实现 1+1 = 2 的效果,1+N = 2 的效果也没有实现。但在多个节点的计算中,加入NCORE或者
NPAR,节点数越多,效果越明显。

手册上解释说NPAR,或者NCORE的取值可以为总核数的开方值。很多人对此会有疑虑,大师兄的建议是:
1) 测试,测试,测试!....
测试一下自己的体系这是主要的,不要完全相信本测试的结果,体系不同,结果可能会差很多!!;
2)NPAR的取值可以设置为节点的数目,(默认值为计算的核数!)
3)NPAR实在不懂的话,直接设置NCORE=单节点的核数,单节点的核数/2,单节点的核数/4…….
4)QQ群中,丁老师在单节点下多核并行的情况进行了深入的测试,大家可以群文件下载学习。

3 扩展练习:

1 阅读VASP官网关于NCORE,NPAR的内容;
2 对于自己的计算体系,测试这两个参数;
3 总结前面关于计算时间的影响因素

4 总结:

关于VASP计算时间的影响,我们暂且告一段落了,希望大家能在前面几节的学习中熟练掌握影响计算时间的这些因素,在实际的计算过程中合理把握
,提高计算效率,节约机时。浪费的机时不仅仅属于你自己,也属于组里其他人的。

上一篇:Learn VASP The Hard Way (Ex22):乙醇气相分子的优化 下一篇:Learn VASP The Hard Way (Ex20):谁偷走的我的机时?(四)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex22):乙醇气相分子的优化


2017-07-20

Ex22 乙醇气相分子的优化

前面我们终于讲完了O2分子优化的例子。相信大家对VASP计算已经有了一个初步的理解。这一节我们继续学习气相分子的优化。为了让大家进一步
了解计算的过程,我们选取一个稍微复杂的分子作为例子:乙醇(CH3CH2OH)。

问:把大象装进冰箱需要几步?

大师兄,这个问题我早就知道答案了。为啥还问这样低智商的问题?
大师兄要求的不是让你回答开冰箱门,装进去,关门的这三步。而是让你尝试回想一下:当你第一次接触这个问题的时候,你的反应是什么?

大师兄比较笨,我的第一反应是,这怎么可能? 冰箱那么点,大象那么大。
当朋友告诉我答案的时候,才恍然大悟,这跟大小没关系。

同样的,怎么用VASP计算乙醇分子?很多童鞋就如同第一次跟被问到大象这个问题,不知所措。答,也是三步!

1) 打开冰箱:准备VASP文件
2) 把大象塞进去:准备乙醇分子模型
3 )关上冰箱:运行VASP

1 打开冰箱:

我们可以直接用O2分子计算的输入文件,
1.1 复习一下前面学到的INCAR和KPOINTS的内容:
1)乙醇分子是闭壳层的分子,没有单电子,不需要ISPIN=2
2)气相分子计算,我们要用ISMEAR=0,SIGMA取值要小, SIGMA=0.02;

# 表示注释,这个符号后面的内容,VASP在运行的时候不考虑。

示例1 :
ENCUT = 400
# ENCUT = 500

ENCUT = 400

效果是一样的。

示例2:# 的用法:
VASP计算中一些常见的错误,以及注意事项,你可以通过# 写在INCAR里面,方便计算的时候进行设置。可以 # 开头,单起一行,也可以在参数的最
后面加上注释。新手们刚刚开始,可以结合VASP官网参考书,把用到的INCAR参数注释下来,时间长了慢慢就掌握了。

3)气相分子计算,K点使用gamma点就够了;

2 把大象塞到冰箱里面 POSCAR的准备 (本节重点)

前面我们学习到,一个好的初始结构会加快计算,获取准确的计算结果。因此我们需要去找一个合理的模型。对于气相分子的结构,一是手动搭建,
大师兄推荐用高斯view,另一个办法就是找数据库,大师兄推荐英国皇家学会的ChemScpider。

网址是:http://www.chemspider.com/

下面我们把手动搭建乙醇分子的模型具体解释一下:

2.1 打开网站:
搜索框中输入: ethanol 或者C2H6O…. 点击搜索,等待结果:

上面箭头指的两个地方随便点,效果是一样的,如下:
分子默认显示2D的结构,点击箭头指的3D,切换。
下面有对应结构的维基百科链接,翻墙的筒子们可以查阅下相关结构的知识。
选择3D后,如下:

点击箭头指的地方保存,浏览器会下载对应的 .mol 文件,文件名为该结构在数据库中的编号。

.mol 文件也是纯文本,使用 notepad++ 打开如下:


注: 不仅仅是 .mol 文件,很多结构文件都是文本格式,直接打开就是。

从里面找到乙醇结构的xyz坐标信息

删除上图中除红色框之外的所有行,1-4行,14-最后一行,只保留xyz坐标信息的那几行。
手动写POSCAR,首先你要熟记POSCAR的格式,知道POSCAR从头开始,往下来每一行代表的内容。

我们的模型是把乙醇分子放到一个20x20x20 A3的格子里面。输入完之后,坐标后面的元素符号以及那些 0 0 0 可以删掉,也可以不管。

关键点1: mol文件中,坐标那几行中的第4列写到POSCAR中的第6,7行!
关键点2:注意坐标为Cartesian 或者是 Direct. Direct 的坐标xyz值都小于1.

如果你想删掉图中坐标第3列后面的内容:大师兄推荐notepad++里面的列块模式:如下:

点击之后,可能会弹出对话框,告诉你如何使用,列块模式
这个很重要,它
方法 1: 是使用notepad来
摁住 alt 键,然后用鼠标选择文本,不同电脑可能不一样,大师兄这边同时摁住 control 和 alt 两个键 ,然后用鼠标选择的。 做的。。。
方法 2:
同时摁住 alt和shift键,通过键盘上前后左右的箭头选择文本
大家可以尝试下,选中效果如图:

然后点键盘上的delete键删除.

然后另存为POSCAR即可。

我们可以使用p4vasp来查看一下模型的结构:如下图
我靠,师兄,结构怎么跑到格子外面啦?前面O2分子的学习中,你已经知道了这是因为周期性导致的显示问题。对计算不会产生影响。这个结构可以
拿来直接用。

如果感觉不爽,想把结构放到中间,可以这么做:
数学上,把 xyz坐标统统加上10即可;

软件使用上,我们讲一下p4vasp的操作方法:
选择 edit –> Move atoms

Move group 是你要移动的原子,这里大师兄直接输入了 CH O 三个元素符号(中间有空格)表示选择所有元素的原子。然后在Vector中选择xyz三个


方向上移动的大小。你也可以写 1 1 1,然后点击Move按钮10次。
如果你想通过选择原子来实现移动的话(不直接在Move group里面输入 C H O),需要按照大师兄说的步骤走:

1) 空格键结合鼠标选中所有的原子;鼠标指到原子上就点一下空格键
2) 选中原子后,主界面会显示一些数字,这些数字和POSCAR中元素的顺序是一致的;
3) 所有原子选中后,左下角的框中点击 Get group,会显示选择的那些原子;
4) 在Vector中选择 x y x三个方向上移动的大小,然后点击 Move 按钮。

上面一堆废话就此打住,结果就是这样子的:

然后点击 file àSave system as à选择目录à保存成POSCAR

POTCAR 这里就是怎么准备POTCAR

POSCAR讲完了,我们就要按照里面的元素顺序制备POTCAR了。

首先: 我们要准备 O CH 三个元素的POTCAR,去POTCAR的数据库中去找:


然后复制到当前目录下,三个元素的POTCAR分别命名为:POTCAR-O, POTCAR-C 和 POTCAR-H, 把三个元素的POTCAR合并在一起, 命令就

cat POTCAR-O POTCAR-C POTCAR-H > POTCAR


3 提交任务

提交任务之前,需要再次检查自己的输入文件一遍,没有问题,提交直至结束。

4 扩展练习:

1) 从头到尾,认真重复本节中大师兄的操作;
2) 记住本节讲解的内容,自己重复一遍操作,直至自己通过文本编辑器会搭建结构模型;
3)运行乙醇计算的例子;
4)尝试使用高斯view,MS,以及其他可视化界面搭建模型;
5)学会使用VESTA导出POSCAR格式的结构数据。

5 总结:

本节,我们主要讨论了一下分子模型的数据库搜索和搭建工作。希望大家能够完全掌握本节的所有内容和细节。在计算中,你会遇到各种各样的结构
文件,其实都是xyz坐标的衍生物而已。不要害怕,直接打开它们,学会提取里面有价值的信息。

上一篇:Learn VASP The Hard Way (Ex23):乙醇分子的振动频率计算(一) 下一篇:Learn VASP The Hard Way (Ex21):谁偷走的我的机时?(五)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex23):乙醇分子的振动频率计算(一)


2017-07-20

Ex22 乙醇分子的振动频率计算(一)

1 分子的振动

我们首先看回顾一下振动相关的基本知识,这里大师兄不具体解释,引用 9版Atkins的物理化学书中的内容,书已上传至QQ群文件中,也可百度网盘下载:
http://pan.baidu.com/s/1o8HlyOi 全是英文,大家耐心阅读下。

简谐振子、胡克定律、体系势能随着振动距离x的关系

简谐振动的薛定谔方程描述:
薛定谔方程的解:振动的量子化,振动频率
零点能的数学和物理两个方面的解释:

2 频率计算有什么用?为什么要算频率?

大师兄稍微总结了一下频率计算的意义,大体有以下几个方面,没有提到的用处,烦请大家指出来,以便补充。
2.1 确定结构是否稳定;
2.2 看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;
2.3 反应热,反应能垒, 吸附能等的零点能矫正;
2.4 确认过渡态(有一个振动的虚频)
2.5 热力学中计算entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。

3 怎么用VASP计算频率?
3.1首先进行结构优化,获取稳定的构型,这个我们前面已经讲过了;
3.2 将原来的CONTCAR复制成POSCAR : cp CONTCAR POSCAR
3.3 修改INCAR
修改后如下:

频率计算的INCAR
这里是频率计算要修改
· IBRION 改成5
的地方。
· POTIM用一个更小的值,我们这里用的0.02,默认值是0.015
· NSW 设置成1,这个可以直接不管,继续采用优化时的NSW值,因为你设置成1,2,3,4,5…1000都不会影响计算;但不能不设置(因为默认值是0,这时算个单点后任务便
停止了。)
· NFREE = 2 添加这一个参数,表明原子在某一方向上正反两个方向移动;
· NCORE=4 这一项要注释掉,大师兄这边的服务器,并行计算频率时VASP会罢工,只进行一步静态计算,注释掉就正常进行了;
· 此外,EDIFF也要设置一个严格的值(频率计算时,默认值为1E-6,足够了!下一节会讲到)

小结一下频率分析关键的参数:
IBRION = 5
NFREE = 2
POTIM = 0.02

4 扩展练习
4.1 按照本节的流程新建一个文件夹:freq : 该文件夹中包含乙醇分子优化后的结构(将CONTCAR复制成POSCAR),以及优化时的POTCAR,INCAR,KPOINTS以及提交命令
的脚本文件;
4.2 修改乙醇分子优化的INCAR为频率计算的INCAR;需要修改哪些参数心里要清楚;
4.3 运行乙醇分子频率计算,并查看频率分析的OUTCAR,OSZICAR等输出文件;
4.4 查看VASP官网对于IBRION=5 的解释,搜索网上相关频率计算的文章,帖子,初步了解NFREE,POTIM所代表的含义;
https://cms.mpi.univie.ac.at/wiki/index.php/IBRION
4.5 查找官网中频率计算的例子:
A)https://cms.mpi.univie.ac.at/wiki/index.php/CO_vibration
B)https://cms.mpi.univie.ac.at/wiki/index.php/H2O_vibration

5 总结:

5.1 熟悉频率计算初始文件的准备过程;
5.2 频率计算INCAR中的三个重要参数;
IBRION = 5
NFREE = 2
POTIM = 0.02
5.3 初步了解频率计算中各个参数的含义。

上一篇:Learn VASP The Hard Way (Ex24):频率计算的输出与POSCAR原子的固定 下一篇:Learn VASP The Hard Way (Ex22):乙醇气相分子的优化
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex24):频率计算的输出与POSCAR原子的固定


2017-07-21

Ex24:乙醇分子的频率计算(二)
频率计算的输出与POSCAR原子的固定

按照前面一节介绍的方法,结构优化过程完毕后,准备频率计算的输入文件,提交任务等待结束。

1 查看结果

1.1 查看OSZICAR,你会发现一共计算了55步。

下面我们分析一下这55步是怎么回事:

A)乙醇分子CH3CH2OH 含有9 个原子,每个原子在 xyz三个方向上均有一个自由度,共9*3 = 27个


B)我们设置的NFREE = 2 ,也就是在每个方向上 +POTIM 和 –POTIM都移动并算一下,这样就有了27*2 = 54 步:官网原文如下:大家自己去查阅IBRION和NFREE
的相关内容。
The parameter NFREEdetermines how many displacements are used for each direction and ion, andPOTIM determines the step size. The step size is defaul
ted to 0.015 Å (startingfrom VASP.5.1), if too large values are supplied in the input file. Expertiseshows that this is a very reasonable compromise.
NFREE=2 usescentral differences, i.e., each ion is displaced by a small positive andnegative displacement, ±POTIM, along each of the cartesian directions.
C)还有一步:55-54 = 1, 这一步指的是第一个离子步,为频率计算前的单点计算。
所以当你设置了NFREE=2的时候,频率计算需要1+N*6步。N为体系中的振动的原子数。

1.2 我们这么算,默认的是所有的原子在xyz三个方向上均可移动。但很多时候,我们只需要振动感兴趣的原子或者某一特定的方向就可以了,也就是说选择性计算频率
。比如我们只想算乙醇的羟基振动峰,那么其他的原子就可以固定了。VASP中怎么实现这个功能呢?首先我们看一下当前的POSCAR:
左下角的: set nu 显示文本的行数,取消行数可以通过 :set nonu

如果想要选择性地固定某些原子,我们需要以下几个步骤:
1) 在第七行和第8行之间插入一行,内容为 Selective Dynamics ,前面讲过VASP只认第一个字母,也就是S是必须的,Selective Dynamics 和 See, Sea….等其他S开
头的都是一个效果的。
2) 加入Selective之后,我们需要在每一行的坐标后面加上 T或者F表示允许和禁止移动。这里我们需要加三个T或者F,表示在x y z 三个方向上选择性固定原子的移动

三个方向都允许:T T T
三个方向上都不允许为 F F F
x移动,y和z方向上固定为: T F F
x和y方向上固定,z方向振动: F F T
以此类推,其他的大家根据自己的情况固定。

师兄,那么我们要做的就是在POSCAR中逐行写上T T T或者F F F就行了吧?


是的,下面大师兄教给你的是通过vim的命令或者p4vasp实现这个功能。

2 通过Vim实现原子的固定和选择

2.1 加入 Select 的关键字母S,并在坐标后面全部加上 T T T

这里说明了怎么用Vim在坐
标的后面都加上T T T,

图中1:插入一行,告诉VASP我们要选择性的固定某些原子或者在某些方向上;
图中2: 10,18s 中 s 代表替换(substitute)的意思,这里表示我们选中了第10到18行,10和18之间有个逗号表示连续;10,18s后面用一个 / 分开,紧跟着你我们要替
换的内容;
$ 在这里是末尾的意思,$/T T T我们要把每一行的最后替换成 T T T
后面再用一个/分开,加上g 表示 global 全部替换的意思。
输入完毕后,回车,效果如下:
每一行的末尾都加入了 T T T 箭头指的地方告诉我们:9行中的9个地方发生了替换。
(自己复习下sed的用法,比较两者的区别)

2.2 下面我们要把OH之外的原子全部固定住:

通过p4vasp我们可以知道,OH的两个原子为第一个(O)和最后一个(H),因此我们把第11行到17行中的所有T替换成F就可以了。我们可以使用 :11,17s/T/F/g来
实现。最后效果如下:

C)扩展:
如果所有的原子后面为: T T T,这与我们之前的计算效果是一样的(第8行没有S,坐标后面没有T T T)。此外,固定之前要先找到哪些原子我们希望固定的,以及它
们在坐标中的顺序。

3 使用p4vasp实现上述功能

基于p4vasp的可视化特性,直接用鼠标操作是很多linux 小白最喜欢看到的,下面我们主要讲解一下p4vasp的操作,请务必将vim和p4vasp的操作关联起来,这样你会
就会发现可视化和命令之间的微妙关系了。

3.1 打开p4vasp,导入POSCAR;
System 显示 ethanol说明数据已导入。

3.2 鼠标系列操作

A)点一下 Show 按钮,显示乙醇分子结构;


B) 点击Build按钮:显示分子的坐标信息:这里的坐标顺序和POSCAR完全一致:

C) 选择乙醇的羟基(使用空格键选择原子),下图中可以知道O和H在坐标顺序中为第一个和最后一个;
D)选中右上角的Selective Dynamics,效果如图中箭头2指出来的部分,这个动作和我们之前在第八行插入Selective Dynamics 以及在坐标每一行加入T T T 是等效的

E)选中第二行坐标,摁住shift键,然后再点一下倒数第二行,选中整个区域后,点击右上方的 Unselect , 这个动作等效于我们将11,到17行中的T全部替换为F。


F)操作完成后,坐上角: File à Save System As 保存新的POSCAR即可。

4 扩展练习:

4.1 掌握本节的两个POSCAR处理方法;
4.2 学会计算频率分析所需的步数;
4.3 浏览OUTCAR,查找频率输出结果

5 总结:

通过对比手动敲命令修改POSCAR和使用p4vasp进行鼠标操作,这里大师兄希望大家能掌握以下3点:
1) 学会Vim的使用技巧,当然了,Vim及其强大,完全掌握基本不可能,但最基本的操作要了解;
2) P4vasp的操作要熟悉,不知道怎么操作的,导入一个计算文件,随便点点,找找感觉;
3) 在使用p4vasp的操作中,你要学会思考:怎么将鼠标操作转化为命令语言来实现,为将来写脚本做好准备,毕竟很多时候,我们用不了可视化界面,就只能手动修
改格式了,结合命令,比可视化操作更快,还可以批量进行。

上一篇:Learn VASP The Hard Way (Ex25):振动频率的可视化 下一篇:Learn VASP The Hard Way (Ex23):乙醇分子的振动频率计算(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex25):振动频率的可视化


2017-07-21

Ex25 振动频率的可视化
jmol安装(Windows/Linux)及查看分子振动介绍

本节推荐一款可视化程序:Jmol,可以用来看分子结构以及振动频率。Jmol是一款Java语言编写的,开源,Linux,Windows均可的使用的可视化软件。还记的我们从
ChemSpider获取乙醇分子的情景吗?
对了!RSC的网页版中,乙醇分子的3D结构就是通过Jmol展示给大家的(3D图上方),并且我们下载的结构也是jmol格式的文件!可以通过jmol直接打开。现在我们
通过在电脑上运行Jmol,并查看分子的结构和振动频率。

1 jmol在windows和linux下的安装:

1.1 安装前准备——java运行环境的安装

Windows下:直接百度Java Runtime Environment(JRE),安装软件。

也可以官网下载: http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

注意两点:1: 接受许可,2:64位系统下载箭头所指的文件,然后安装即可。
Linux下Java运行环境安装移步下方链接:
https://linux.cn/article-3792-1.html (怎样在Ubuntu 14.04中安装Java)
或者直接使用命令:sudo apt-get install default-jre

1.2 jmol软件的下载和安装

Windows:

https://sourceforge.net/projects/jmol/files/Jmol/

打开链接后,图中箭头指的地方下载最新版的(Linux其实和Windows下载的文件一模一样,见后面说明),也可以任选版本进行下载。

等待几秒后会弹出下载的窗口,其他浏览器也应该一样。

解压缩后就算安装好了,可以直接运行。

运行Jmol程序:
图中1 为 jmol.bat 文件,2 为 Java的可执行文件:jmol.jar,Windows下任选一个双击即可打开程序。建议将解压缩之后文件夹中的jmol.bat或者Jmol.jar 文件右键
发送到桌面快捷方式。打开后如下图:

Linux下安装Jmol的方法:

在 https://sourceforge.net/projects/jmol/files/Jmol/下载jmol(和前面介绍的Windows下载的文件一模一样),解压后的文件复制到usr/bin中,打开文件时用jmol.
sh +文件名即可。将解压目录加入.bashrc路径中也可以实现,同时需要给jmol.sh加上可执行权限,即chmod +x jmol.sh,打开文件仍用jmol.sh + 文件名。(QQ群友
:连赞提供!)

大师兄在Linux系统下的操作如下:

a)下载和Windows版的过程一样,下载完毕后,解压,
b) 终端里面进入解压后的文件夹:
注意一下几点:
b.1) jmol.sh就是我们在Linux系统下面的命令(Windows里面我们用jmol.bat 和 jmol.jar);
b.2)首先赋予它可执行的权限: chmod u+x jmol.sh (取消权限: chmod u-x jmol.sh)
b.3)这里大师兄电脑下,jmol.sh变成绿色的了(不同电脑显示会不同,不要纠结)
b.4) 尝试运行一下: ./jmol.sh OK
b.5)下面设置环境变量:打开 ~/.bashrc 文件,并加入这一行:

export PATH=~/Downloads/jmol-14.20.2:$PATH

注意: 等号=前后没有空格, 后面紧跟着jmol的解压缩目录,再往后是一个冒号,冒号前后也不能有空格,$PATH 必须要加上!!!


b.6) 保存.bashrc 文件并source一下: . ~/.bashrc (注意前面的 . )或者使用命令:source ~/.bashrc

c) 进入其他目录,运行jmol命令:下图中~/Destkop/freq 目录下有我们关于乙醇频率的计算结果。

大功告成!!!

此外, sudo apt-get install jmol 这样安装的是旧版本,强烈不建议,原因如下:


可能图片有些模糊,但不重要!旧版本的不支持OUTCAR…..安了也是白搞!!!

2 使用jmol可视化分子振动

2.1 载入振动文件到jmol

Windows:直接将频率计算得到的OUTCAR拖到jmol.bat就可以了
Linux:直接 jmol +文件名
两个系统下面均可使用左上角的 文件à打开à选择OUTCAR 导入。
得到如下界面。但是分子并没有开始振动,只是显示了其结构。

(该结构和ChemSpider上的一样! )

要查看振动模型,需要以下两步,选中振动模型和开启振动。这两步有多种方法可以实现,总结如下。

2.2 选择振动模型

A)可以在工具-->原子库选择器中选中要查看的振动模型
注意,先把右边的按钮拉倒底,然后双击Frequencies展开频率信息,如下:

B) 也可以直接右键-->模型中选中
2.3 开启振动

A) 原子库选择器中最下方: 振动-->振动开可实现, 点击后,原子就开始振动了。

B) 在菜单栏-工具-->震动中开启(原子库选择器选中时采用这种方式,需要先开启再选中)

C) 也可以右键-->振动-->开启

2.4 查看不同振动

A) 原子集选择器中的频率列表,双击其中的一个就显示其振动方式了。
B) 要查看下一个振动还可以点击向右的这个箭头就可以了。

以上就是本节关于jmol可视化的介绍了,更多信息,请查看jmol的wiki:
http://wiki.jmol.org/index.php/Main_Page

3 扩展练习:

3.1 熟练掌握jmol的软件安装,查看频率的基本操作。
3.2 通过在Linux系统下面安装Jmol,尝试着安装其他软件;
3.3 分析各项频率值对应的分子或者原子的移动。

4 总结
本节主要介绍给大家一款除了p4vasp之外的另一款VASP可视化的软件,不仅仅局限在频率振动分析方面,查看POSCAR,CONTCAR也可以直接使用jmol打开。该软
件由连赞小朋友推荐,并编辑文中大部分内容,在此表示衷心的感谢。希望大家都可以熟练掌握这款软件。Linux下面可以直接用: jmol + 文件名,打开查看结构,非
常方便。

上一篇:Learn VASP The Hard Way (Ex26):乙醇分子的频率计算(四) 下一篇:Learn VASP The Hard Way (Ex24):频率计算的输出与POSCAR原子的固定
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex26):乙醇分子的频率计算(四)


2017-07-21

Ex26 乙醇分子的频率计算(四)
OUTCAR分析和零点能矫正

前面我们学会了通过使用Jmol查看分子振动。但分子振动频率在OUTCAR是什么样子的呢?今天我们就分析一下OUTCAR文件中的频率信息,以及如何写脚本计算零点
能矫正。

1 OUTCAR分析

1.1 回顾一下Jmol中的频率振动

Jmol提取了OUTCAR中的振动信息,将每个振动模式的频率列了出来。

1.2 OUTCAR中的信息:
对比一下这两个振动频率和Jmol中的前两个。

1)1 f = 代表第一个振动模式,细心的你仔细观察,会发现每一行有四个单位的数值:THz, 2PiTHz, cm-1,和meV,这四个是完全等同的;


2)下面一行为坐标XY Z和每个原子在x y z方向上的振动大小;
3)X Y Z下面的数字为结构的坐标信息(Cartesian坐标系),dx dy dz 为振动的具体数值;
4)后面的振动模式的频率和第一个的格式一样。

2 频率单位的换算

我们先讲一下这四个单位的换算公式:
Relevant Formulas:

E = hc/λ
ν = c/λ
= 1/λ
T = 1/ν

Definitions:
E = energy (eV)
λ = wavelength (m)
= wavenumber (m-1)
T = period (s)
ν = frequency (s-1 or Hz)
h = Planck's constant = 4.135667516 x 10-15 e
V*s
c = speed of light = 299792458 m/s

以第一个振动为例:

1f =
111.907 THz
703.134 2PiTHz
3732.82 cm-1
462.811 meV

1) THz 和2PiTHz 的换算: 2π的关系:


111.907230 (THz) * 2 π = 703.133866 (2PiTHz)

2) THz和 cm-1 的关系:v = c/λ= c , c是光速,λ是波长, 是波数,单位是m-1。计算前先换算成标准单位: 1THz = 1012Hz, 1 cm-1 = 100 m-1,因此:
12
111.907230* 1012 (Hz) = 299792458 (m/s) * 3732.823294 * 100 (m-1)

3) THz和能量 eV 的关系:
E = hv , h 为普朗克常数:4.135667516 x 10-15 eV*s (注意此时:Plank constant的单位!!!)
462.811270 (meV) = 0.4628 eV = 4.135667516 x 10-15 (eV*s) * 111.907230 * 1012 (Hz)

4) 波数(cm-1)和能量(meV)的关系:E = hc/λ =hc *


462.811270 meV = 0.4628 eV = 4.135667516 x 10-15 (eV*s) * 299792458 (m/s) * 3732.823294* 100 (m-1)

大家根据上面的公式自己手动算一遍就明白了,还可以使用下面这个网址进行计算:http://halas.rice.edu/conversions 这里就不再多说了。

3 OUTCAR频率信息的提取:

我们可以使用grep 命令提取,有两个方式:
3.1:使用以下几个命令:
grep THz OUTCAR
grep 2PiTHz OUTCAR
grep cm-1 OUTCAR
grep meV OUTCAR;

这几个命令中,我们分别以振动的不同单位作为提取对象,便可以得到所有的振动信息(这里的所有指的是包含虚频):以大师兄常用的 grep cm-1 OUTCAR 为例:

黄色标出来的第一列:9*3 = 27 个振动模式,第二列是以cm-1为单位的振动频率大小,最后三行 f/i= 指的是虚频。

前面我们提到过,虚频可以判断结构是否稳定。那这里,我们计算出的乙醇分子结构肯定不稳定喽?不一定。
因为频率计算和软件的数值积分有关(我也不清楚数值积分怎么进行的);
计算过程中我们的设置对频率计算影响很大,KPOINTS, ENCUT, EDIFF, POTIM等都会影响计算的精度(下一节讨论);综合这些因素,对于分子的振动频率来说(注
意:声子谱不适用)一般低于100cm-1的频率可以忽略。严格点可以降到 50 cm-1,也就是说:如果你在计算中发现有个50cm-1左右的虚频,完全可以不考虑。

3.2:grep 'f =' OUTCAR


注意:图中虚频部分没有显示出来!严格按照我用的这个命令

使用这个命令的时候,不提取虚频部分。查看虚频的时候,可以用之前的方式,也可以用这个命令:

在零点能的计算时,虚频是不能考虑在内的,因为它不是分子的真实的振动模式。在我们这个例子中,虚频的出现是软件的误差所导致。在过渡态中,虚频代表的是反
应方向。从另一个角度去分析:乙醇分子的零点能(下面讲到)为:2.117 eV,图中三个虚频对应的能量为:0.76 + 2.31 + 8.14 = 11.11 meV = 0.01111 eV,所占比
例为:0.0111/2.117 = 0.5% 这个可以忽略不计。

4 零点能校正

4.1 明白什么是零点能:回顾频率计算第一节的内容:
4.2 获取振动能量数据:

分析下结构:
上图输出共有11列(列之间用空格分开):我们要的零点能在第10列,使用下面的命令:grep 'f =' OUTCAR | awk '{print $10}'

如果想同时输出第1和10两列: grep 'f =' OUTCAR | awk'{print $1 " "$10}'


$1 和 $10 之间有2个 双引号:" ",两个双引号里面有一个空格用来分开),否则两列会连在一起。
注意!注意!注意!

这里我们提取的能量为:hv !!!
而零点能为1/2 hv!!!

4.3 将所有振动的能量求和:
grep 'f =' OUTCAR | awk '{print $10}' | paste -sd+ |bc

qli@BigBroSci:~/Desktop/freq$ grep 'f =' OUTCAR | awk '{print $10}' |paste -sd+ | bc
4233.962325

输出的4233.96就是所有的 hv 之和。
1)不要忘记除以2
2)此时单位是meV,换算成 eV还需要除以1000。
3)所以,我们的零点能是4233.962325/2/1000 = 2.117 eV

4.4 写脚本

将前面的命令写到一个文件里面就成为了脚本:怎么写呢?本人平时喜欢使用类似4233.962325这个数字,除以2000这一步在后面的工作中进行。因此只用到了
grep 'f =' OUTCAR | awk '{print $10}' | paste -sd+ | bc 这个命令。写脚本的具体操作:

1)把这行命令写到一个文件中,文件名为fsum (本人不喜欢.sh 尾缀,加不加都一样);


2)chmod u+x ~/bin/fsum (赋予可执行权限);
3)mv fsum ~/bin (移到~/bin 文件夹);
4)在任何一个频率计算的目录下运行:敲命令 fsum 即可;
5)不喜欢 fsum这个命令,将文件名改成你自己喜欢的名字:

如果想在脚本里面直接完成除以2000的任务,可以这么写:
hv_sum=$(grep"f =" OUTCAR |awk '{print $10}'| paste -sd+ | bc)
echo "scale =6; $hv_sum/2000" | bc

此时结果的单位为: eV。

5 扩展练习:
5.1 OUTCAR中的频率输出要看明白是怎么回事;
5.2 频率的各个单位的换算要搞明白;
5.3 怎么提取信息,计算零点能要掌握;
5.4 怎么写脚本,从现在开始要练习了!
6 总结:
本节我们主要讨论了一下OUTCAR中的频率结果,能量换算,如何提取振动能量,以及如何计算零点能,最后简单介绍了一下脚本的写法,打消大家对脚本的崇拜心理
,自己稍加琢磨也会写出实用的脚本!

上一篇:Learn VASP The Hard Way (Ex27):乙醇分子的频率计算(五) 下一篇:Learn VASP The Hard Way (Ex25):振动频率的可视化
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex27):乙醇分子的频率计算(五)


2017-07-24

Ex27 乙醇分子的频率计算(五)
(频率计算的时间成本)

通过前面读者的反馈,本节前面主要讲述一下零点能相关的注意事项:

1 参考书籍:

以下所提到的书籍都可以在QQ群文件和百度网盘里面下载:

http://pan.baidu.com/s/1bKHMjG

1.1 Density Functional Theory:A PracticalIntroduction 大师兄极力推荐的菜鸟入门书!!!


1)不要网上随便下载(很多都是野鸡版,公式符号不全)
2)不要看中文版的;去看原汁原味的,困了就歇会,慢慢坚持看;
3)大师兄QQ群下载或者点击百度网盘链接;
4)第5章专门讨论的频率相关的问题!!!

1.2 Atkins的物理化学第9版
前面几节我们都是用的这一部分作为参考,忘了的童鞋们返回继续重修;
1.3 Jens. K. Norskov 的FundamentalConcepts in Heterogeneous Catalysis

2 当你阅读完前面推荐书中的频率部分后,应该会明白很多。本节的第二部分我们主要讨论下频率计算的一些大家有顾虑的细节问题:

2.1 怎么进行零点能校正?

以乙醇的计算为例:
A)首先结构优化完毕后我们会得到分子的能量:E0
B)频率计算后我们会得到分子的零点能:ZPE
C)零点能校正之后的乙醇分子能量为: E_ZPE = E0 + ZPE
D)A和B得出的结果直接相加即可,不要想太多。

2.2 怎么计算过渡态和反应热的零点能校正?(菜鸟暂且跳过)

对一个反应:IS --> TS --> FS


IS: Initial State 反应物
TS: Transition State 过渡态
FS: Final State 产物
记住这几个定义,本书后面IS, TS, FS用的时候多着呢!

1)优化反应物IS和产物FS的结构,获得能量:E(IS),E(FS);
2)对反应物和产物进行频率计算,获得各自的零点能:ZPE(IS), ZPE(FS)。
3)搜索过渡态,获得结构和能量E(TS);
4)过渡态频率分析,获得零点能ZPE(TS)

不考虑零点能的反应能垒(Ea)和反应热(ΔE):
Ea = E(TS) – E(IS)
ΔE =E(FS) – E(IS)

考虑零点能校正:
Ea(ZPE) = E_ZPE(TS) – E_ZPE(IS)
= E(TS) +ZPE(TS) – E(IS) – ZPE(IS)
= Ea + ZPE(TS) – ZPE(IS)
同理:
ΔE(ZPE)=ΔE + ZPE(FS) –ZPE(IS)

两个处理方式:
a. 先获取未校正的结果,然后把零点能各自相减;
b. 先将各个物种进行零点能校正,然后在计算反应能垒或者反应热
效果是一样的

2.2 频率计算的时候,是不是体系中所有的原子都放开?

不一定;这取决于你的体系,以及你想要关注的部分:

例子A:
乙醇在Cu(111)表面上的吸附,计算吸附热的零点能校正
CH3CH2OH + Cu(111) --> Cu(111)-CH3CH2OH
此时,Cu(111)表面我们在计算频率的时候是要固定住的!只振动乙醇分子即可。

例子B:
计算CO在Cu(111)表面上的吸附:
同A,固定Cu(111) 表面,如果你只关心CO在垂直表面上的振动,那么CO的xy方向便可以固定住,在坐标后面为:F F T

例子C:
苯酚在Cu(111)表面上O—H键断裂活化能的零点能校正:
在这里我们拿苯酚作为例子,很多时候,计算的对象比较大,全部频率优化非常耗时,那我们就得选择性地固定住一部分,只关心关键的局域部分。这个例子中我们主
要讨论零点能对O—H键断裂活化能的影响,因此我们可以把苯环的部分固定住,只放开O和H原子进行振动。

当然啦,这是一个简化的计算,肯定不如全部振动的结果好,但迫于计算时间的压力,这是一个折中的好办法。此外,由于在反应中苯环部分变化不大,所以即使我们
全部放开,它对反应热和反应能垒的影响也很小,零点能部分相减的时候抵消了。在这里你要深刻体会到,意识到,把握到:相对这两个字在理论计算中的巨大作用!!!

还有一点要注意的是:IS,TS和FS中,所固定和放开的原子必须一致!!!
不要在IS中固定苯环,在TS或者FS中放开,这样计算出来的结果只能用脑残来形容了。(PS: 本人犯的这种错误太多啦,已经不能用脑残来形容了!)
3 影响频率计算的因素测试:

前面提到过:ENCUT, KPOINTS, POTIM, EDIFF 都会对频率计算产生影响。频率计算很多时候会有小的虚频出现,通俗点说就是数值噪音。可以想到,凡是可以提高精


度的办法是不是就可以降低噪音了呢?写到这里,大师兄突然想起初中的一个老师说过一句话:好记性不如烂笔头,意思是让我们多写,这样记得会比较快。还有一句
名言:纸上学来终觉浅,绝知此事要躬行!学习VASP,亲自上手实践及其重要,看遍官网,翻烂本书不去行动也是白搭,好听点说只能是纸上谈兵。
下面的测试主要从零点能和虚频,和时间三个方面来判断:测试的命令为:

获取虚频命令:grep 'f/i' */OUTCAR | awk '{print $1 "\t " $2 "\t" $8 "\t " $9 "\t" $10 "\t" $11}'
获取时间命令: grep Elapsed */OUTCAR | sort -n
获取零点能: for i in * ; do echo $i $(cd $i ; fsum ; cd $OLDPWD);done | sort –n

3.1 EDIFFG测试

3.1.1测试

4,5,6,7,8分别代表EDIFF=1E-4到-8的测试任务;

for i in * ; do echo$i $(cd $i ; fsum ; cd $OLDPWD); done

零点能的计算结果:

EDIFF ZPE Unit


4 2.14344 eV
5 2.12494 eV
6 2.11698 eV
7 2.11696 eV
8 2.11696 eV

a. 可以看出来在1E=-6以后,零点能变化基本为0了;我们可以用这个设置;
b. 虽然你测出来一个很好的参数值,很不幸,这是默认的。
c. 从时间上考虑,本人会选择EDIFF= 1E-5,这比1E=-6快了将近一倍;
d. 5 和 6 之间的误差为: 0.008/2.117 = 0.38%;
e. 此外,单个的零点能貌似没有什么用处,一般都是两个结构的零点能相减。这个操作也会抵消一部分的计算误差。

3.1.2 虚频
(这个命令只展示一次,后面测试结果全部用下面的表格)

EDIFF Nth WN Unit Energy Unit


25 10.183435 cm-1 1.262585 meV
4 26 43.891375 cm-1 5.441839 meV
27 61.646745 cm-1 7.643225 meV
25 6.773094 cm-1 0.839757 meV
5 26 28.045092 cm-1 3.477149 meV
27 52.28955 cm-1 6.48308 meV
25 6.132037 cm-1 0.760276 meV
6 26 18.62878 cm-1 2.309675 meV
27 65.657693 cm-1 8.140519 meV
25 6.03848 cm-1 0.748676 meV
7 26 19.115009 cm-1 2.36996 meV
27 65.726299 cm-1 8.149025 meV
25 6.036457 cm-1 0.748425 meV
8 26 19.156334 cm-1 2.375084 meV
27 65.711053 cm-1 8.147135 meV

a. 改变收敛标准,并没有消除虚频,测试5中,稍微降低了些,其他情况下,最大的仍然都再1500px-1 左右
b. 6 7 8 中的虚频基本一致,说明增加收敛标准,并没起到什么好的效果。

3.1.3 时间

EDIFF Time Unit


4 1702.463 s
5 2295.233 s
6 4298.571 s
7 5481.423 s
8 5998.518 s

复习下谁偷走了我的机时中EDIFF的因素;增加EDIFF,计算时间变长了。(离子步数一致,每个离子步的收敛步数增多了) 一般来说EDIFF采用默认值或者1E-5都可以
满足情况,任务比较繁重的时候议用1E-5。本节在后面的测试中,都采用VASP的默认EDIFF值进行(1E-6)

3.2 ENCUT测试

3.2.1 零点能
ENCU ZPE Unit
400 2.11698 eV
500 2.11448 eV
600 2.11880 eV
700 2.11971 eV
800 2.11928 eV

从表中可以得出结论:增加ENCUT,对零点能的影响很小;
在计算的过程中,ENCUT要保持一致,一但选定后就不要再轻易改动,这个表的数据告诉我们,即使改动了ENCUT,对零点能的影响也很小,所以ENCUT的影响可以
忽略。

3.2.2 虚频:

ENCU
T Nth WN Unit energy unit
25 6.132038 cm-1 0.760276 meV
400 26 18.62878 cm-1 2.309675 meV
27 65.65769 cm-1 8.140519 meV
24 0.489004 cm-1 0.060629 meV
25 16.7313 cm-1 2.074418 meV
500
26 23.491849 cm-1 2.912619 meV
27 66.062971 cm-1 8.190767 meV
24 0.288462 cm-1 0.035765 meV
25 4.853849 cm-1 0.601801 meV
600
26 6.324527 cm-1 0.784142 meV
27 52.075614 cm-1 6.456556 meV
25 0.747158 cm-1 0.092636 meV
700 26 6.175845 cm-1 0.765708 meV
27 32.540704 cm-1 4.034535 meV
25 0.289332 cm-1 0.035873 meV
800 26 7.356367 cm-1 0.912074 meV
27 26.44812 cm-1 3.27915 meV

增加ENCUT可以减小虚频;从400增加到800后,最大的虚频波数从
65 cm-1 减小到 26 cm-1, 但A中的结果是不是要求我们算频率的时候,必须要把ENCUT增大呢? 答:没必要!!
因为前面零点能变化甚微,且虚频从65 cm-1 减小到26 cm-1, 只能说是在误差范围内变化,我们是可以承受的,此时ENCUT在减小虚频中的作用,大家记住这一点就可
以了。此外,增加ENCUT也会使得计算时间变长(见下图)。但是如果虚频大于100 cm-1,且不是反应路径的时候,你就得小心了。

3.2.3 时间

命令: grep Elapsed */OUTCAR | sort –n

ENCUT Time Unit


400 1832.405 s
500 2389.045 s
600 3019.433 s
700 4285.491 s
800 11943.02 s
3.3 PREC

这里我们设置了三个参数:Normal, Accurate和High

3.3.1 零点能变化甚微

PREC ZPE Unit


N 2.11698 eV
A 2.1147 eV
H 2.11363 eV

3.3.2 虚频

Wave num
PREC Nth ber Unit Energy Unit
25 6.132037 cm-1 0.760276 meV
N 26 18.62878 cm-1 2.309675 meV
27 65.657693 cm-1 8.140519 meV
25 5.493108 cm-1 0.681059 meV
A 26 10.478293 cm-1 1.299143 meV
27 65.861524 cm-1 8.165791 meV
24 0.552665 cm-1 0.068522 meV
25 16.954329 cm-1 2.10207 meV
H
26 29.95621 cm-1 3.714098 meV
27 68.287802 cm-1 8.466611 meV

PREC同样对消虚频不管用!!!!

3.3.3 时间

Prec Time Unit


N 4298.571 s
A 7596.994 s
H 7962.539 s

通过前面的虚频和零点能,结合此时的时间,我们可以得出结论:
PREC = Normal 完全够用了。

3.4 POTIM 参数
3.4.1 零点能:

POTIM ZPE eV
0.001 2.17125 eV
0.005 2.12616 eV
0.015 2.11769 eV
0.020 2.11698 eV
0.050 2.11671 eV
0.100 2.12481 eV

POTIM太小的时候,对零点能影响很大。(0.001和0.005,0.015对比)

3.4.2虚频

Wave Numbe
POTIM Nth r Unit Energy Unit
25 21.746998 cm-1 2.696285 meV
0.001 26 39.656607 cm-1 4.916794 meV
27 56.54809 cm-1 7.011072 meV
24 0.675194 cm-1 0.083713 meV
25 12.785399 cm-1 1.585188 meV
0.005
26 36.264179 cm-1 4.496187 meV
27 61.287932 cm-1 7.598738 meV
25 5.626635 cm-1 0.697614 meV
0.015 26 23.117605 cm-1 2.866219 meV
27 59.01173 cm-1 7.316525 meV
25 6.132037 cm-1 0.760276 meV
0.020 26 18.62878 cm-1 2.309675 meV
27 65.657693 cm-1 8.140519 meV
24 0.327964 cm-1 0.040662 meV
25 23.575077 cm-1 2.922938 meV
0.050
26 24.337978 cm-1 3.017526 meV
27 95.239085 cm-1 11.80815 meV
23 1.574379 cm-1 0.195198 meV
24 5.865037 cm-1 0.727172 meV
0.100 25 20.89784 cm-1 2.591003 meV
26 45.241296 cm-1 5.609208 meV
27 168.238904 cm-1 20.85897 meV

POTIM 太大的时候,会搞出来超大号的虚频(0.050和0.100)。

3.4.3 时间

POTIM Time Unit


1 1530.591 s
5 2065.911 s
15 3845.977 s
20 4298.571 s
50 4829.897 s
100 5191.23 s
Potim 越小,单个离子步收敛的越快,也就是需要更少的电子步!
综合前面的三个因素:POTIM 太小或者太大都不好, POTIM = 0.015或者0.020 是很好的选择。 0.015是默认值。

3.5 POINTS

1 2 3 分别代表1 1 1, 2 2 2 和 3 3 3的K点

3.5.1 零点能:

KPOINTS ZPE Unit


2.1169
8
1 eV
2.1167
2 8 eV
2.1168
3 9 eV

3.5.2 虚频:

Wave Numbe
Kpoints Nth r Unit Energy Unit
25 6.132037 cm-1 0.76028 meV
1 26 18.62878 cm-1 2.30968 meV
27 65.657693 cm-1 8.14052 meV
25 5.726298 cm-1 0.70997 meV
2 26 19.193163 cm-1 2.37965 meV
27 64.645347 cm-1 8.015 meV
25 4.826986 cm-1 0.59847 meV
3 26 19.138554 cm-1 2.37288 meV
27 64.83042 cm-1 8.03795 meV

3.5.3时间

Kpoints Time Unit


1 4298.571 s
2 8997.709 s
3 13480.847 s

综合前面三点: Gamma点足矣!

4 扩展阅读:

4.1 下载本节的练习,按照本节的顺序操作分析;
4.2 阅读VASP官网中关于原子和分子的例子,去尝试回答里面的问题;
https://cms.mpi.univie.ac.at/wiki/index.php/Atoms_and_Molecules

5 总结:

分析完前面的测试,我们总结一下高效频率计算的关键点:
5.1 IBRION = 5 (告诉VASP我们要算频率)
5.2 POTIM = 0.015
5.3 NFREE = 2
5.4 ENCUT和原来一样
5.5 PREC = Normal
5.6 EDIFF = 1E-5 或者 1E-6
5.7 KPOINTS Gamma点即可。

本节内容太多了,原因在于,这是菜鸟篇的最后一节!!!
大师兄本人亲自做了很多测试,原因只有一个,告诉大家如何把握计算结果与时间的关系。在最短的时间获取最多的有价值的结果,这是计算化学的一个精髓所在。体
现了你对时间和生命的尊重,也体现了你对高效率生活的追求。在菜鸟的时候,可以尽情地去测试。

大师兄之所以用乙醇这个大分子去给大家展示,很多人直接用O2,CO或者水分子的计算作为例子。那样的简单例子不具有很强的代表性,当你把一个复杂的东西搞明白
了,这些小分子的计算,就如同小儿科一般了。

上一篇:Learn VASP The Hard Way (Ex28):进阶前的准备(一) 下一篇:Learn VASP The Hard Way (Ex26):乙醇分子的频率计算(四)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex28):进阶前的准备(一)


2017-07-25

Ex28 进阶前的准备(一)
Linux命令之cd使用心得: 科研狗必备技能

前面27节,我们已经通过气相分子的例子,带领大家顺利度过了菜鸟这一关。如果你掌握了其中的思想,勤加操练,看官网,认真阅读看大师兄推荐的参考书,相信你
的能力足以甩出那些整天只知道搜集VASP学习资料,搜集DFT阅读书籍,而不去行动的人好几条街了。科研忌讳的就是眼高手低,你学到的知识和你下载的书成反比。

在菜鸟篇结束之后,大师兄需要把自己日常工作的一些小技巧展示给大家。一是作为大家摆脱菜鸟身份的奖励,二来为大家的进阶篇做好准备。今天我们主要讲解一下c
d命令。

在linux系统下,cd是必不可少的一个命令: cd 可以实现进入文件夹,返回上一级文件夹等操作等,日常操作中一些简单的做法可以极大的简化我们的工作方式,减轻手
指的负担,有效避免键盘手的形成。大师兄结合自己多年来理论计算化学的操作实践,简单列举了一些组合使用 cd 命令的方法,希望大家可以熟练使用。

注意:本节没有大师兄的截图操作,大家需要认真练习,思考这些命令是怎么运行的。希望大家阅读完本文后,按照内容练习一番,至少要达到高级篇的水平。此外,
本节内容和前面的密切相关,如果前面没有掌握的话,在具体的应用部分中阅读起来会有些吃力。此时,建议从头学习。

1 菜鸟篇: 正常使用 cd 命令

进入文件夹: cd xxx/xxx/xxx
返回上一级: cd ..
返回上二级:cd ../..

2 初出茅庐: 懂得如何快速返回原来的文件夹目录 :

1) : cd -
2) : cd $OLDPWD

两者效果是一样的,区别是前者会在屏幕显示上一级的目录。
具体使用参见本书前面几节关于VASP批量操作的相关内容,尤其是在批量提交任务中的应用。这个命令一定一定一定要掌掌掌掌...握!!!

3 进阶篇: 知道如何结合 cd 与 alias

试想一下,如果你的文件系统下,一层套一层,好东西藏的很深(大师兄内心荡漾着邪恶清脆的笑声),问题是,当你进入这个文件夹,后退时需要不停地敲击: cd ../
../../../../../../.....................

为避免这样的麻烦,可以这么做:

alias ..='cd ../../'


alias ...='cd ../../../'
alias ....='cd ../../../..'

每个点代表向上返1级目录,后面自己补上,大师兄手指头不想继续写了。
注意:
1):不要设置 alias .='cd ../' 因为 . 在linux里面等于 source 命令
2):等号左右没有空格
3):等号右侧命令需要用单引号或者双引号括起来, 最好是用单引号。

不会的请自己查找前面关于alias的介绍章节。

4 高级篇: cd 与 alias、& 、ls的结合

大师兄linux走火入魔,养成了一个进入文件夹就敲击 ls 命令的习惯,但是也舍不得折磨我那双精细的老手,于是,就组合了cd、alias、&、和ls 命令,如下


alias ....='cd ../../../.. && ls'

这样你敲击4个点 .... 返回上面4级目录的时候, 自动显示当前目录下的所有东西,避免再一次敲击ls 命令了

在这里我们用到的是 && 这个命令,它表示如果前面的命令成功了就进行 && 的命令

无聊的师弟师妹们可以这样玩一下: cd ../../../.. && cd -

但是如果 && 前面的命令失败了,直接退出,后面的便不会运行,这种情况下你就需要用到 双排管 这个命令了。

什么是双排管? 答: || (中间没有空格,大师兄给起的名字)

师兄,这玩意怎么使用? 看下面的例子就明白了:

cd ../abc && ls
上一级目录没有abc文件夹,&& 前面命令的失败了,ls 不会运行

cd ../abc || ls
上一级目录没有abc文件夹, || 前面命令的失败了,ls依然会运行

此外,还有单管 | (pipe)这个 命令,后面一般跟着前面一步结束的进一步操作。比如:

1) head –n 10 POSCAR | tail –n 1


2) grep ' without' OUTCAR | tail -n 1
3) grep ' without' OUTCAR | awk '{print $4}'
4) 前面获取零点能的就是一个很好的例子
5) ……(大家自由发挥)
5 cd 私人定制篇:

如果你的一个课题的计算都在一个文件夹里面,可以这么设置,下次敲击命令时直接进入这个文件夹

alias xxx='cd ~/bigbro/a/b/c/d/e/f/g/h/i/k'

藏得这么深(师弟们懂的!),肯定是好东西,不拿出来分享愧对大师兄谆谆教诲!学会了这个命令,就避免了用鼠标乱点进入目录了。还可以避免文件找不到....

大家好好练习这些关于cd的基本命令,等手指头熟悉了cd的味道,大师兄下一节就会继续传授给大家其他的高级操作,进一步减轻手指头的负担。

上一篇:Learn VASP The Hard Way (Ex29):进阶前的准备(二) 下一篇:Learn VASP The Hard Way (Ex27):乙醇分子的频率计算(五)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex29):进阶前的准备(二)


2017-08-02

Ex29 进阶前的准备(二)
自动生成KPOINTS的脚本

前面学习了cd的一些用法,本节我们简单介绍下如何写自动生成KPOINTS文件的脚本。提到脚本,对于做计算的我们并不陌生,提交命令,分析数据,处理结果都会用
到,脚本的存在使得一些繁重的工作极大地得到简化,节约了我们的时间和精力。但脚本怎么写出来的?怎么写脚本?很多人就望而却步了。

1 什么是脚本?

对于脚本的解释,大家可以浏览一下网上的解释,这里大师兄主要说一下自己的理解:
1) 脚本是一个文本文件;
我们可以用文本编辑器打开,查看,和修改。知道了这一点,当你从某处获得一个脚本时,就可以阅读里面的内容了,进而知道该脚本是怎么运行的,有哪些地方值得
注意,为了实现另一个结果我们需要修改什么参数等;
2) 脚本中的内容为程序语言;
脚本中我们需要把我们期望的工作分解并转化为程序语言;所以你的选择有很多,bash, perl, python, java…., C++ 等等;
3) 脚本可以执行;
通过执行脚本,实现我们的目的,这里主要是给大家强调一下,在今后的学习中,仔细观察脚本的执行流程!

2 生成KPOINTS的脚本

这里说的KPOINTS文件指的是自动生成网格的KPOINTS文件,能带计算由于比较特殊,最好手动输入。编辑器用的是vim,还可以使用 notepad++或者其他文本编辑
器进行练习。

2.1 kpoints.sh版本1

A)终端里面输入: vi kpoints.sh
B)在vi 界面里面输入下面几行内容:
输入完毕后保存

C)脚本讲解:
图中的除了第4行,所有命令都可以复制到 Terminal里面自己运行,然后查看结果。

C.1)前面我们学习了如何手动制作KPOINTS文件, 并知道KPOINTS文件每一行所代表的内容。因此该脚本就是帮助我们自动生成每一行的内容。忘记的同学请复习Ex
01的内容。

C.2)第一行: echo K-POINTS > KPOINTS (注意空格)


echo 在bash语言中,代表输出打印的意思,
> 代表把前面的内容保存到后面的KPOINTS文件中; 如果目录下不存在KPOINTS文件,那么会自动创建;
如果存在,KPOINTS文件之前的内容会被 当前命令中 > 前面的内容替换。也就是KPOINTS文件以前的内容被清理掉,并换成了最新的内容。
因此,运行这一行命令,我们会创建一个KPOINTS文件,里面只有一行文字: K-POINTS

我们知道第一行的内容为说明,对计算不会产生影响,你也可以把 K-POINTS换成男朋友或者女朋友的名字….

C.3) 第二行:
继续使用echo命令,将数字 0 保存到KPOINTS文件中。
这里 >> 两个箭头代表:将 >> 前面的内容保存到KPOINTS文件的最后一行。因此, 使用 >> 不会将KPOINTS之前的内容替换掉。
如果目录下没有KPOINTS文件,使用>>也会和>一样,创建一个。

这里的 0 代表自动生成网格:automatic generation scheme

C.4) 第三行:
将 Gamma-centered 输出到KPOINTS的第三行里面,你需要知道G代表的是什么意思。如果你想用Monkhorst-Pack Grids,echo后面怎么写你要知道。
建议一直用Gamma-centered。

C.5) 第4行:
将$1 $2 $3 输出到KPOINTS的第四行里面。
在这里,$1 $2 $3 称为:arguments
代表的是我们运行脚本命令的时候,加入的三个方向上KPOINTS的数目。通过$1 $2 $3 传递给 echo 命令。
如果不理解的话,跳过,等运行命令的时候就明白了。

C.6)第5行:
Kpoints网格在三个方向的移动。一般来说0 0 0 即可。

2.2 脚本运行:

A) 调用bash运行脚本:

图中我们运行脚本的时候命令为:
bash kpoints.sh 3 3 1

bash 意思是我们调用bash来执行该脚本;
kpoints.sh 为脚本的名称, 当然啦,名字可以任意换, .sh也可以不用加;
3 3 1 为脚本后面的参数,第一个3 对应脚本里面的$1 , 第二个3 为 $2, 1 为脚本里面的$3

B)赋予脚本可执行权限:

赋予权限:chmod u+x kpoint.sh


取消权限:chmod u-x kpoint.sh
你会发现之前白色的脚本变成绿色的了,这说明本脚本可以执行了。不容电脑可能显示的颜色不容,有些甚至都不显示,大家不要纠结。但图中直接输入kpoints.sh 3
3 1 的时候失败了,我们必须用./ kpoints.sh 3 3 1 来执行。

怎么样才可以直接使用这个命令呢?
将脚本转移到~/bin 文件夹中即可。

OK,现在大功告成。我们可以根据之前的经验规则设置KPOINTS文件了。

2.3 脚本升级: 版本2

前面的脚本实现了我们所期望的功能,这里我们所说的升级,无非就是在前面的基础上再增添点东西,使得脚本看起来更加高大上,具有可读性或者更加智能化。这里
我们主要介绍一下使用# 注释自己的脚本,使其可以被广大吃瓜群众所理解和接受。

a) 加入第一行,#!称为shebang (就是拼音,没错!)表示执行该脚本时会调用后面的程序;自行百度shebang的用途;
b) 3-5行中用 # 注释下,简单介绍本脚本的功能, 作者,使用方法;
c) 7-11 行用 # 注释下每一行命令中的作用。
d)由于每个人写脚本的方式和风格不同,脚本的注释对于方便大家理解非常有用。有时候即使自己写的脚本,一年半载之后也会忘记里面的内容,加上注释,会让我们
快速掌握脚本里面的内容,在后期的维护或者升级中也发挥着重大的作用。

2.4 其他升级:

除了注释外,可以将脚本写的更加智能化,通过调控 $1 $2 $3 等脚本后面的参数, 加入一些if语句等,来实现KPOINTS文件中所有行均可以通过命令进行修改。比如:k


points.sh G 3 3 1 和 kpoints.sh M 3 3 1 分别生成Gamma centered 和正常的MP 网格。大家可以尝试一下。
3 扩展练习:

3.1)重复本节所有操作,写人生中的第一个脚本;
3.2)下载大师兄推荐的bash,勤加苦练;
3.3)bash在linux下处理日常工作非常有用,但数据分析的时候能力就有所欠缺了,建议大家学习python,参考书: learn python the hard way.

https://learnpythonthehardway.org/ 官网底部会提示让你买书,点击红色箭头所指链接免费阅读。

大师兄QQ群中这两本书已经上传,百度网盘也可以下:载:http://pan.baidu.com/s/1i4JOi1J

3.4)思考脚本中的运行流程以及如何将我们的手动操作转化成脚本语言。

4 总结:

看完本节,你会初步了解脚本是怎么写出来的,它是怎么执行的以及对战胜了对写脚本的恐慌心理。当你获得一个脚本的时候,尝试着打开它,将其中的语言分解成若
干命令执行,查看该脚本的工作流程。勤学苦练,就可以流利地写属于自己的脚本了。

上一篇:Learn VASP The Hard Way (Ex30):进阶前的准备(三) 下一篇:Learn VASP The Hard Way (Ex28):进阶前的准备(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex30):进阶前的准备(三)


2017-08-02

Ex30 进阶前的准备(三)
自动生成POTCAR的脚本

前面我们介绍了KPOINTS的小脚本的写法,本节我们主要讲解一下生成POTCAR的脚本。学习完本节,脚本的神秘色彩基本烟消云散,大家都可以尝试写自己的脚本了
。提前说明三点:
1)Windows用户不要用记事本写脚本;
2)Windows用户写完脚本后,在服务器上先运行: dos2unix XXX (XXX 是你的脚本名)
3)Windows用户,如果计算出错,第一个要排除的是自己提交任务前有没有运行:dos2unix.

1 手动示例:

比如我们POSCAR中包含有Cu C H O 四种种元素,那么我们就需要按照顺序生成一个对应的POTCAR。首先回顾一下前面介绍的POTCAR的制备方法:
1.1)获取这四个元素各自的POTCAR:并命名成POTCAR_Cu,POTCAR_C,POTCAR_H,POTCAR_O
1.2)使用cat 命令将这四个POTCAR合并在一起:
cat POTCAR_Cu POTCAR_C POTCAR_H POTCAR_O > POTCAR

前面我们学过了 > 的使用。分步练习:


第一步将这些元素的POTCAR全部打印出来:
cat POTCAR_Cu POTCAR_C POTCAR_H POTCAR_O
第二步:将打印出来的内容通过 > 保存到最终的POTCAR里面。

我们写脚本的目的: 自动从赝势库中提取所需元素的POTCAR并将它们合并在一起。
图中我们赝势库的目录为:
/home/oldhome/nlopez/PPS/pot_for_vasp5.4/PBE/potpaw_PBE

查看一下我们所感兴趣的这几个元素的目录:

从图中可以看出来,在Cu,C,H,O四个目录下均有一个对应的POTCAR

所以我们可以使用命令:(不将这几个POTCAR先保存到当前目录下,直接调用赝势库中的POTCAR)

cat /home/oldhome/nlopez/PPS/pot_for_vasp5.4/PBE/potpaw_PBE/Cu/POTCAR
/home/oldhome/nlopez/PPS/pot_for_vasp5.4/PBE/potpaw_PBE/C/POTCAR
/home/oldhome/nlopez/PPS/pot_for_vasp5.4/PBE/potpaw_PBE/H/POTCAR
/home/oldhome/nlopez/PPS/pot_for_vasp5.4/PBE/potpaw_PBE/O/POTCAR
> POTCAR

注意:不同的课题组,这四个目录下的文件格式可能会不同:
格式1:如图中的例子,这里直接是POTCAR,
格式2:有些是POTCAR.gz 格式的,此时我们有两个选择:
1)先通过该命令解压缩:gunzip POTCAR.gz ,获得对应的POTCAR
2)不解压缩,只提取POTCAR.gz里面的内容,命令为: gunzip –c POTCAR.gz
格式3:有些是POTCAR.Z 格式的
1)先解压缩命令:gunzip POTCAR.z 获得对应的POTCAR
2)不解压缩,只提取POTCAR.z的内容,命令: zcat POTCAR.z
3)不解压缩,还可以使用前面的命令: gunzip –c POTCAR. z

前面的zcat 和 gunzip –c 命令和 cat 是等效的。(记住这一点,后面用得着)


建议大家:要么全部都采用压缩的格式,要么都统一用POTCAR,不要两者混着。统一起来是为了方便处理。此外,前面命令中的路径重复了好多次,又长又麻烦,我
们需要简化一下。

2 脚本预览:
首先看下自动生成POTCAR的脚本,大家尽量先不看下面的解释,自己理解一下脚本的整个框架和运行的流程;

#!/usr/bin/env bash
# Create a GGA_PAW POTCAR file byconcatenation of POTCAR files
# BigBro 2017-07-31 TGN
# To Use it: potcar.sh Cu C H O

# Define local potpaw_GGA pseudopotentialrepository:


repo="/home/oldhome/nlopez/PPS/pot_for_vasp5.4/PBE/potpaw_PBE"

# Check if older version of POTCAR ispresent


if [ -f POTCAR ] ; then
mv -f POTCAR old-POTCAR
echo " ** Warning: old POTCAR file found and renamed to 'old-POTCAR'."
fi

# Main loop - concatenate the appropriatePOTCARs (or archives)


for i in $*
do
if test -f $repo/$i/POTCAR ; then
cat $repo/$i/POTCAR>> POTCAR
elif test -f $repo/$i/POTCAR.Z ; then
zcat $repo/$i/POTCAR.Z >> POTCAR
elif test -f $repo/$i/POTCAR.gz ; then
gunzip -c $repo/$i/POTCAR.gz >> POTCAR
else
echo " ** Warning: No suitable POTCAR for element '$i' found!! Skipped thiselement."
fi
done

讲解,这个脚本里面:
1)首先我们先设定赝势库的目录;
repo="/home/oldhome/nlopez/PPS/pot_for_vasp5.4/PBE/potpaw_PBE"
等号前后不能有空格!!!

2)然后我们检查一下当前目录下是否存在POTCAR,如果存在的话,将其重命名为:
POTCAR-old, 并输出警告信息。

这里我们学到的是 if 句型:if [ ] ; then; fi


[] 中间是if判断的条件,如果成立,则继续执行then后面的动作。
if [ -f POTCAR ]; then 意思是如果存在POTCAR这个文件,那么…
注意:
a)[ ] 和里面的内容 –f POTCAR 要通过空格分开。所以:
if [-f POTCAR ] ([ 和-f之间没有空格)
if [ -f POTCAR] ( POTCAR 和] 之间没有空格)
if [-f POTCAR] (-f,POTCAR和 [] 之间都没有空格)
这三种写法都是错误的;if [ -f POTCAR ] 是正确的
b)then 后面如果另起一行的话,分号 (;) 可加可不加;
c) then 后面的内容如果和then 在同一行,必须加上分号(;) ,前后有无空格均可,建议加上,这样语言会很清晰;
c) then 后面的命令执行完毕后,要加上 fi 结束。同理,如果fi 另起一行,则前面可以不加;如果fi 和 then 后面执行的命令在一行,前面需要加上分号(;)。

3)生成新的POTCAR文件;

这里我们用到的是一个for循环:
a) for i in $*
这一行的意思是,对于命令后面的所有参数(arguments),前面一节我们已经学过了$1 $2 ... 的含义,这里用的$* 可以让我们在命令后面加任意数目的参数;
因为另起了一行,后面加不加分号(;)不重要。
b) do 执行的意思,
c)do后面有个if 语句,如果目录下面是POTCAR的话,那么使用cat 命令将所有$*对应的POTCAR输出到最新的POTCAR中,注意,这里我们用到的是>>; 因为for循
环是对于后面的参数挨个执行的。
d) 有两个elif,判断目录下的另外两个POTCAR文件的格式,如果是POTCAR.Z 文件的话,则使用zcat 将其输出到最新的POTCAR;如果是POTCAR.gz 文件的话,则
使用gunzip –c 命令。
e)else 指的是除了前面三种以外的情况,如果POTCAR,POTCAR.Z或者POTCAR.gz都不存在,那么使用echo命令,输出警告,提醒用户检查。
f)使用fi 结束if 语句,
g)使用 done 结束 for 循环。

3 运行脚本:

3.1)赋予脚本可执行权限,然后将其转移到主目录下的bin文件夹中。
chmod u+x potcar.sh
mv potcar.sh ~/bin
3.2)图中1 指的是生成对应的Cu C H O 的POTCAR文件
3.3)图中2 指的是如果当前目录下存在POTCAR,脚本会给出警告,将其重命名为old-POTCAR,然后生成新的POTCAR文件;
3.4)图中3 指的是如果我们元素不存在或者输入的时候出错,给出警告。

4 脚本分析:

4.1)生成一些特殊的POTCAR文件:

我们知道,每一个元素存在好几个不同的POTCAR,如图:

当我们需要使用 Cu_pv, C_s 和H1.5对应的POTCAR时,我们需要这样执行命令:

4.2) 因此,如果我们使用脚本的时候直接输入元素符号,读取的是与该元素符号相对应文件下的POTCAR。

5 读取POSCAR,自动生成POTCAR (防止出错的一个秘诀)

在我们的计算中,可以通过读取POSCAR中的元素信息,生成对应的POTCAR文件,这样可以避免POSCAR中元素和POTCAR中不一致的情况。那么我们需要怎么做呢

5.1 首先我们要获取POSCAR中的元素信息: 查看一下POSCAR文件:

我们发现元素信息在第6行,因此可以这样提取:
5.2 使用我们刚刚写出来的脚本,通过使用$()调用前面命令的结果: (将获取的元素信息作为脚本命令的参数)

大功告成!!!!

5.3 不想每次输入这么长的命令:可以将其写进 ~/.bashrc文件中:

alias pos2pot="potcar.sh $(head -n 6 POSCAR | tail -n 1)"

5.4 看完上面的部分,相信大家已经可以掌握很多内容了,额外福利,大师兄本人并没有使用head -n 6 POSCAR | tail -n 1 来获取POSCAR中的元素信息。而是使用


的sed命令:

6 扩展练习:

6.1)手动将这个脚本打一遍,理解里面的内容,如果出错了,对比我的脚本,进行改正,直至可以正确运行为止;
6.2)去官网查看POTCAR相关的内容,了解每一个元素不同的POTCAR之间的区别,例如:Cu 和 Cu_pv
6.3) 复习alias,学习本文第5节的方法,思考一下,如何通过操控脚本,避免计算中的一些失误,有了自己的想法后,通过脚本付诸实践。

7 总结:

写到这里,相信大家对于Linux系统下的一些基本操作已经熟练掌握了,脚本的怎么写,怎么去运行,心里也有了一个大致的了解,至少不会感觉写脚本是多么牛逼的工
作了。这些内容都是我们保证计算准确,高效的很重要的一个因素。希望大家可以熟练掌握,最关键的是,要硬着头皮去练习,脚本看起来简单,等你写的时候就会出
现各种各样的错误,只有不断练习,才能写出漂亮的脚本,提高自己的工作效率。

脚本已经上传至QQ群文件,也可百度网盘下载:链接:http://pan.baidu.com/s/1geC0IsF 密码:r4om
上一篇:Learn VASP The Hard Way (Ex31):计算遇到错误怎么办? 下一篇:Learn VASP The Hard Way (Ex29):进阶前的准备(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex31):计算遇到错误怎么办?


2017-08-30

Ex31 VASP计算遇到错误怎么办?

搞科研,总会遇到各种各样的问题需要解决,同样VASP计算也不例外,本文大师兄列举了一些解决问题的步骤和方法,只提供大体的方向,没有具体
事例,大家结合自己的计算研究亲自去实践体会,写本文的目的是告诉大家:自己亲自解决问题才是你快速成长的加速器。

第1阶段:靠自己(最重要的!)

1.1 凭自己的经验解决;
1.2 按照VASP的输出错误,进行修改解决;
1.3 查找VASP官网的相关参数;
1.4 平时多阅读VASP手册;
1.5 不懂的参数不要往INCAR里面放。

第2阶段:主动搜索(也是靠自己)
2.1 将错误信息复制到百度里面搜多:一般会得到一堆论坛或者博客的相关指导说明,按照里面的内容修改自己的输入文件,然后解决问题;

2.2 将错误信息复制到Google里面搜索,一般会得到VASP官网的论坛一节其他国外网址的相关错误示例,这时候,就要耐着性子把其中的内容读完
,然后修改输入文件进行解决;一般来说,进行到这一步,至少60% 左右的问题可以解决!!!

第3阶段:靠师兄师姐,师弟师妹,老板

如果时间过去2天,还没有解决。可以将自己的错误信息以及尝试的方法总结,
分享给组里的师兄弟,师姐妹们,寻求求助办法。如果还未解决,就要报告给自己的老师,求助指导!!!此时,解决的成功率应该能达到70-100%

大师兄的建议:
自己主动去解决是关键,这需要培养主动解决问题的能力。老板是辅助的策略,除了指导课题的方向,在学生遇到问题时能出马解决,这也是他或者
她为什么是老板的原因之一。

第 4阶段( I):论坛求助

如果老板不给力(很多做实验的老板要求学生去做计算,大师兄本人极度鄙视这样的老板,完全就是对学生的不负责任!),可以去尝试论坛求助:
这里大师行推荐:

4.1 新手,学习Learn Vasp The Hard Way 这本书www.bigbrosci.com/LVASPTHW 按照大师兄写的内容,从头认真学习VASP(本书只作为参考,


关键是去浏览官网!!!);如果在学习中遇到问题,也可以发送邮件给大师兄解决:bigbro@bigbrosci.com

4.2 将问题复制到百度里面,你就会发现这个问题会在很多论坛里面出现。
不过论坛求助有一点需要注意:发帖的人水平参差不齐,要抱着怀疑的态度去接受所有人的答复(记住,是所有人!!! ),别人的回复只能当作参
考。
第 4阶段( II) QQ群求助:

这里大师兄列举了三个管理员认真负责的QQ群:没有列举到的公众号留言,下次加上。

遇见大师兄:

第一性原理之家
物理化学材料互助群

进行到这一步,基本上95%的问题可以解决了。
第 5阶段: VASP官方论坛发帖

以上都解决不了的话(极少的情况了),可以去VASP官网发帖求助,等待VASP的其他用户或者管理员解决。不过需要注册!

-----------分割线 ----------

6 QQ群求助的细节:

6.1 尊重别人的时间

A)QQ群求助的时候,提供的信息要全面:
1) 算的什么体系
2) 算的什么内容
3) INCAR长什么样子
4) 错误信息
5) KPOINTS以及POSCAR

很多人把图片一截,或者拿手机拍张照片就直接在群里求助了,这是对大家时间的极度不尊重。而且被应助的概率很低!!!你不尊重大家的时间,
大家也不会浪费时间在你身上。

B)可以将计算结果压缩,上传到QQ群文件进行求助(但不要把CHG,CHGCAR和WAVECAR等压缩到里面,因为它们太大,大家都懒得去下载!如
果你上传了一个100M的求助文件,基本没人帮你!)

C)不要多群求助

有很多人加了很多群,把遇到的问题在所有的群里面都发了一遍!这样的行为简直就是在浪费大家的宝贵时间,本人见到这种情况,一般都不会去帮
助。

6.2 把你得小心眼收起来!!!

A) 除了涉密的一些计算,其他情况没有必要给大家隐瞒什么,大家也不会坏到去抢你的课题去算!心胸狭隘的人也不配得到帮助!
B) 要虚心接受别人的批评,也就是心眼要大。大师兄也遇到很多奇葩,在群里求助,没人回答,就直接退群了。被别人批评了几句,也退群了。只能
说这些没心胸的人也不值得去帮助。

6.3 互相帮助

别人遇到的问题,如果你知道怎么解决,不要有所隐瞒。请认真帮助解决,用俺奶奶经常挂在嘴边的那句话:将心比心。这样大家的计算水平才可以
得以普遍地提高。

请认真按照这个流程来解决问题,不要一出现问题,脑子不假思索就去论坛或者QQ群求助!!! 请记住,你的问题也代表了你的老板的水平。一般来说
,不负责任的老板带出来的学生总会有各种各样的低级问题。

以上仅代表本人观点,不喜勿喷!祝大家踏踏实实做计算,多发实实在在的文章!
上一篇:Learn VASP The Hard Way (Ex32): Bulk的单点计算 下一篇:Learn VASP The Hard Way (Ex30):进阶前的准备(三)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex32): Bulk的单点计算


中级篇:
2017-08-30

这篇是重点。

Ex32 Bulk的单点计算
Fe 单胞

我们学习完了气相分子的相关计算后,下一步就是块体计算了,这也是VASP的强项所在,但块体的计算与气体分子的非常类似,如果前面掌握好了,后面的计算对你来说也就是轻而易举的事
情了。

这一节我们开始中级篇的学习,首先是Bulk的单点计算(以Fe的单胞为例)。需要大家初步了解Material Studio和VESTA这两款软件,MS下载链接:http://pan.baidu.com/s/1i5or3ZR 对
于这款软件怎么安装,大师兄就不指导了,网上全是相关的资料。本节默认大家已经安装好MS软件,并且可以打开界面。VESTA下载官网:http://jp-minerals.org/vesta/en/download.html
, 下载后解压,直接打开就可以用了。(只去官网下载,网上乱七八糟的版本不要去管!!!)

注意:很多人问VESTA的使用说明,官网有,网上也有很多相关资料!这个问题需要你自己去主动解决,请不要在群里再问了!

1 模型

1.1 课题的第一个难点

模型的选择,计算的准确性,以及结果分析的合理性,这是一个课题是否成功的三个最主要的因素。Bulk的计算很简单,难点在于Bulk模型的获取。这也是一个课题最难的部分之一。很多人在
计算的时候,模型不对,基本上这个课题就被一棍子打死了。这里大师兄提醒大家的是:模型,模型,模型!!!在进入计算的时候,一定要确保模型的合理性与正确性。这是计算中的第一个
坎!

1.2 MS搭建Fe单胞的模型

A) 左上角file—> newproject,输入Fe,点OK; 对对,这里VASP就能找到Fe,Cu的单胞。


B) file—> import—> Structures—>metals—>pure-metals—>找到Fe,选择打开即可;
C) file—>export—>选择cif格式 (此时导出的是Fe的单胞,conventional cell)
1.3 MS导出Fe原胞的模型:
A)和B)步骤与前面一样,
C) Build —> Symmetry—> 选择primitive cell
D) file—>export—>选择cif格式 (此时导出的是Fe的原胞,primitive cell)

1.4 VESTA 转换成VASP的格式


a) 打开VESTA软件,file—>open—>选择之前保存的cif文件
b) file—> export data —>保存类型选择VASP
c) 将保存的文件重新命名成POSCAR即可

1.5 需要掌握的知识:
a) 晶体学相关的基本知识,什么是primitivecell,什么是conventional cell?
b) MS和VESTA的基本操作

1.6 需要注意的部分(其他转换方法):
a)可以使用openbabel转换:http://openbabel.org/wiki/Main_Page
b)可以使用MS生成的.cell文件转化,可以根据POSCAR的格式手动复制,也可以通过脚本,(QQ群中有物理老师的脚本,大家自行下载)
c)或者通过其他脚本进行转化,例如VTST中的cif2pos.pl http://theoryNaN.utexas.edu/vtsttools/scripts.html

2 VASP计算文件的准备

2.1 准备好INCAR文件:
A)Fe带有磁性,ISPIN和MAGMOM需要设置
B)Fe是金属, ISMEAR=1, SIGMA=0.1
C)ENCUT=450, 统一起来,后面可能还需要计算其他元素,450是一个很安全的选择。
D)EDIFF控制电子步收敛的精度

2.2 准备KPOINTS文件:(以晶胞为例)
a=b=c=2.8664 Å
根据前面的经验,我们可以设置11x11x11的KPOINTS(Gamma)

Learn VASP The Hard Way (Ex19)


2.3 准备好与POSCAR对应的POTCAR文件

见前面Ex 30 讲的相关脚本:Learn VASP The Hard Way (Ex30)

2.4 准备提交任务的脚本

这个每个课题组不一样,就不介绍了。不会的话,找老板或者组里的师兄师姐帮忙。

3 提交任务

3.1 提交任务之前,再次检查一遍我们的所有输入文件,确保无误;
3.2 提交任务进行计算
3.3 大师兄的计算已经压缩放到百度网盘了,大家计算完毕后,与大师兄的进行对比。链接:http://pan.baidu.com/s/1eRQHaX8

4 扩展练习

4.1 分析Fe体相的磁矩,并查找实验值;
4.2 复习之前O2分子的相关计算,分析实验结果;
4.3 怎么在OUTCAR中查看磁矩等相关信息? (VASP 哪一个参数?)
4.4 复习晶体学的相关知识
4.5 学会MS,VESTA的基本练习
4.6 掌握2种以上通过MS获取POSCAR的方法。

5 总结

本节的计算我们需要掌握一定的晶体学基础知识,基本的MS和VESTA操作,计算过程和O2分子的例子极为相似,大家在学习的时候,可以将这两部分相互结合。本节我们采用的Fe单胞的例子
,计算本身不难。难点在于自己课题中模型的选取。

上一篇:Learn VASP The Hard Way (Ex33): 晶格参数的确定-Birch-Murnaghan状态 下一篇:Learn VASP The Hard Way (Ex31):计算遇到错误怎么办?

方程-1 版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号


本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex33): 晶格参数的确定-Birch-Murnaghan状态方程-1


2017-08-30

Ex33 晶格参数的确定
Birch-Murnaghan状态方程-1

O2分子的计算中,我们知道了,单纯从数据库中获取的结构,只能作为一个合理的初始值,与计算所得到的理论还有一定的差距,因此我们需要对该结构进行优化才可以获取稳定的晶格参数
信息。有两个方法可以实现:1 Birch-Murnaghan状态方程拟合, 2 VASP计算中调节ISIF参数。下面两节我们先讨论一下第一个方法:BM方程拟合。

1 什么是Birch-Murnaghan方程?

BM方程为块体材料的体积随着外压变化的状态方程。大师兄参考了维基百科的说明,大家下载维基百科导出的PDF文件参考。在学习下面的内容前,请务必阅读这个文件,了解什么是Birch-
Murnaghan方程。QQ群文件或者百度网盘下载:http://pan.baidu.com/s/1bUSYbs
2 如何通过BM方程获取晶格参数?

首先,我们将BM方程中的体积转化为晶格参数(a)的函数:

其中E(a)和E0是晶格参数为a和a0时bulk的能量,B0,B0’和V0这些见BM方程的维基百科介绍。

令(1/a)2 = x,上图中的BM方程可以写成:

y(x) = c0 + c1x + c2x2+c3x3 的形式,E0, B0,B0’和V0等写进c0,c1,c2,和c3这些常数里面,它们的具体形式此时并不重要,我们需要做的就是拟合这样的曲线去寻找x的最小值。对y(x)这个方程


求导数,dy(x)/dx = 0 的时候,便可以获取能量最低时的x值了,再由(1/a)2 = x 获得晶格参数。

dy(x)/dx = c1 + 2c2x + 3c3x2

令:dy(x)/dx = 0,即 c1 + 2c2x+3c3x2 = 0

这是一个典型的二项式方程,求解很容易。
x有两个值,其中负值被舍弃掉。
最终:

3 获取拟合的数据:

经过前面的分析,我们需要的就是获得的c1,c2 和c3值。可以设置一系列不同的晶格常数进行计算,得到对应的能量,然后将这些数据带入下面的方程中:y(x) = c0 + c1x + c2x2+c3x3 进行拟


合。本节我们主要讨论一些如何进行该计算。看到这里,你第一反应是我们之前测试K点或者SIGMA值时的那些linux批量操作。是的,这里我们也需要进行一个批量操作的计算。

两个坐标有什么不一
3.1 分数坐标 样吗?

如果我们改变了晶格常数,那么Fe原子的坐标也要发生相应的变化。此时,用分数坐标更加方便,VESTA中在cif转VASP格式的时候,会提醒你选择哪个形式的坐标,我们选择分数坐标:

POSCAR如下图:

注意:

如果前面练习中,导出的为笛卡尔坐标形式的,你有两个选择:
A)重新按照前面的步骤,用VESTA导出为分数坐标形式;
B)将单点计算的结果直接复制过来(cp CONTCAR POSCAR),因为VASP的输出坐标为分数坐标形式,单点计算中,晶胞原子都没有动,CONTCAR可以直接使用。复制过来的POSCAR如
下:
3.2 获得分数坐标的POSCAR后,我们可以批量对晶格常数a,b,c进行批量操作,也可以对缩放系数进行批量操作,而原子的坐标不用去管。

3.3 本练习对缩放系数进行批量操作
我们取10个点,将1.0 替换成0.95, 0.96, 0.97, 0.98, 0.99, 1.01, 1.02, 1.03, 1.04, 1.05。此时,晶格常数为:缩放系数*2.8664.(记住,下一节用得到)
a) 准备缩放系数为1.0 的计算文件夹,命名为1.00,里面包含我们前面一节已经讲过的Bulk单点计算相关文件;
b) for i in 0.95 0.96 0.97 0.98 0.99 1.01 1.02 1.03 1.04 1.05; do cp 1.00 $i ; sed -i "2s/1.0/$i/g" $i/POSCAR ; done
注意:这里大师兄在自己电脑的.bashrc文件里面设置了: alias cp=‘cp -r’
思考: sed 命令后面用的是双引号(为什么?)
c) 注意:批量操作的命令见Learn VASP The Hard Way 前面几节中常见的批量操作;网址: http://www.bigbrosci.com/LVASPTHW

d.) 批量提交命令: for i in *; do cd $i; qsub sub4; cd $OLDPWD; done


其中,qsub sub4 是大师兄提交单个任务的命令。

3.4 数据提取:

for i in *; do echo -e $i "\t" $(grep ' without' $i/OUTCAR | tail -n 1| awk '{print $7}'); done > data

3.5 以上计算文件以及相关的命令已经上传到QQ群文件和百度网盘了,大家对比下计算结果。 http://pan.baidu.com/s/1dEJr9rb

4 扩展练习

4.1 完成本练习中的相关操作,并学习VASP官网批量操作的例子:
https://cms.mpi.univie.ac.at/wiki/index.php/Fcc_Si
注意:
FCC Si的例子用的原胞,并且该网址最后图中曲线不是二次方程!!! 不能用二次方程拟合。
4.2 探索学习曲线拟合的方法;
4.3 学习并了解BM方程以及如何拟合,如何通过BM方程获取稳定的晶格参数;
4.4 对晶格参数进行批量操作,并计算。

5 总结

本节从BM方程开始,简单介绍了什么是BM方程,如何通过BM方程获取稳定晶胞对应的晶格参数,最后,又复习了一下本书前面几节的批量操作,下一节我们讲解一下如何通过python脚本
对BM方程拟合。
上一篇:Learn VASP The Hard Way (Ex34):Birch-Murnaghan方程拟合脚本-1-脚本浏 下一篇:Learn VASP The Hard Way (Ex32): Bulk的单点计算

览篇 版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex34):Birch-Murnaghan方程拟合脚本-1-脚本浏览篇


2017-08-30

Ex34 Birch-Murnaghan方程拟合脚本-1
脚本浏览篇

前面一节,我们通过批量操作,获得了拟合BM方程的数据。这一节,我们通过这些数据,进行拟合并获取Fe单胞的晶格参数。 本节的脚本和读取的数据文件,可在QQ群文件和百度网盘中下
载,见底部。

1 脚本使用方法:

在介绍脚本之前,先介绍一下脚本的使用方法:
首先:将前面一节得到的 data 文件和脚本放在一个目录下
其次:进入该目录,运行脚本的命令为(见下图):
python bm0.py
注意: bm0.py 为脚本名,你也可以随意写成 birch, birch.py等。

通过脚本,我们可以得到Fe单胞的晶格参数为: 2.8332 Å

2 脚本的内容-1:

我们看一下bm0.py 这个脚本的内容:只有几行而已。大家先自己根据前面介绍的通过BM方程获得晶格参数的原理,阅读以下该脚本,看不懂不要紧,多看几遍。大体上了解是怎么回事。
3 脚本的内容-2:

前面的脚本没有任何的说明,阅读起来很是费力,大师兄把注释加上去了,并命名为: bm.py。大家再阅读一遍,看看有没有新的收获。

图中的链接为:(左下角查看原文)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html

该脚本运行效果如下图:
脚本的工作原理下一节介绍,本节中大家只看脚本,分析里面的内容,自己结合前面一节琢磨是怎么回事。脚本和读取的data文件可以在QQ群中下载,也可以通过百度网盘,链接: http://p
an.baidu.com/s/1o8cCdBG

4 扩展练习

4.1 查找文献,获取Fe的晶格常数的实验数据,与脚本获取的结果进行对比;
4.2 Windows用户使用notepad++或者其他文本编辑软件,自己将bm0.py脚本重新写一遍,然后运行,如果出错了,请与图中对比并修改,直至完美匹配为止!!!
4.3 Linux用户,使用vim或者其他文本编辑软件,进行4.2中的操作;
4.4 结合Ex33的介绍,初步了解本脚本的运行原理。

上一篇:Learn VASP The Hard Way (Ex35): Birch-Murnaghan方程拟合脚本-2-脚本 下一篇:Learn VASP The Hard Way (Ex33): 晶格参数的确定-Birch-Murnaghan状态

精解篇 版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号 方程-1


本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex35): Birch-Murnaghan方程拟合脚本-2-脚本精解篇


2017-08-30

Ex35 Birch-Murnaghan方程拟合脚本-2
脚本精解篇

阅读本文前,为避免看不懂,请先浏览前面两节的内容!

Ex34 Birch-Murnaghan方程拟合脚本-1

http://www.bigbrosci.com/newsitem/278011645

Ex33 晶格参数的确定

http://www.bigbrosci.com/newsitem/278011633

通过上一节(Ex34)的脚本,我们可以拟合出稳定晶体结构的晶格参数,但是,这个脚本是怎么运行的呢?大家在浏览之后,有没有什么疑问?本节
我们重点介绍一下:这个脚本的运行原理。

1 数据

首先我们看下读取的data文件:
A) 共两列,两列之间用tab分开;
B) 第一列为缩放系数,第二列为对应结构的能量。
C) 在本文例子中,晶格参数等于= 缩放系数 * 2.8664 Å (记住这个公式)

2 脚本内容: 浏览一遍即可,详解在下面:

详解:

2.1 1-15行:准备部分
A) 1-4 行为脚本的一些基本说明,为养成一个良好的写脚本习惯,以及避免后期不必要的麻烦,第一行必须要放进去。如果你用bash写的话,把python替换为bash即可,
其他部分不用动,例如: #!/usr/bin/env bash。
B)2-3行注释,解释了一下脚本干什么用的,谁写的,怎么用。
C) 6-7 行调用python库中的math 和 numpy 模块,见下面两个链接:

https://docs.python.org/2/library/math.html
http://www.numpy.org/

D)9-15行:通过使用 print 命令输出一个警告,因为本文用的是缩放系数,很多人测试的时候保持缩放系数不变,直接采用不同的晶格参数。

2.2 读取data信息,准备拟合

A) 16-18行为脚本的注释说明,
B) 第20行中,我们使用 np.loadtxt读取data文件的内容,
注意:
1) data 用单引号括起来;
2) usecols=(0,1) 代表我们要读取第一列和第二列的内容。Python中的第一个用0表示,所以这里我们用的(0,1)来表示读取第1和第2列的内容;
3) delimiter='\t' ,意思是第一列和第二列之间用tab('\t' )分开;
4) unpack=True 意思是把读取的数据生成一个数列,并分配给a 和 E,具体见链接:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html

通过第20行,我们可以获得两个数列,第一个是 a 包含了data文件中的缩放系数, 第二个是E,包含了data文件中的能量信息


C) 第22-28行,把缩放系数转换为晶格常数(a*2.8664),然后平方取倒数(**(-2)),用来得到我们前面讲解的x。这是因为:当我们把BM方程写成:y(x) = c0 + c1x+
c2x2+c3x3 的形式时,前提是令 (1/a)2 = x。不懂的具体见Ex33中的内容。

http://www.bigbrosci.com/newsitem/278011633

截止到现在,我们有了三个数列: a, E 和 x

2.3 第29-40行:拟合多项式方程:
A) 最小二乘法拟合y(x) = c0 + c1x+ c2x2+c3x3这个方程,得到常数系列c,这里我们调用了numpy 的polyfit这个模块来进行拟合。具体见:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html

B) 第31行:本脚本的核心: p = np.polyfit(x, E, 3)

1) np.polyfit 读取x和 E的数值,拟合一个y(x) = c0 + c1x+ c2x2+c3x3的方程,

注意: 这里拟合的时候,用的数值是 x和 E, (1/a)2 = x, 所以,在进行拟合之前,务必确保你已经得到了正确的 x数列。具体根据 data文件的内


容进行修改设置 第 24行的公式 。

2) 括号中的3代表的是多项式方程中最大的那个次数。
扩展: 如果你想拟合一个 y = c4x4+ …的方程,把3改成4 即可。
3)拟合的结果输出到数列 p 中,数列p中共有4个常数(p[0], p[1],p[2],p[3]),按照次数从高到底的顺序排列,对应着我们Ex33中的(c3,c2, c1, 和 c0 )
4) 33-36行, 我们将p 中的数值分别分配给c3,c2, c1, 和 c0。

2.4 38-40行,获取晶格参数:

到目前位置,多项式方程的常数我们已经获得了,下面就是求解问题了。

A) 第42行为下图中公式的代码描述,获取方程的解x,因为前面我们已经有了一个x变量了,这里方程的解用x1表示,

B) 第43行获取晶格常数,公式为: (1/a)2= x
C) 第45行,输出晶格常数的数值。

3 扩展练习:

3.1 根据解释,重新浏览脚本,知道每一行代表的含义。
3.2 本脚本使用的时候,需要自己根据data数列中的内容,设置更改一下获取 x 数列的公式(第 24行 );
3.3 阅读Ex32-本节的所有内容,整个流程不要再存在什么疑问。
4 总结

本节我们详细讲解了BM方程拟合脚本,相信大家应该了解的差不多了,拟合的办法有很多,但BM方程只有一个。请务必掌握至少一个拟合的方法。此外,本人马上就
要毕业答辩了,后面更新会有所放缓,努力争取保证每周一篇的速度。如果你有什么科研心得,欢迎分享。

上一篇:Learn VASP The Hard Way (Ex36):直接优化晶格常数 下一篇:Learn VASP The Hard Way (Ex34):Birch-Murnaghan方程拟合脚本-1-脚本浏
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号 览篇
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex36):直接优化晶格常数


2017-09-05

Ex36 直接优化晶格常数
ISIF = 3

前面一节我们学习了如何通过提交一系列不同晶格常数的单点计算以及拟合BM方程获取稳定结构的方法,此外,我们还学习了BM方程拟合的一个python脚本以及分析了脚本的工作流程。

师兄,算个晶格常数这也太麻烦了吧?有没有简单点的,一步到位的方法?
有!!!前面我们提到说可以通过两个方法: BM方程拟合是一个,现在大家已经掌握了。今天我们学习第二个方法。

ISIF = 3
ENCUT = XXX

1 ISIF 参数

在学习ISIF = 3 前,我们先总结一下,之前不论是单点计算,结构优化,还是频率分析,我们都没有讲过这个参数。因此使用的是默认值。

查找VASP官网说明书,默认值是ISIF= 2 。是的,前面我们都是用的 ISIF = 2 。(废话,等于白说!)

你还会发现有一堆其他的ISIF参数,从1 - 7,看的眼花缭乱。
坚持一下,你会发现它们有各自的特点,原子坐标是否变化,晶胞形状是否改变,以及晶胞体系是够变化。不同的参数大家根据自己研究体系的性质进行选取。
本文主要介绍ISIF = 3 时对晶胞的优化。其他的取值(比如加压计算等)为避免对大家造成误解,在这里不做进一步地说明。因为本人计算的时候,只用到过2 和 3 的情况。
ISIF = 3 的时候,晶胞中原子的坐标,晶胞形状,以及体系都随着优化的过程发生变化。 回到Fe单胞的计算,我们先看一下INCAR的输入,然后再详细解释其中的内容。

对比下,前面单点计算的INCAR,你会发现有几个不同:
1) ENCUT = 600 设置的比之前的450大。
2) EDIFFG = -0.015 结构优化的收敛标准
3) NSW = 100 结构优化,肯定不是一步!
4) ISIF = 3 (废话,讲的就是ISF =3 ,肯定要加上)
5) 此外, ISMEAR,SIGMA, ISPIN以及 MAGMOM大家自己主动回顾一下

PS: 很多人在单点计算的时候,除了NSW = 0, 还画蛇添足地设置了ISIF = 0。虽然对计算结果没有影响,但我还是想问一句:大哥,脑子去哪里了?单点计算就是原子不动弹,设置NSW =


0 或者 1, 或者 IBRION = -1,其他的按照之前的即可。

POSCAR,KPOINTS,POTCAR直接将前面 1.00 计算目录下的复制过来。

2 ENCUT 取值

师兄,Fe的ENCUT 默认值是:ENMAX = 267.882 eV, 前面单点计算设置的 450 eV。这里为什么设置成600 eV ?


如果你仔细看VASP官网的说明书,在底部有这么一段话:
红色的链接如下:
http://cms.mpi.univie.ac.at/vasp/vasp/Volume_vs_energy_volume_relaxations_Pulay_Stress.html (左下角原文链接)

最后一句,如果计算时体积发生了变化,我们需要增加ENCUT的值,比如说:
ENCUT = 1.3 * max(ENMAX) , max(ENMAX) 的意思是,如果有N个元素,取最大元素的ENMAX值。

这么做的原因是为了尽可能地消除 Pulay stress 对计算的影响。那么什么是Pulay Stress 呢?

3 Pulay Stress

通过查看红色的链接内容,字面上的理解就是,当晶胞体积发生变化时,由于计算时的平面波基组不全(设置的ENCUT不够大)使得计算时的收敛不是绝对的,进而导致应力张量不对,最终导
致体系的形状,体积以及能量不正确。(懂这个的公众号留言解释下,或者QQ群里交流)

维基百科的描述如下:

(下载链接:http://pan.baidu.com/s/1hsmYvDM)

A plane wave basis set is created for thehexagonal lattice (left), using the reciprocal lattice vectors inside the redcircle. Then the lattice relaxes into a cubic symmetry (right). Kee
ping the redcircle basis constant results in lattice vectors taken from an ellipsoidinstead of a spherical area (compare to the blue circle).

深层次的俺也不懂,但是PulayStess 有2个办法可以减小:

A) 体积不变,采用一系列的晶格常数计算,然后拟合得到准确的晶格常数;(你已经知道怎么去做了,这么做是为了避免计算时晶格体积发生变化!);
Note!!!

1) 在LVASPTHW的拟合流程中,拟合出来的是BM方程, BM方程的最高次数是3,也就是x的三次方。此时:x = (1/a2) ,具体见Ex32-35的详细说明。

2) 如果直接用晶格常数去拟合,则是6次方的关系。

3) 如果你用体积去拟合BM方程的话,最高次数是2:

B) 既然是因为ENCUT不够导致的,那么我就使劲增加ENCUT来消除(上图中unless后面的那句)。借用维基百科的一句话:Pulay stress can be reduced by increasing the energy cutoff.


所以,当有人用ISIF= 3计算,而不去设置ENCUT的时候,尽情地去嘲笑他傻X吧!!!感觉不过瘾,还可以继续吓唬他说后面的计算也有问题。

4 ENCUT 取值

官网说设置到130% * max(ENMAX),一般来说就可以了。但很多人还是不放心,那我们就继续疯狂一些,设置到600 或者700。本人一般习惯用600,老板偏好用700 eV.

师兄,前面你不是讲到增加ENCUT会增加计算量么?而且要保持计算中使用同一个计算的参数?

是的,这些你说的都是正确的。但是,我们使用ISIF = 3 的目的是获取稳定的晶格常数,但为了避免Pulay stress导致的误差,就必须要增加ENCUT(No Choice!!!)。一旦我们计算完成


晶格常数的计算后,可以在此结果基础上,统一使用其他的ENCUT值进行计算。也就是只有确定晶格常数的这一步是个例外,其他情况还是用原来的值。

举个不恰当的例子,这就好比当初你追女朋友的时候,为讨人家欢心,疯狂地买买买,什么要求都答应。等追到手了,结婚了,新鲜劲过去了,就原形毕露,不再这么大手大脚地去疯狂了。
讲到这里,使用ISIF = 3 时,你脑子第一反应就是疯狂地增加ENCUT,600不够,上700, 700感觉不够,上800,在计算承受的范围之内,越大越好! 因此ISIF = 3 和 ENCUT两个参数必须同
时出现。

5 计算结果

设置完后,提交任务:计算出来的Fe晶格参数为: 2.8318 Å
对比下前面拟合出来的结果: 2.8332 Å,两者相差:
0.0014 / 2.8332 = 0.019 %
这么点误差,完全可以忽略掉了。
如果不放心,将ISIF =3 的结果,使用前面的设置,算个单点,能量为:

ISIF = 3 2.8318 Å -16.47181669 eV


BM拟合 2.8332 Å -16.47179683 eV

两者能量相差甚微,完全可以忽略。

6 总结:

学习完本节,怎么计算晶格常数的两个方法你应该都掌握了,希望大家能学到的东西有以下几个:
1 什么是BM方程?
2 BM方程拟合的方法(最小二乘法,脚本以及运行);
3 BM方程获取晶格常数的原理;
4 ISIF = 3 和 ENCUT 必须同时设置;
5 Pulay Stress 是什么,如何避免;
以及怎么追女朋友?

需要复习的东西:

6 (ISPIN,MAGMOM):什么时候加,怎么设置;
7 (ISMEAR,SIMGA):什么体系用什么值,怎么设置;
8 (IBRION,POTIM,NSW):根据初始结构好坏进行设置;
9 (EDIFF,EDIFFG):怎么决定收敛的;
10 KPOINTS的取值:经验方法(k * a), 以及脚本;
11 POTCAR的生成: 手动方法以及脚本。

上一篇:Learn VASP The Hard Way (Ex37):DOS计算(一) 下一篇:Learn VASP The Hard Way (Ex35): Birch-Murnaghan方程拟合脚本-2-脚本
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号 精解篇
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex37):DOS计算(一)


2017-09-05

Ex-37 DOS计算(一)

使用VASP计算,很多时候都逃不掉DOS,能带计算的相关问题,尤其是对于计算材料的童鞋们,更是家常便饭一般。群里很多人,很多新手们都时常在讨论DOS的计算。这里
我们通过VASP官网的说明,解释一下算DOS的具体步骤。前面我们学会了如何拟合或者优化稳定的晶胞结构。在此基础上,我们可以计算一下相关的DOS信息。

1 KPOINTS:

1.1 K点数目

与结构优化相比,算DOS的时候,需要用到更多的K点数目,这是因为K点越多,画出来的DOS图质量越高。

引用官网的话:
A high quality DOS requires usually very fine k-meshes.

1.2 K点数目的选取

K点数目越多越好,我们该如何设置K点数目呢?

还记的前面我们讲到的K点选择的经验规则吗?那一个规则可以认为是我们平时计算时K点选择的标配。对于DOS计算,我们就需要把配置提高一个档次了。

一般来说,K * a = 45 左右之间完全可以满足你的要求,大伙可以根据这个经验来选择K点。
2 ISMEAR的选择:

2.1 看官网的话:

For the calculation of the total energy in bulk materials we recommend thetetrahedron method with Blöchl corrections (ISMEAR=-5). This method also giv
esa smooth nice electronic density of states (DOS).

也就是说 ISMEAR = -5 的时候(Blöchl修正的四面体方法),我们可以得到一个非常平滑的DOS图。很多人问怎么才能获得平滑的DOS图,这就是答案!!ISMEAR = -5 并且


使用较多的K点。

2.2 注意部分

1)不能使用ISMEAR= -5 的情况:

如果你的模型很大,只用了一个gamma点,或者K点的数目小于等于3 的时候,使用ISMEAR = -5 会导致计算出错。(the tetrahedron method is not applicable, if less t


han three k-points are used.)很多人只用了gamma点,然后用修正的四面体方法计算能带,最后到群里咨询出错的原因!!!

2)对于金属体系来说,算DOS的时候,结构保持不动(这是关键),可以放心使用ISMEAR= -5。但是,结构优化的时候不能使用ISMEAR= -5(注意:是优化结构的时候不能用!),这


是因为四面体方法不能很好地处理费米能级处的电子占据情况,导致算出来的力会有一定百分比的误差。参考:
https://cms.mpi.univie.ac.at/vasp/vasp/Partial_occupancies_different_methods.html

3)半导体和绝缘体的体系可以尽情使用ISMEAR= -5,但绝对不能在这两个体系中使用 ISMEAR>0。等于0 则可以。

4)注意:四面体方法(ISMEAR = -5)不适合计算能带(对所有的体系来说的)。多谢wuli8老师帮忙完善!

5)使用ISMEAR= -5 的时候,SIGMA的取值没有影响。

6)总结:算DOS,只要K点不少于3,其他情况都用ISMEAR=-5。

2.3 不能使用ISMEAR = -5 的情况怎么办?

两个解决办法:

1) 既然K点不够,那么我就增加K点,然后再使用ISMEAR= -5 (简单粗暴,强烈推荐使用);

2)服务器不给力,不能增加K点的时候,怎么办?又分两种情况:(少许有些绕弯)
2.1)半导体和绝缘体,使用ISMEAR= 0 (Gaussian Smearing,高斯展宽,后面统一简称GS方法) ;(再次注意:此时绝对不能大于0!!!)
2.2)金属,可以使用ISMEAR = 0,也可以使用Methfessel-Paxton (MP)方法:后面统一简称:MP方法。 ISMEAR = 1, 2….N,一般来说,ISMEAR =0和 1 基本就可以了。(注
意:金属可以等于0,也可大于0)

2.4 SIGMA

既然选择了ISMEAR,就逃不开SIGMA的取值。

MP方法(ISMEAR=1..N):
SIGMA取值太大,计算出来的能量可能不正确;SIGMA取值越小,计算越精确,需要的时间也就越多。http://cms.mpi.univie.ac.at/vasp/guide/node124.html
SIGMA的取值和KPOINTS密切相关,Kpoints确定之后,使用多大的SIGMA值,大家最好测试一下。原则如下:

SIGMA取值在保证OUTCAR中' entropy T*S' 这项的能量平均到每个原子上小于 1 meV的前提下:尽可能地大。这样做可以保证准确度的同时加快收敛速度。

记住: VASP学习最快的途径就是不停地看官网,然后亲自上手去测试,测试,测试!并观察分析结果。

高斯展宽,Gaussian Smearing (ISMEAR = 0):

1) 对于大部分的体系都能得到理想的结果;
2) SIGMA取值比较大的时候会得到与MP方法相近的误差;但是误差多大,GS方法不可以得到,而MP方法可以。从这一点上来说,MP要比GS好些;
3) 从经验上来说:对于金属体系,使用MP方法(ISMEAR=1..N)时,SIGMA= 0.10 足够了,官网给的参考值是0.20。
4) 使用GS方法的时候(ISMEAR=0),SIGMA的数值要测试下,保证'entropy T*S'这一项平均到每个原子上小于0.001 eV也就是1meV。5)不想测试,对于金属体系:SIGMA=
0.05是一个很安全的选择。
对于半导体和绝缘体,SIGMA取值要小,SIGMA = 0.01 – 0.05 之间也是很安全的。

3 测试:
3.1 体系选取
以下是本人的一个例子: 84个Ni原子,17个C,20个H,6个O,共127个原子。(只是一个例子,不具有代表性,大家对于自己的体系,要亲自测试一番。)

KPOINTS的选择如下:

GS (ISMEAR=0)和 MP(ISMEAR=1)方法均选择了SIGMA=0.03 和0.10 两个参数。四个测试文件,命名为: gs-0.03,gs-0.10, mp-0.03,和 mp-0.10

3.2 结果分析:

图中列出来的是单点计算的能量。

3.2.1 GS方法分析:
GS中 0.03 和 0.10 比较:
1) Without entropy 后面的能量差别很大, sigma ->0 后面的能量差别很小;这也是大师兄为什么推荐使用sigma 后面能量的原因。
2)使用ISMEAR = 0.03,最后电子步的结果:

entropy T*S 后面的能量为:-0.078, 平均到每个原子上为:


-0.078/127 = 0.000614 eV/atom = 0.614 meV/atom < 1 meV/atom。
说明取值没啥问题。

使用ISMEAR= 0.10 的结果:


-0.9234/127 = 0.00727 eV/atom =7.27 meV/atom > 1meV/atom。
此时,我们的取值就有问题了。说明是不可靠的,需要用一个更小的sigma值。

如果使用ISMEAR=0,会有两个能量,without entropy 和 sigma –> 0。


SIGMA越小,二者之间的的差别越小!一般来说,不同的SIGMA值,Sigma –> 0 的结果差别不大,而withoutentropy后面的能量则差别有时候会很大。在你的计算中,只能用
一个能量,不可以混用。建议使用Sigma –> 0后面的能量,且体系中所有的计算都用这个。如果使用了without entropy 后面的能量,那么所有的计算都用这个能量。

对于A和B之间的能量差:ΔE = EA-EB,使用without entropy 后面的能量计算出来的ΔE 和使用 sigma –> 0 的出来的ΔE,结果是一样的,差别很小。

3.2.2 MP方法的结果分析:
SIGMA = 0.03 的结果

SIGMA = 0.10 的结果

分析方式如GS的测试。
使用小的SIGMA值,同样可以得到更小的 entropy T*S的数值。也就是计算的越精确。 without entropy和sigma->0 后的能量差也越小。注意,当ISMEAR = 0.10 的时
候,entropy T*S 值为0.0168 eV,比之前高斯展宽时ISMEAR=0.10的数值要小很多。这表明对于当前测试的体系,SIGMA= 0.10 的时候,使用MP比GS方法的效果要好。当
SIGMA数值很小的时候(SIGMA= 0.03),两者不相上下。

3.2.3小结一下:
SIMGA小的时候,ISMEAR = 0 和 ISMEAR = 1 效果基本一样;
SIMGA数值大的时候,ISMEAR= 1 效果更好。
所以,如果你首先设置一个很小的SIMGA数值,不用太担心ISMEAR的选取。但反过来,如果你首先设置了ISMEAR这一项,就需要考虑SIGMA的大小了。懒得考虑就设置一
个比较小的SIGMA值,比如0.05,即可。

3.3 ISMEAR 和SIGMA对计算时间的影响。

官网里面说了 SIGMA的选择对计算的收敛会产生影响。我们分析下测试所花费的时间。

前面均是单点计算,计算所需的总时间用grep LOOP+ OUTCAR查询


如果你想查询一个电子步需要的时间用: grep LOOP+ OUTCAR (去掉+号)。
Grep RMM OSZICAR | tail –n 1 获取计算了多少电子步。

计算时间不是看Elapsed后面的那项吗?

是的,Elapsed的时间是总的计算时间。对于我们这个单点计算,LOOP+后面的能量和 Elapsed 的能量差别不大。我们这里只考虑SCF收敛过程中所花费的时间。

从前面的计算分析看,平均到每一个电子步上面,使用同一个ISMEAR的时候,小的SIGMA值对应的单个电子步时间略大一些。使用ISMEAR=0时,两个SIGMA值对应的单电
子步时间差别更大。
但是官网说,if σ is too small the convergence speed with the number of k-points will deteriorate. 这里我们并没有明显观测到,反而在使用ISMEAR= 0 + SIGMA
= 0.03 的时候,收敛步数减少了一些,从而略微节省了时间。

但是官网说,if σ is too small the convergence speed with the number of k-points will deteriorate.这里我们并没有明显观测到,反而在使用ISMEAR=0 和 SIGMA =
0.03 的时候,收敛步数减少了一些,从而略微节省了时间。原因在于 too small 是多么地小,什么程度才算too small,官网没有明确说清楚。为此,专门设置了一下 SIGMA =
0.001来测试一番。
从这里可以看出来,SIGMA= 0.001的时候,计算时间明显增加了不少,为6112.84 s。而SIGMA = 0.1 的时候,同样计算了 93步,但花费的时间为:5913.63 s。平均到每一个
电子步上,也有所增加。

但是,对于大伙来说,SIGMA=0.01就已经很小了,too small 的时候并不常见。所以,不想测试的话,ISMEAR的选择可以在0.1-0.01之间。

注意:通过SIGMA的测试,我们可以发现,它对计算时间的影响完全没有KPOINTS,ENCUT等的影响大。大家在选择的时候,不要太过焦虑和纠结。大师兄建议大家最好还是
要测试一下,选择一个合适的SIGMA数值。原因如下:

ISMEAR = 0 的时候, SIGMA = 0.03 和 0.10 ,单个电子步的计算时间为:


64.337 和 64.222s。 假设我们优化一个结构花了200个离子步,每个离子步有20个电子步,总共需要 200*20 = 40000个电子步。与0.03相比,使用0.10节省的时间为: 4000
0*(64.337-64.222)/3600= 1.3 h。 也就是一个任务省出来 1.3小时的时间。当你有10个任务的时候,就能省出来13个小时的时间.....

4 扩展练习:

4.1 阅读VASP官网关于ISMEAR和SIGMA的所有说明:
4.2 下载VASP的pdf说明书,搜索书中所有的ISMEAR和SIGMA关键词,阅读所有相关的内容;
4.3 思考SMEAR方法的意义?SIGMA的意义?
4.4 查看VASP说明书,查阅相关文献,了解MP和GS方法
4.5 分析下为什么算DOS的时候,要算两步: selfconsistent 和 none-selfconsistent calculations?

5 总结:

看完本节:你应该知道计算DOS的时候,KPOINTS设置的要大一些。

ISMEAR要用-5。 Kpoints因计算硬件限制不能设置的很大,数目小于3的时候,对于金属,非金属体系均可以使用ISMEAR=0,SIGMA的数值需要测试一下,一般来说在0.01-0
.05之间足够了。

此外,金属体系还可以用ISMEAR=1..N,官网建议SIGMA为0.20,太小的SIGMA值对收敛会产生影响。使用0.01-0.10的数值都是很安全的选择。具体对收敛时间的影响大
家要测试一下。本节的测试例子中,只有SIGMA=0.001的时候少许增加了计算时间,且SIGMA的影响不如KPOINTS和ENCUT等的影响作用大。

非DOS计算的时候,对于金属来说ISMEAR不能等于 -5,优先使用ISMEAR= 1。非金属来说(半导体和绝缘体),不能 > 0 。对于所有的体系, ISMEAR= 0 则是一个很安全的


选择,但SIGMA的数值要测试一下。说了这么多废话,还是官网简单明了:

For further considerations on the choice for the smearing method see sections 9.4,10.6. To summarize, use the following guidelines:
· For semiconductors or insulators use always tetrahedron method (ISMEAR=-5), if the cell is too large (or if you use only 1 or two k-points) use IS
MEAR=0.
· For relaxations in metals always use ISMEAR=1 and an appropriated SIGMA value (the entropy term should less than 1 meV per atom). Mind: Av
oid to use ISMEAR>0 for semiconductors and insulators, it might result in problems.
For metals a sensible value is usually SIGMA= 0.2 (that's the value we use for most transition metal surfaces).
· For the DOS and very accurate total energy calculations (no relaxation in metals) use the tetrahedron method (ISMEAR=-5).
上一篇:Learn VASP The Hard Way (Ex38):DOS计算(二) 下一篇:Learn VASP The Hard Way (Ex36):直接优化晶格常数
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex38):DOS计算(二)


2017-09-15

Ex-38 DOS 计算(二)

前面一节讲解了DOS中K点和ISMEAR的使用,有群友提出了宝贵的意见。

1 ISMEAR = -5 时的错误

1.1 K 点数目少于4

实际计算过程中,如果K点数目少于4,便会出错,而不是官网说的3。大师兄也测试了一下,如下图:

VERY BAD NEWS! internal error in subroutineIBZKPT:

Tetrahedron method fails for NKPT<4. NKPT= 1

感谢QQ群的群友(恒驰一强 )提出的这个问题,并发送了一段很有参考价值的文字:
1.2 K点数目大于 4:

此外,微信群的群友(Cu--Ni ):也提出了另外一个常见的错误,并提供了错误的信息和解决办法。使用ISMEAR=-5也就是修正的四面体方法的时候
,即使K点够了,有时也会出现下面的错误。

WARNING: DENTET:can't reach specified precision

Number of Electronsis NELECT =

官方的解释:

http://cms.mpi.univie.ac.at/vasp-forum/viewtopic.php?t=416
http://www.error.wiki/The_old_and_the_new_charge_density_differ

出现此警告 (DENTET)的原因是因为无法通过 tetrahedron方法得到足够精确的费米能级。也就是将态密度积分到费米面的电子数和体系的价电子数目不一致。

遇到这种情况:
1 换个ISMEAR方法;
2 如果想继续用四面体方法的话:
2.1 增加K点数目,并且用gamma-centered K点;
2.2 增加NEDOS。
从网上的回帖和群友的回馈,增加 NEDOS并没什么卵用!!!
所以留给你的有2个选择:换ISMEAR或者换KPOINTS

群友还发现:在保证K点数目大于4的时候,有时候减少K点数目或者增加K点数目都可以解决这个问题。如果你的服务器还算可以,建议增加K点数目
,毕竟和K点数目越多,DOS的质量越高。

2.1 继续回答前面一节的问题: DOS计算为什么要算两步?


注意:这里说的算两步指的是结构优化完成之后所进行的两步操作。

答:可以一步直接算!

官网说了,算DOS有2个方法,一个是直接进行selfconsistent计算(大家常说的自洽或者静态计算。)然后处理DOSCAR和vasprun.xml文件即可,如
图:

2.2 那为什么还要算 2步呢?

我们看一下这么做的前提:

1) 由于高质量的DOS需要精细的K点,如果我们设置的K点很多,就会造成计算上的负担,前面我们讲过K点与计算时间的关系;
2) 另外一个原因就设计到能带的计算了,这里我们摘抄一下网上的解释: 由于在能带计算时 k点是一些在倒空间高对称线上的点 ,不能进行自洽
计算。
参考网址:http://blog.sciencenet.cn/blog-567091-675253.html 也就是计算能带的时候,自洽计算是必须的一步;
3) 即使增加K点的数目,电荷密度和有效势能的收敛依然很快,也就是K点的变化对电荷密度的收敛影响不大。

2.3 分析:
能带计算我们暂不考虑,综合下1 和 3 ,在结构优化完成之后 ,我们可以这么算DOS:
第一步,用小的K点自洽,产生电子密度(CHGCAR文件);
第二步,增加K点,并保持前面一步的电子密度不变(ICHARG=11)。

这样做就避免了直接用高K点网格所导致的计算负担。对于DOS计算的两个步骤(自洽和非自洽两步),归根结底是节约时间的问题。因此,对于DOS
来说,算2步并不是必须的!!!如果够土够豪,直接用高密度的K点,一步计算,没毛病!但是对于能带计算,则必须算 2步。

此外,VASP的说明书已经很古老了,以现在的计算能力,直接使用大K点一步计算,一般来说都可以承受的。所以,当你知道了为什么要算2步的时
候,再去浏览网上的相关经验帖子,就很容易知道是怎么回事了。

2.4 LDOS 和 PDOS


参考:http://blog.sciencenet.cn/blog-316926-493110.html
LORBIT = 10 把态密度分解到每个原子以及原子的spd轨道上面,称为为局域态密度,Local DOS (LDOS)
LORBIT =11 在10的基础上,还进一步分解到px,py,pz等轨道上,称为投影态密度(Projected DOS)或者分波态密度(Partial DOS),即PDOS。
所以LORBIT = 11可以提供我们更多的信息。
对于DOS图怎么分析?从那几个方面去分析,这边暂时不再介绍,等其他大师兄们详细解答。

3 那么 WAVECAR读不读呢?

大师兄的观点是:有则读,无则不读。

3.1 对于WAVECAR的读取,我们需要了解ISTART这个参数:

如果前面计算中保存了WAVECAR,VASP默认是读取的。
如果没有WAVECAR,即使你设置了ISTART=1或者2,虽然VASP找不到可以读取的WAVECAR,也不会报错,而是继续算。

3.2 怎么控制WAVECAR的输出呢?

通过设置LWAVE这个参数

注意:图中是VASP的默认值。如果平时没有保存WAVECAR,CHGCAR的习惯,那么在计算能带,或者通过2步计算DOS的时候,不要忘记LCHARG=.TRU
E.

3.3 读取WAVECAR可以极大地减少自洽的时间,但是VASP的WAVECAR非常大,上百M或者几G都是很常见的。一不留神存储空间就被占满了,所
以一般人在计算的时候都不会去保存WAVECAR (LWAVE=.FALSE.)

3.4 如果前面计算步骤中保存了WAVCAR,那么后面DOS计算的时候(1步计算或者2步计算均可),都可以读取,这会加快计算速度。

4 扩展阅读:

4.1 阅读DOS和能带计算的VASP官方手册;
4.2 了解DOSCAR的内容以及各行各列所代表的含义;
4.3 去网上查找一些DOS和能带计算的经验总结;
4.4 文章如有错误,恳请指正。

5 总结:
结构优化完毕后;

5.1: 一步计算 DOS必须的参数:


1 ISMEAR = -5
2 LORBIT = 11
3 高密度的K点

5.2 两步计算 DOS必须的参数:


第一步:
ISMEAR = -5
LCHARG = .TRUE.
稍微低密度的K点

第二步:
ISMEAR = -5
ICHARG = 11
LORBIT = 11
高密度的K点

再次感谢文中两位群友提出的宝贵意见!

上一篇:Learn VASP The Hard Way (Ex39):DOS计算(三) 下一篇:Learn VASP The Hard Way (Ex37):DOS计算(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex39):DOS计算(三)


2017-09-15

Ex39: DOS 计算(三)


使用p4vasp获取DOS数据

本节我们通过一个实例,讲解一下DOS数据的处理。

1 计算实例:

计算的体系是一个Ru的单胞,含有2个Ru原子。结构优化完毕后:进行以下操作。

1.1 cp CONTCAR POSCAR


1.2 INCAR的设置(一步计算):
IBRION = -1
NSW = 0
ISMEAR = -5
LORBIT = 11
1.3 KPOINTS 采用: 21 21 21 (gamma centered:Ru为六方堆积结构!!!)
1.4 提交任务等待结束, 该计算的所有文件可以通过:
1)QQ群文件下载,
2) 百度网盘下载:http://pan.baidu.com/s/1kVebDWz

2 DOS可视化:
2.1 打开p4vasp
2.2 点击左侧open,导入vasprun.xml文件;
注意: 前面的2步,linux系统下面直接输入命令 :
p4v & 或者 p4v vasprun.xml 即可。
2.3 查看DOS:Electronic –> DOS+bands
效果如下如:

2.4 获取d轨道的DOS:

这里我们取d band作为例子,大家根据自己的需要选择:

Electronic –> Local DOS+bands control

点击后如下图:
注意:
1) 这里我们填的是Ru,表示选择所有的Ru原子。具体到大家自己的计算中,换成自己感兴趣的原子即可,怎么选择,我们前面已经讲到过了。(通
过左侧的show按钮,以及鼠标和空格选择)
2) 这里我们没有考虑自旋,如果你的体系有自旋,可以选择up,down或者both。up和down的数据导出来的时候通过一个空行分割(后面会讲到)

3)选择感兴趣的轨道:
如果计算中你设置的LORBIT=10,点击 dxy的时候,则其他的d轨道也会同时被选中,
如果你设置的LORBIT=11,点击dxy时,则仅仅选择dxy,其他的d轨道不会选中。如下图:

如果看不明白:
a)VASP官网查看 LORBIT = 10 和11 的含义;
b)亲自动手操作一下就明白了。

选择完毕后,点击 Add New line,效果如下:


图中增加了一条红色的曲线,为Ru的d轨道的DOS图, 如果你选择了s,点击Add New line,就会增加另外一条曲线。不想要某个曲线了,可以点击r
emove line,大家自己随意操作,直至熟练为止!!

3 后处理:
3.1 导出数据:
p4vasp导出数据通过中间的一个按钮: (注意,这里不通过左上角的File按钮!),如下图:点击 Graph –> Export

弹出的窗口中,选择保存的目录和数据的文件名称
注意:
1)choose 选择保存的目录;
2)我们选择的D盘下的VASP目录;
3)填上保存数据的文件名:
a)文件名处 .dat 记得写上,要不然后面可能会导不出数据!
b)为了保证导出数据,Export 多点几遍!!!
c)去导出的目录里面查看一下,如有了数据的文件名,说明保存成功,没有的话,继续点Export.

图中说明:导出数据成功。
d)为了避免浪费时间,一定要保存成功后再关闭窗口,否则你还要重复一遍前面的步骤。
4) 保存成功后,点击OK,关闭窗口。

3.2 查看数据:(Notepad++直接打开,无视.dat 尾缀!)

问题1: 为什么在301行后面有一个空行? (重点是301)


1) 这是因为DOS计算的点VASP默认是301个,该数目由NEDOS这个参数来确定。NEDOS决定了DOS曲线中间隔的点数,如果你想要自己的DOS曲线更
加平滑,可以设置一个较大的NEDOS数值,比如:NEDOS=9999
2) 如果你设置了NEDOS = 500, 那么会在500行以后出现一个空行。

问题2:为什么会有一个空行???(一定要搞明白 !!!)

我们看一下前面DOS的图:

图中有2个DOS曲线,黑色的为空行前面的部分,红色为后面的部分。

同样,如果DOS图中有N个曲线,则导出的数据中会有N-1个空行将它们分开。
N个曲线的横坐标坐标(也就是能量)是完全一样的。知道了这一点,你就知道了自己想要的数据在哪里了!!!

此外,如果有磁性的话,你要注意了,up和down也是通过空行分开的。

3.3 作图:

有了数据之后,就可以随心所欲地作图了。将数据导入excel或者origin作图,也可以使用其他小脚本,程序。这里我们使用Excel简单说下:

左侧为空行前面的数据,Ru总的DOS, DOS曲线1 (黑色的那个)


右侧为空行后面的数据,Ru d轨道的DOS, DOS曲线2(红色的那个)

作图如下: 跟p4vasp的结果一样

大师兄赶着去睡觉了,图像就不美化了。如果童鞋们做出来漂亮的图,恳请发给大师兄以供后面更新用。关键是有了数据,并且知道数据里面空行前
后代表的内容。

4 扩展练习:

4.1 下载本节的练习,可以在自己的服务器上提交,也可以直接使用结果;
4.2 通过p4vasp读取vasprun.xml文件,熟练进行本节的所有操作;
4.3 不要偷懒!!!

5 总结:

本节主要手把手交给大家如何用p4vasp这个软件查看DOS计算的结果。希望大家掌握这几点:1 会熟练使用改软件进行本节的操作;2 了解导出数据的


格式(空行是怎么分割不同曲线的);3 知道LORBIT = 10 和 11 的区别,以及在可视化操作中的不同;4 最关键的:要会分析DOS!!!

上一篇:Learn VASP The Hard Way (Ex40):DOS计算(四) 下一篇:Learn VASP The Hard Way (Ex38):DOS计算(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex40):DOS计算(四)


2017-09-16

Ex-DOS4 DOS计算(四)
DOS积分的原理

积分公式相信大学的时候,大家已经掌握了,现在还有可能忘记了。不过没关系,虽然本节将积分,高等数学里面的暂时还用不到。对于DOS图来说,通过求积分可以

得到相应的电子数。积分也就是求DOS曲线下的面积。但DOS图并不能通过一个函数的积分来获得,因为所对应的区域毫无规则可言。那么我们该怎么样积分呢?

1 积分的原理

积分的原理就是把区域分成N个小块,计算每一块的面积,然后求和。如下图:

大师兄.....

好吧,言归正传,大师兄亲自画了一幅图,讲解积分的原理,如下:
1)将每一个小区间近似看成一个小的梯形,
2) 梯形的上底和下底为:y2 和y1,高为:x2-x1。
3, 4) 也可以看成一个高为:(y1+y2)/2, 底为x2-x1 的长方形。
5)面积为两者的乘积:ΔA =(x2-x1)* (y1+y2)/2。
6)将所有的小区间面积求和便得到了曲线所覆盖的面积,也就得到了我们所想要的电子数:A = sum(ΔA)

注意:
1)电子数的积分区间是从负无穷到费米能级;
2)p4vasp的图中的0点就是费米能级,已经扣除过了。
3)科学网的一个参考链接:http://blog.sciencenet.cn/blog-567091-736149.html
注意: 图中的DOS,如果你计算了,发现和大师兄的不一样,不用担心,大师兄本人把这个例子再运行了一遍,跟上面的图也不一样。(原因正在调查中)

2 d-band center 的公式

在这里:
ε为前面的我们提到的x, nd(ε)为y。在DOS图中,ε为能量,nd(ε)为电子的密度。
注意: 积分区间是从 负无穷 到 正无穷
参考书籍: Fundamental Concepts in Heterogeneous Catalysis,Jens K. Nørskov, Felix Studt, Frank Abild-Pedersen, Thomas Bligaard, John Wiley & Sons, Inc.
QQ群文件的Books文件夹中下载

百度网盘下载链接: http://pan.baidu.com/s/1bWS2Gu
d 带穿过了费米能级,说明Ru是金属。(废话,等于白说!)
d带的积分从最左面到最右面。

关于d band 的介绍:知乎有个专栏,有兴趣的可以浏览一下:

https://zhuanlan.zhihu.com/p/26230183

3 Excel手动求积分:

对应的公式都写在第二行里面了,excel中计算完第一个数值,直接选中然后往下拽就可以得到后面的数据了。计算文件以及Excel表格已经上传到QQ群和百度网盘,大家

可以下载仔细观看练习,掌握该技能。
计算下载链接:http://pan.baidu.com/s/1kVqWFQn

网盘下载链接: http://pan.baidu.com/s/1pKW1WV5

Step1: p4vasp 的 d band 数据!

Step2:A,B两列的乘积,也就是能量和密度的乘积:对应d band center公式中的分子 :


Step3:
1)A4-A3: 小区间的能量间隔,也就是 dε,或者 dx,Δx, x2-x1;
2)B4+B3: 小区间的两个起点和终点的高度:也就是对应的小区间两端的能量密度:y2+y1
3)C4+C3:小区间两端能量和密度乘积的加和: x1*y1 + x2*y2
4)Step4:求小区间的面积:
D4*E4*0.5:(x2-x1) * (y2+y1)/2
D4*F4*0.5: (x2-x1) * (x1*y1 + x2*y2)/2
5)Step5: 将所有小区间的面积求和:
电子数:sum( (x2-x1) * (y2+y1)/2 ) ,从G4到G137(G137对应的是费米能级的那个点!!!)求和。

再次强调:电子数目是从负无穷积分到费米能级!
d带中心公式中的分子:从H4到H303求和
d带中心公式中的分母:和电子数的积分一样,但积分区间不同,这里从G4到G303求加和。
再次强调:d带中心积分区间,按照公式,从负无穷积分到正无穷!

d带中心公式中的分子:从H4到H303求和
d带中心公式中的分母:和电子数的积分一样,但积分区间不同,这里从G4到G303求加和。

以上将公式分开写,是为了方便大家理解,实际操作中,直接使用导出来的数据,将所有的公式合并在一起就可以了。

4 扩展练习:

4.1 亲自上手操作,重现本节的结果;
4.2 尝试使用其他软件,方法求积分;
4.3 有好程序的,好脚本的分享给大家。

5 总结:

学习完本节,大家对DOS积分的数学知识应该可以掌握了,后面不管用什么软件或者脚本,都是将这个积分的原理写成机器语言来执行。知道了原理和通过excel自己操

作一遍之后,基本上DOS积分的东西就懂了。下一节,QQ群里的小书童给大家演示一下Origin的积分操作。

上一篇:Learn VASP The Hard Way (Ex41):DOS计算(五) 下一篇:Learn VASP The Hard Way (Ex39):DOS计算(三)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex41):DOS计算(五)


2017-09-25

Ex-41 DOS 计算(五)


通过Origin求DOS积分

前面我们讲解了手动求积分的原理,本节由QQ群中的小书童给大家演示一遍Origin求积分的操作,加深一下对积分原理的印象,也借此机会掌握另一
项Origin的技能。Origin的 .opj文件和Excel数据已经打包上传到QQ群中,也可以百度网盘下载:
http://pan.baidu.com/s/1bpvmXY3

1 求 d带中心

1.1 复制粘贴能量、态密度、能量*态密度这三列数据到Origin中,数据见前一节练习:
下面我们取了dband 的一小部分区间作为示例进行讲解,大家学习完之后自己主动练习,获取最终的d band center.

1.2 选中数据并作图:
plot --> Line --> Line

1.3 求积分,先选中一条曲线,右键,Ungroup(将曲线从组中分离,便于选择)。
1.4 打开积分对话框:

1.5 再选择一条曲线进行积分,下图选择的是黑线。
d band center 的积分区间为整个d带:即从负无穷到正无穷。
本例我们用区间 [-6, 2]作为例子!(仅作为例子而已,正确的区间是从负无穷到正无穷)

点击OK,截图中的area就是我们要的积分,

这一面积对应下图公式中的分母部分
1.6 同理,选中另一条红线(能量和密度乘积),进行积分计算(上图中的分子部分)

结果如下:

最终,我们计算的d带区间[-6,2]的中心果为:-34.035/ 17.428 =-1.953

求电子数目

电子数目的积分是从负无穷到费米能级。本例中是从 到 (费米能级)进行积分, 选择黑线,重复前面的操作:


计算结果如下,电子数为13.00

3 扩展练习:

3.1 熟练Geeeet本节Origin求积分的技巧;
3.2 阅读前面几节DOS计算的练习章节;熟练掌握DOS的提取,导出,作图和积分;
3.3 d band center 是对整个区间求积分,电子数目的积分区间是从负无穷到费米能级。

4 总结:

截止到本节,DOS的计算就暂时告一段落了,实际计算中,DOS的分析远远不止我们讲述的这么简单,而且网上DOS分析的脚本很多。大师兄了解到
的有VTST 的DOS处理脚本和vaspkit等,大家可以尝试练习使用下。如果你在科研工作中对DOS分析有自己的心得,DOS分析脚本的使用经验等,欢
迎补充,分享给大家。

上一篇:Learn VASP The Hard Way (Ex42):Slab 模型 下一篇:Learn VASP The Hard Way (Ex40):DOS计算(四)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex42):Slab 模型


2017-10-01

Ex42 Slab 模型

前面我们学习了Bulk计算的一些基本的计算,拟合以及优化晶格常数,DOS计算。在材料计算方面,还有能带,声子谱的计算等等,但由于本人方向
不在这一块(主要是做表面反应机理研究的),就不能详细给大家解释了。如果有同学在这方面很擅长,可以把自己的计算心得写进本书,将不胜感
激。

说到表面反应的机理研究,我们首先要做的就是搭建模型。先理一下思路:
1) 计算Bulk的结构,获取稳定的晶格常数
2) 在此基础上,搭建Slab 模型。

1 什么是 Slab 模型?


这个问题,我们看一下参考书的第四章:Density Functional Theory: A Practical Introduction
(注意:本书有中文版的,本人强烈不建议!请静下心来看原版的,也恳请不要在群里求中文的pdf版本!)

多相催化中,反应发生在催化剂表面上,也就是气(液)固两相的交界处。为了模拟固体的表面,我们需要一个在二维方向上具有周期性结构来模拟
固体的表面,第三维则不具有周期性方向,用来模拟气相或者液相。但是,更常用的则是在第三位方向上加上周期性,周期性的结构之间用一个什么
都没有的空间(free space)来分割,也就是真空层。在这里我们需要注意的是要避免第三维方向上两个周期性结构的相互影响,也就是一个周期的
电子密度沿着真空层方向要区域零,这样才不会对相邻的结构产生影响。此时,我们需要做的就是: LDIPOL参数
1)增大真空层的厚度;厚度要始终,太小肯定不行,太大也不合适。想一想我们前面讲到的影响计算速度的一个因素,真空层太厚,也就意味着我 IDIPOL参数
们的模型尺寸变大,从而导致计算变慢。一般来说,对于表面反应的计算,15A的真空层厚度足够了。但是,对于功函数这一类对真空层敏感的计算
来说,我们需要注意。
2)VASP中还需要加入:LDIPOL = .TRUE. 和 IDIPOL = 1 | 2| 3 |4 这两个参数来消除上下不对称的slab表面导致的偶极矩影响 https://cms.mpi.univi
e.ac.at/wiki/index.php/LDIPOL
对于表面结构: 有以下几个需要注意的:
1)xy 方向上表面的大小:
A)这个影响表面吸附物种的覆盖度;
B)影响体系的尺寸大小和计算时间;
C)不同的大小需要选取对应的K点;回想一下我们前面提到的经验规则。

2)不同的晶面,(111), (100),(110);
A) 这取决于你研究的方向。
B) 不同晶面的表面能;
C) 不同晶面的表面结构,反应活性等

3)表面结构的层数
A)层数多了,原子变多,体系在 z 方向的尺寸增加,也会影响计算速度
B)计算中需要弛豫的层数;
C)不同的层数对你要计算的性质会产生影响,比如表面能;
D)不同的晶面需要的层数也不尽相同,一般开放的表面需要更多的层数。
E)根据自己感兴趣的性质,选择合适的层数,也就是需要你去测试一番。

4)Slab模型有两种,一种是上下表面对称的,一种是非对称的。对称性结构往往需要很多层,体系较大。 非对称的结构体系较小,但存在偶极矩的
影响,要注意加LDIPOL 和IDIPOL这两个参数来消除。后面我们会介绍到。

注意,为了更加顺利的进行下面的学习,参考书第4章的内容务必认真阅读。这会为你今后的表面研究打下坚实的基础。

2 表面模型的搭建:
主要使用Material Studio进行切面操作,这一部分,本人不想做过多的解释,因为各大培训班,网上各种博客都有操作说明。本节大师姐通过Cu(11
1)面的例子给大家简单演示一下。

2.1 块体计算
1) 首先是搭建Cu单胞模型,以及导出VASP计算使用的POSCAR文件,这部分不清楚的筒子们可以看:Ex36 的内容。
2) INCAR文件的准备
A) Cu是金属,ISMEAR=1,SIGMA=0.1
B) ENCUT=700, Cu单胞含有的原子数很少,可以把ENCUT设置大一点
C) EDIFF和EDIFFG控制电子步收敛和离子弛豫的精度
D) PREC=High
E)这里LREAL设置为Auto,是为了和后面表面能计算统一。计算时要根据原子数的多少,以及后续的计算选择LREAL的值。不能拿LREAL=.FALSE.
和LREAL=ON/.TRUE.计算的结果进行能量比较。看下面

F) 注意:块体材料计算时,为了后续计算其他性质,常常要求整个计算中使用相同的ENCUT,ENAUG, PREC, LREAL, ROPT,

这部分大家可以看看手册 8.3 What kind of “technical” errors do exist, overview

3) KPOINTS
a=b=c=3.6147 Å,
根据前面的经验,这里设置为13x13x13的KPOINTS(Gamma).

4) 准备POTCAR文件进行计算:见前面讲的相关脚本:

Learn VASP The Hard Way (Ex30)


5) 最后计算完的Cu的晶格常数为 3.6370 Å。实验值为3.615 Å。大家可以去计算下。(计算例子可以QQ群中下载,也可通过该链接:http://pan.baid
u.com/s/1dE84fhn 密码:nvwa)

2.2 关于结构优化,大家在计算时要注意下面的部分, 7.6.2 Accurate bulk relaxations with internal parameters (one)一定要详细的读

2.3 小结
主要以金属Cu为例讲了,块体材料的计算。块体材料计算时的一些注意事项
a) 体材料计算时首先要对要了解材料的性质,根据材料是金属,非金属,还是半导体,选择不同的ISMEAR和SIGMA。
b) 计算时要根据原子数的多少,以及后续的计算选择LREAL的值,这方面不熟悉的朋友可以看看手册。
c) 精确进行块体计算的过程以及注意事项
d) 回顾Bulk 的优化: Learn VASP The Hard Way (Ex36)
3 MS建立 slab模型

3.1 VESTA将CONTCAR转成cif格式,MS导入cif文件,然后build-->surface--->cleave surface, 如下图所示,在cleave plane(hkl) 可以输入要切的晶面


,如(111)面,

3.2然后在Surface Mesh--->surface vectors可以改变slab模型的vectors,之后选择Cleave进行切面,本例为(111)。这个时候也可以通过调节Surface


Box --->top和thickness,选择slab模型的表面终端和厚度。

3.3 确定好表面终端和slab厚度之后,加真空层
Build--->Crystals--->Build vacuum slab,Vacuum orientation的A,B,C用了选择真空层的方向,一般不用设置。可以通过改变Vacuum thickness设置真
空层的厚度10 Å,15 Å或者更大。这可以参照之前的计算。最后选择Build完成slab模型的建立。

之后可以通过Lattice parameters-->Advanced--->Re-orient to standard把真空层设置沿Z轴。


5 总结:
从本节开始,大家开始步入表面相关的计算学习。请务必认真阅读参考书,重复计算示例。本节主要简单介绍了一下Slab模型以及注意的基本事项。
通过Cu的计算复习了一下Bulk的计算以及展示了一下通过Material Studio进行Cu(111)表面的搭建过程。

上一篇:Learn VASP The Hard Way (Ex43):p(1x1) Cu(111)的单点计算 下一篇:Learn VASP The Hard Way (Ex41):DOS计算(五)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex43):p(1x1) Cu(111)的单点计算


2017-10-01

Ex43 p(1x1) Cu(111)的单点计算

回顾下上一节的内容,开始主要简单介绍了一下Slab模型,具体的大家去看推荐的参考书!计算部分我们做了以下几个方面的操作:

1) Cu的Bulk计算,获取了稳定体相结构,晶胞参数;
2) 将结果导入MaterialStudio, 并切(111)面
3) 将切出来的Cu(111) 面转换成POSCAR格式。

因此,VASP的四个输入文件,我们已经有了POSCAR,和POTCAR,下面我们复习下POSCAR,INCAR和KPOINTS的准备工作, 然后进行单点计算。

1 Cu(111) slab 模型( POSCAR)的制作流程 (复习一下)

A)Bulk计算结束后,将CONTCAR用VESTA转换为cif文件,然后MS导入。
B)Build –> Symmetry–> primitive cell
这里用初始晶胞什么意思???
C)Build –> surfaces--> cleave surface
在优化晶胞,能带,DOS,声子谱等计算的时候建议用primitive cell,计
算量小可以取更大的Kpoints,方便在第一布里渊区的高对称点取K点路
径。官网上给的第一个Si晶体的例子就是用的primitive cell算的。
做表面科学,切表面的时候用conventional cell。这个地方网上的其他教程
里有错误,大家可以用FCC的Cu晶体,的conventional和primitive cell切
(100)(110)(111)面对比一下,用primitive cell切出来的(100)(110)和
我们平时讲的面不一样。这属于一个共识机制。
D)Build –> Crystals--> Build Vaccum Slab 真空层选择15Å,

E)导出为cif,通过VESTA转化为POSCAR格式,如下:
前面的操作,我们生成的为 p(1x1) 的Cu(111)面,p是Primitive的简称,如果你不了解p(1x1), 去学习一下Wood Notation。当然,在此基础上,你也可以将p(1x1) 在晶胞
a 和b方向上扩展,生成p(2x2), p(3x3), p(2x1)等不同大小的Cu(111)表面。本节,我们就用p(1x1)做为例子。

2 KPOINTS

POSCAR中,slab在平面方向上a 和 b 的大小为: 2.5717 Å,根据前面的经验规则: 我们可以在两个方向上K点取值为:13x13,z 方向上取值为1,最终KPOINTS如下:


脚本使用命令为: kpoints.sh 13 13 1 (不知道脚本的请往前翻)

为什么在z方向上只用1个K点?查找参考书(Page 88)的说明:

If the vacuum region is large enough, the electron density tails off tozero a short distance from the edge of the slab. It turns out that this meansthat accurate results are possib
le using just one k point in the b3 direction.

3 INCAR
在贴出来INCAR之前,首先大家回顾一下单点计算需要注意的以下几个方面:
1)System = Cu(111) 可有可无
2)Cu 是金属,可以使用ISMEAR = 1; SIGMA = 0.1
3)ALGO = FAST 或者使用默认值

4)纯净的Cu(111)体系中,Cu没有磁性,ISPIN 不用设置
注意:CuO中Cu具有磁性,如果你算的是Cu的氧化物,就需要考虑ISPIN了
5)单点计算:NSW = 0 也可以不设置,因为默认值就是0
6)截断能: ENCUT = 450 很多人喜欢测试这个参数,450直接用是一个很好的选择
7)EDIFF = 1E-5 电子步的收敛标准

8)偶极矫正: LDIPOL = .TRUE. ; IDIPOL = 3 Slab模型一般都需要加上这个参数


9)控制OUTCAR和其他文件的输出: NWRITE = 0 ; LWAVE = .FALSE.;LCHARG = .FALSE.
10)也可以加上NCORE 这个参数来加快计算步骤,由于计算很快,本操作就不考虑了。

最终INCAR 如下图:

4 准备任务脚本,提交任务

计算完成后, grep ' without' OUTCAR (without前面有2个空格)或者 grep E0 OSZICAR | tail-n 1 ,得到单点能为: -13.96918440 eV

5 扩展练习

5.1 计算的例子已经压缩放到QQ群中了,也可以百度网盘链接下载:链接:http://pan.baidu.com/s/1dFxpsKL 密码:yug2

5.2 重复本节所有的练习
5.3 VASP官网查找本节中不了解的参数,然后学习;
5.4 思考一下:我们得到的单点能量可以干吗用?

6 总结:

刚刚步入slab的计算,我们速度稍微慢一些,本节只讲单点计算,希望大家能够跟上步骤,亲自进行操作练习,如果出错了,请认真改正,直至得到和上传的结果一样

为止。再次强调,大家平时一定要多浏览VASP官网,请把VASP手册下载放到桌面上,没事的时候就翻一翻。不要去网上找一些乱七八糟的教程,拿过来就直接照着练,
官网才是最正宗的。

上一篇:Learn VASP The Hard Way (Ex44):p(1x1) Cu(111) 的优化计算 下一篇:Learn VASP The Hard Way (Ex42):Slab 模型
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex44):p(1x1) Cu(111) 的优化计算


2017-10-01

Ex44 p(1x1) Cu(111) 的优化计算

前面我们学习了Slab模型的单点计算,在此基础上,本节我们主要学习下怎么优化Slab模型。

1 修改 Slab模型的 POSCAR文件

前面单点计算的POSCAR不可以直接拿过来用吗?为什么要修改POSCAR文件?

这是因为在Slab模型中,我们经验要固定一部分原子来模拟体相,然后放开一部分原子来模拟表面。一般来说,表面的两层原子允许弛豫,而下面的那些原子则直接固

定住。

VASP中固定原子需要在POSCAR中进行操作。有两个关键点:
1)在POSCAR的第7行后添加一行,改行内容为Selective Dynamics, VASP只认第一个字母,你可以直接在这一行只加 S或者s。也可以换成其他的S开头的单词,比如
SB, Super 等等;
2)在原子坐标后面加上 F 或者 T 表示固定或者放开,因为坐标有xyz三个数值,因此我们需要三个F或者T。我们可以控制允许原子在某一方向上移动,而其他方向上固
定。 F F F 表示xyz全部固定; T T T 表示xyz全部放开,F F T 表示 xy方向固定,只允许原子在z方向上移动。这一点我们前面也已经讲过了,详见:

Learn VASP The Hard Way (Ex24):频率计算的输出与POSCAR原子的固定

注意:

如果前面的POSCAR直接拿过来直接用,那么在优化过程中所有的原子都会被放开。回想一下我们计算Fe, Cu单胞的例子,计算中我们没有设置F或者T,晶胞尺寸和原

子的坐标在优化过程前后都发生了变化。即,你不设置Selective 以及 F或者 T,VASP默认是所有的原子都放开的。

此外,Selective 和 F 或者 T同时出现,不要只设置Selective忘了FT,也不要只设置FT忘了Selective.

2 如何修改?

根据前面说,我们需要做的无非有两步,

1) 在第7行后加入Selective Dynamics
2) 在坐标后面加入T T T 或者 F F F
我们在本节中,将底部的两层原子固定,上面两层放开。

实现本目的,有以下几种方式:
2.1)这个用文本编辑器就可以做到,很多编辑器都有列块模式,允许你同时添加N列到每行的最后。你可以使用下Notepad++, Atom这些免费开源的软件来操作。

2.2)使用p4VASP:详见前面的练习(Ex24)

2.3) 本节我们重温一下Sed的用法,直接使用命令进行操作。
A) 在第 7行 后添加一行:
sed -i '7aSelectiveDynamics' POSCAR
7a 代表在第7行后面添加一行,a 是append的缩写。注意, a 和 Selective之间可以没有空格,也可以有空格,这里我们没有加空格。效果如下:

上图中第 8行已经加上 Selective这一个关键词了。

B) 第10,11行为底部的两层原子坐标,我们在最后面加上F F F

图中最前面的命令是:sed -i '10,11s/$/FF F/g' POSCAR

注意:
这个命令我们执行之后,发现F和z方向的坐标连在一起了,后面又加了两行命令来改正:

sed -i '10,11s/0F/0 F/g' POSCAR


sed -i '10,11s/1F/1 F/g' POSCAR
即, 将0F替换成 0 F, 将 1F替换成 1 F

最终我们顺利地固定了slab模型的底部两层。

C) 吸取前面的教训,我们在修改表面两层的时候,刻意在 T T T前面加了一个空格来避免。
sed -i '12,13s/$/T T T/g' POSCAR
效果如下:

这样,我们就顺利完成POSCAR的改造了,可以用来进行slab的优化计算了。

3 KPOINTS 和 POTCAR

保持原来的样子不变

4 INCAR

优化的时候,我门回想一下要设置的东西:

4.1 IBRION 和 POTIM


IBRION可以使用 1 和2,我们这里用2。(没有为什么,也可以用1)
POTIM =0.1 官网默认值是0.5,个人感觉比较大, 0.1是一个很不错的选择。
4.2 EDIFFG = -0.01优化时以力作为收敛标准。注意 -0.01 已经很严格了,除非特殊需要,不要设置-0.001,这样你就会在QQ群里求助大家,为什么我优化的时候一直不
收敛啊。如果设置-0.01,很多步过后仍然不收敛,可以尝试一下-0.02,也是一个很安全的选择。
4.3 NSW = 500 设置最大的优化步数。
4.4 ISIF = 2 slab 模型优化的时候,我们用ISIF =2 ,也就是VASP默认值,不用设置, 最终INCAR如图:

上图里面的第9行写错了,应该是: LDIPOL=.TRUE.

注意:
上一节我们提到Cu没有磁性,表述是不准确的,应该是纯净的Cu(111) slab模型中,Cu不需要考虑自旋。如果你算的是CuO(111)表面,则需要考虑自旋了。
在此,感谢刚哥的提醒。

5 提交任务

计算结束后,OSZICAR最后几行如下图:

优化了10步之后,计算结束了。

6 扩展练习

6.1 掌握本节提到的固定原子的三种做法:文本编辑器,p4vasp, sed, 当然啦,更可以直接使用Vim 这个强大的工具来执行


6.2 查看结构优化相关的这几个参数,复习下它们的VASP官网说明。
6.3 运行本文的例子,然后将EDIFFG设置成 -0.001进行测试,查看与 -0.002的区别。
6.4 VASP官网查找表面能计算的案例,结合本节以及前面的学习,尝试算一下Cu(111)面的表面能。

7 总结:

截止到本节为止,Slab模型的优化,你已经可以初步掌握了。请务必跟着节奏认真练习。后面我们会继续学习Slab模型的优化,现在感觉陌生没上手的也不用担心。认
真总结一下,我们如何从Bulk模型,然后一步一步操作到Slab模型优化的。每一步中都有哪些该注意的细节。这些都掌握了,就可以大大提高你计算的成功率,进而节

省时间和精力。

上一篇:Learn VASP The Hard Way (Ex45):表面弛豫 下一篇:Learn VASP The Hard Way (Ex43):p(1x1) Cu(111)的单点计算
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex45):表面弛豫


2018-01-09

Ex45 表面弛豫

顺利完成博士答辩,现在我们开始继续前面的章节。
首先,想跟大家分享下自己答辩的体会:基础知识太不扎实,前瞻性又太不够。导致回答问题的环节,被大牛们问的就想找个缝钻进去了。
这对于我的启事就是,以后写这本书的时候,每个练习尽量分成4个部分,
1) 第一部分讲基础知识,
2) 第二部分讲计算过程的细节部分,
3) 第三部分讨论计算结果和基础知识;
4) 相关发表的文章中的计算。
这对大家的要求就是:
1) 有什么任何有疑问的地方,自己要记下来,主动查阅资料,然后反馈给我。
2) 有什么欠妥的地方,恳请批评指正;
3)如果你有相关发表的文章,可以放在前面提到的第四部分供大家研究,欢迎分享。
4) 这本书的作者不是我自己一个人,更是我们大家的心血,希望我们一起努力。
5) 本人只接受邮件咨询或者批评: qli@bigbrosci.com 因为群里讨论的很多宝贵的经验总是没法及时完整的保留下来,以至于造成了很多损失。

本节的基础知识点是:表面弛豫

我们先想想一下,有一块金属,我们从中间切开后,新生成的两个表面上的原子和体相中的有什么区别?
首先:表面上的原子配位数比体相中的少了,即表层原子具有悬键。因为切开的过程就等同于把两个表面的原子键切开了。
其次:配位数的减少使得表面层与内部的相互作用会更强,与体相中有所不同。这就体现在层间距(键长)上面。

1维基百科的解释:

理想情况下的晶体向各方向无限延伸,其中任一原子的平衡位置由晶体中其他所有原子对其作用力的总和决定。因此,每个原子所在的位置在理想晶体中是等价的,生成的晶体结构是周期性的
。现实情况下的晶体大小有限,这就导致了靠近晶体表层的原子受到的作用力不同于晶体内部的原子,从而造成晶体表面原子排列方式不同于晶体内部的结果。晶体表层原子的这种行为可被分为
弛豫(relaxation)和重构(reconstruction)两种情况。
弛豫指表面的原子层整体相对于内部的本体(bulk)的位置变化。较为常见的情况是垂直方向上的上下位移,即法向弛豫(normalrelaxation)。大部分金属表面上的弛豫都是这种类型。某些材
料的表面也可能在发生法向弛豫的同时有切向的弛豫。

2 Surface Science: An Introduction 这本书的解释


3 参考书的解释:
Density FunctionalTheory: A Practical Introduction
第94页,第四章,第4.5节 SURFACE RELAXATION 这一部分(请务必认真看完这一部分)

4 扩展练习:

1) 了解表面弛豫的相关内容;
2) 查找相关书籍;
3) 认真阅读参考书:4.5节的内容,并重复4.5 节的练习
4)下载本节的两本参考书:QQ群共享或者百度网盘链接:http://pan.baidu.com/s/1eSB2Nx4
5 总结

表面弛豫相信大家都很了解了,借此机会供大家复习一下。关于表面化学的经典书籍,如果你有特别喜欢的,也请推荐给大家。

上一篇:Learn VASP The Hard Way (Ex46):表面弛豫的计算结果分析以及Direct坐标转 下一篇:Learn VASP The Hard Way (Ex44):p(1x1) Cu(111) 的优化计算

换脚本 版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号


本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex46):表面弛豫的计算结果分析以及Direct坐标转换脚本


2018-01-09

Ex46 表面弛豫的计算结果分析以及Direct坐标转换脚本

前面一节我们回顾了一下表面弛豫的基本概念,对于大多数的金属体系来说, 表面弛豫一般发生在垂直方向上。将金属沿表面方向切成两份后,由于表面原子的配位数发生
了变化, 我们可以想象:该表层原子与下面一层的结合能力会更强,从而降低体系的能量。具体体现在层间距和能量两个方面。
我们先回顾一下Ex44中Cu(111)表面的练习。

1 首先观察一下结构的变化

POSCAR的结构如下:(刚刚切好的,热乎的表面)
Cu\(1\1\1)
1.00000000000000
2.5717000960999998 0.0000000000000000 0.0000000000000000
-1.2858500480999999 2.2271576141999998 0.0000000000000000
0.0000000000000000 0.0000000000000000 21.2994003296000010
Cu
4
Selective
Cartesian
+0.0000000000 +0.0000000000 +0.0000000000 F F F
-0.0000128765 +1.4847792201 +2.0999078998 F F F
+1.2858629618 +0.7423784587 +4.1996028482 T T T
+0.0000000000 +0.0000000000 +6.2995107693 T T T

优化后的结构:(冷却后的,转化为Cartesian坐标的CONTCAR)

Cu\(1\1\1)
1.00000000000000
2.5717000960999998 0.0000000000000000 0.0000000000000000
-1.2858500480999999 2.2271576141999998 0.0000000000000000
0.0000000000000000 0.0000000000000000 21.2994003296000010
Cu
4
Selective dynamics
Cartesian
+0.0000000000 +0.0000000000 +0.0000000000 F F F
-0.0000128765 +1.4847792201 +2.0999078998 F F F
+1.2858542192 +0.7423835062 +4.1890255872 T T T
+0.0000182442 -0.0000105333 +6.2592676588 T T T

表层原子的坐标从6.2995 减小到6.2593 A(没有word,打不出来带圈的A)。说明该层原子向体相收缩了。


第一、二层的原子间距为:
6.2995-4.1996 = 2.0999 (POSCAR)
6.2593-4.1890 = 2.0703 (CONTCAR),
前后变化了(2.0999-2.0703)/ 2.0999 = 1.4%
注意:这里没有区分正负号,一般来说,用负值表示向体相收缩!!!(详见参考书)
2 那么怎么知道弛豫前后的能量变化呢?

这个问题很容易回答:
首先,我们对刚刚切好的表面算个单点能计算
然后,用优化完的能量减去前面一部的单点能结果即可。
实际计算过程中,第一步可以免去,因为在优化的时候,VASP会对初始结构计算一下,对应的为第一个离子步的能量。
qli@tekla2:~/test/cu/cu111/opt1$ grep ' without' OUTCAR | awk '{print $7}'
-13.96892338
-13.96932426
-13.96974724
-13.97030280
-13.97016827
-13.97041579
-13.97047584
-13.97063103
-13.97082922
-13.97086603
所以,弛豫前后的能量变化为:
-13.97086603 - (-13.96892338) = -0.00194265 eV
能量为负值,说明刚刚切开的表面不稳定,表层原子向体相收缩后,体系能量降低,变得更稳定。
注意:这么做的时候,一定要先检查一下第一个离子步中的电子步是否收敛。
比如:VASP默认的单个离子步中的电子步数为40步:
NELM = 40
(http://cms.mpi.univie.ac.at/vasp/guide/node104.html)
如果你的NELM为默认值,且第一个离子步中,到了40步还没有收敛,则该步的能量是不可以用的。
此时,你需要做的就是:增大 NELM= 100 或者其他更大的数值, 对未优化的结构重新做个单点计算。

3 本节讲的太少,留个脚本作为补充

本节就先简单到这里了,下一节我们讲解一下表面能的计算。可能很多人抱怨这一节将的太少了。没办法,下周有个课题要结题,家里还有俩娃要伺候,上周末电脑刚刚被我
恶意捣鼓崩溃了,现在word还没有时间安装,你看到的这一篇都是在记事本里面写出来的。为了打消大家的抱怨,上传一个本人写的脚本,将Direc坐标转化为Cartesian坐标
。本节中CONTCAR的转化就是用的这个脚本。(脚本名为:dire2cart.py,具体见QQ群共享,百度网盘也登不上去了,暂时发不了共享链接,如有需要,等下一节的练习或者发
邮件找我索取。)
脚本使用如下图:
qli@tekla2:~/test/cu/cu111/opt1$ ls
CONTCAR INCAR KPOINTS OSZICAR OUTCAR POSCAR POTCAR sub4 vasprun.xml
qli@tekla2:~/test/cu/cu111/opt1$ dire2cart.py POSCAR
###################################
# #
#for VASP 5.2 or higher versions #
# #
###################################
This POSCAR has Direct Coordinations, Conversion is starting....
-----------------------------------------------------
POSCAR with Cartesian Coordiations is named as POSCAR_C
-----------------------------------------------------
注意:如果你的POSCAR已经是Cartesian坐标了,这个脚本可以自动识别并终止转换。

4 总结

谢谢大家的支持,请多多转发给那些需要入门的菜鸟们。

上一篇:Learn VASP The Hard Way (Ex47):表面能的计算(一) 下一篇:Learn VASP The Hard Way (Ex45):表面弛豫
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex47):表面能的计算(一)


2018-01-09

Ex47: 表面能的计算

继续前面的计算,这一节我们主要讲一下表面能的计算过程。
1 首先,我们先介绍一下表面能的定义。为了偷懒,本人直接摘抄的维基百科的解释,如下:
表面能是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表
面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所
需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者
对周围其他分子或原子的吸附,从而使表面能量降低。

2 具体到VASP的计算中,表面能是怎么算出来的呢? 下面我们看一下VASP官网的表面能的计算过程。

公式先大体浏览一遍,我们分析下里面的各项所表示的内容:
·Erel: Relaxation energy,即弛豫能量。这个前面一节我们已经讲过了,从刚刚切好的表面优化到稳定的表面所释放的热量。图中的第一个点就是刚刚切好表面的能量,最后一个点就是优化完成之
后的能量。这个相信大家现在都能理解了。
·σ:在handonsession-III里面,这个用来表示表面能。
·Esurf: 优化完毕后的slab能量
·Natoms:Slab中的原子数目
·Ebulk: Bulk结构中单个原子的能量。

注意1:

前面说的最后一点。Ebulk, 这个不是指的体相的能量,而是体相中单个原子能量。即体相的能量除以原子数目。我们顺便回顾一下前面单胞的优化:
a) 获取稳定的晶格常数,两个方法:
·ISIF + Large ENCUT
·通过计算不同的晶格常数的晶胞能量,用BM方程拟合
b) 得到稳定的晶格常数之后,如果用的ISIF= 3 这个方法,则将CONTCAR复制成POSCAR,然后在INCAR中设置:ISIF = 2 + 正常的 ENCUT,做个单算,算下计算晶胞的能量。
c)用晶胞的能量除以晶胞中的原子数目,就得到了这里的Ebulk.
比如前面Cu的单胞中有4个原子,我们则用计算后体系的能量除以4。

注意2:

Handonsession-III 里面的表面能,严格来说,这个定义其实是不对的。因为表面能,从字面上理解,它的单位应该是: 能量/面积。而图中只有能量,没有面积。所以,图中的表面能,指的是纯能量。


6)σunrel: 将块体直接切开所用的功,因为是切成了2份,公式中除以2.
注意,在这个计算里面,暂且不考虑表面的弛豫,单纯从体相切成2个表面的过程。
能量是刚刚切出来的slab的能量: -25.560
7)从体相到切开表面直至达到稳定状态,总的能量变化为:
σ = σunrel + Erel

注意3:

Erel 这里没有除以2。 为什么呢? 这是因为我们只放开了上面的两层原子。也就是只优化了一个表面。


至此,从体相切成表面,然后直至表面稳定,这一个过程的能量就算完了。
既然前面说了,表面能里面有面积,那么面积指的是什么面积?怎么求面积呢?
a) 面积就是你计算的slab的那一层表面积,很多人问我这个问题,我也是无语了!
b) 怎么求呢? 我们先看一下Slab模型(Notepad++这个软件打开的!没有的话赶紧去安装一个)

前面几行放大一下:看看晶格尺寸。

Slab的面积可以通过第三行和第四行的xy坐标来求。如下图:
如果面积用A来表示, 则:
A = 2.57170 * 2.22716 – 0.000 * (-1.28585)

注意4:

这里的单位是 Å2
原理如下图:(自画自拍,不喜勿喷!)

菱形的面积等于:x1 * y2
如果坐标系不是那么正儿八经对在一起的时候,如下图:

则面积等于:x1 * y2 – y1 * x2
Handonsession-III中Ni(100)表面的面积为:
A = (0.5*0.5– 0.5 * (-0.5)) = 0.5 Å2
这里我们还忘了乘以前面的缩放系数:所以,
A = 0.5 * 3.53 * 3.53 = 6.23045 Å2
最终表面能为: 0.71 eV / 6.23045 Å2= 0.114 eV/ Å2
一般来说表面能的单位为: J/m2
换算系数为: 1 eV/Å2 = 16.02 J/m2
换算完毕后,表面能为:σ = 0.114 * 16.02 J/m2= 1.826 J/m2.
注意: 我们的参考书中(第97页中)给弄反了。

这是因为:
1eV = 1.602176487⋅10-19 J
1 Å2= (1*10-10)* (1*10-10) m2
大家自己算算就知道了。讲到这里,相信金属表面能,大家都可以照着去算一遍了。

3:下面我们看一下这篇参考文献中的计算介绍:

Shapecontrol in concave metal nanoparticles by etching


Nanoscale, 2017,9, 13089-13094

这是本人博士期间的一个工作,主要讨论了不同盐酸浓度下Pt纳米颗粒的成长,腐蚀过程以及形貌的预测。有兴趣的可以看看,当然啦,本人也希望大家多多引用。对于表面能的计算,大家可以参考支
持信息中的公式1,如下图:
相信到这里,大家可以完全明白这段话的意思,以及计算的整个流程了。

4 扩展练习:

1) 重复一下Hand on Session -III 中Ni(100) 表面能的计算;


2) 计算下我们前面的Cu(111) 表面能的计算;
3) 计算下Cu(100), Cu(110)的表面能。
4) 对比Cu(111), Cu(110)和Cu(100) 的表面能,分析下规律。
5) 思考1:表面能的计算有什么需要注意的, 请公众号留言回答!
6) 思考2:表面能能用来干什么?请公众号留言回答!

5 总结:
本节,我们主要讲了表面能的计算,参考的资料有:
1) VASP官网的Hand on session (如果你自己下载不到,请认真反思自己!)
2)我们的参考书:Density Functional Theory: A Practical Inroduction
3) 以及本人发表的文章一篇。
4) 希望大家可以认真学习,不要急躁!!!
===================
本书中只要是用到的,提到的资料,本人都已经明确说明出处,获取方式以及下载链接了,请认真浏览,不要再浪费时间找我索要!

上一篇:Learn VASP The Hard Way (Ex48):表面能的计算(二) 下一篇:Learn VASP The Hard Way (Ex46):表面弛豫的计算结果分析以及Direct坐标转
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号 换脚本
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex48):表面能的计算(二)


2018-01-09

Ex48: 表面能的计算(二)

前面一节,我们讲解了一下VASP官网Hand-On-Session-III中表面能的计算。
1 首先我们要指出一点VASP官网的错误。

最后的表面能应该是:0.86 - 0.015 = 0.845 eV 而不是0.71 eV。

2 为什么要除以2?
很多人困惑为什么我们在计算的时候,上图中要除以2。这是因为我们的单点计算中包含有2个面。前一节解释说是因为把Bulk切成了两半,以至于把大家给弄糊涂了。为什
么我们的计算中会有两个面呢?首先我们看下Slab模型:
问题: 上图的结构中有几个表面呢?
答案是2个,因为我们的slab模型在z方向上也具有周期性,虽然我们把底部的两层原子固定来模拟体相,但实际上它们还是表面。如下图:

那么,为什么Erel 没有除以2呢?
这是因为我们只优化了一个表面啊。
如果我们两个表面都要优化的时候,是不是Erel 也除以2了呢?
答:是的。
如果你喜欢上下两个面都优化的话,那么这将引申出slab模型的两种情况:对称性和非对称性模型。前面我们讲的都是非对称的slab模型。那么什么是对称的slab模型呢?
如下图:

在这个模型中,中间的三层原子被固定用来模拟体相,上下三层的原子放开用来模拟表面。此时,如果你计算表面能的时候,Erel 的数值就要除以2了。计算公式可以简化为:
其中:Erelsurf 直接就是我们优化完毕之后的对称slab模型的能量。
单个表面的面积A,slab模型中的原子数Natoms和 Ebulk这些能量的获取和前面一节讲的内容一致。
注意: 将这个公式和参考书96页底部的公式对比一下。然后仔细阅读参考书97页的公式各项的说明。

3 对称和非对称slab模型的区别:

1)对称slab明显具有更多的原子数,在z方向更长,需要更多的真空层(上下两层);这就不可避免地出现了计算量大的缺点;尤其是对于机时捉襟见肘的筒子们来说,这个模型就
不用考虑啦;
2)非对称模型由于其非对称性,在计算过程中会产生偶极矩,注意这个偶极矩是由于模型引入的,并非我们常说的分子中的偶极矩。尤其是当我们要计算一些表面吸附或者反
应的时候,两个slab之间偶极矩的相互作用会对我们的结果产生影响。但这不是什么大问题,很多计算软件都可以通过控制计算参数来消除或者将这一影响减至最小。
3)VASP中可以通过设置:
1) LDIPOL=.TRUE. (打开偶极校正)
2)IDIPOL = 1-4 来解决。 1,2,3分表代表在x,y和z 方向上进行校正。4代表在所有方向上。
注意:1)和2) 必须同时加在INCAR里面。详见:
1) https://cms.mpi.univie.ac.at/wiki/index.php/LDIPOL
2) https://cms.mpi.univie.ac.at/wiki/index.php/IDIPOL

4 表面能计算的参数影响:

从公式中可以看出Slab的能量和Bulk的能量是主要因素:
1)Slab 能量:
a) Slab的层数:如参考书中的结果。

b) slab表面的大小,一般来说p(1x1)的即可。当然啦,你可也比较下p(1x1)和p(2x2)的区别: 这里要注意的是: 改变表面的大小,KPOINTS也要发生相应的变化,只有这样,两个


计算的结果才具有可比性。
c) 真空层的厚度 这些大家都可以测试一下。
2)Bulk 的能量前面一节我们已经讲过Bulk的能量计算了。前面有同学问到:Bulk计算的时候,模型中应该包含多少个原子?
个人认为:单胞或者原胞的计算均可,当然你也可以扩一下晶胞。但需要注意的是如果你要比较这些不同大小模型中单个原子的能量时,一定要注意K点的选择。如果K点密
度不一致,导致单个原子的能量之间存在细小的差别,这会令你不知所措。有兴趣的可以测试一下。
3) 此外,大师兄还要推荐一本进阶版的参考书:Theoretical Surface Science: A Microscopic Perspective 作者是Axel Groβ. 课题组主页(左下角原文链接):https://www.
uni-ulm.de/en/nawi/institute-of-theoretical-chemistry/

本书在QQ群共享下载。本书关于表面能的介绍在第68页,具体内容大家认真阅读,必定受益匪浅。
5 扩展练习:

1) 请务必认真阅读参考书中表面能,slab模型的相关介绍;
2) 认真测试,重复Cu(111), Cu(110)和Cu(100)面的计算;
3) 仔细阅读TheoreticalSurface Science: A Microscopic Perspective这本书中关于表面能的内容。
4) 结合计算结果和参考书中的解释,自己参悟一下。

6 总结:

本节主要回复了一下大家提问的比较多的问题,简单介绍了一下对称和非对称slab模型以及一些影响表面能计算的因素,也谢谢群友帮忙指出官网的错误。学习VASP没有
捷径,大家多练习,多出错,多总结分析,时间长了就会慢慢理解了。

上一篇:Learn VASP The Hard Way (Ex49):功函数(work function)的计算(一) 下一篇:Learn VASP The Hard Way (Ex47):表面能的计算(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

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


2018-01-09

Ex49: 功函数(work function)的计算(一)

前面我们讲完了表面的计算,后面两节我们主要讨论一下功函数的计算。
1 功函数的定义
首先,我们先看一下维基百科的解释:
功函数(又称功函、逸出功)是指要使一粒电子立即从固体表面中逸出,所必须提供的最小能量(通常以电子伏特为单位)。这里“立即”一词表示最终电子位置从原子尺度上
远离表面但从宏观尺度上依然靠近固体。功函数不是材料体相的本征性质,更准确的说法应为材料表面的性质(比如表面暴露晶面情况和受污染程度)功函数是金属的重要
属性。功函数的大小通常大概是金属自由原子电离能的二分之一。
The work function W for a given surface is defined by thedifference
W = - eϕ - EF
where −e is the charge of an electron, ϕ isthe electrostatic potential in thevacuum nearby the surface, and EF is the Fermi level (electrochemical potential
ofelectrons) inside the material. The term −eϕ is the energy of an electron atrest in the vacuum nearby the surface. In words, the work function is thusdefi
ned as the thermodynamic work required to remove an electron from thematerial to a state at rest in the vacuum nearby the surface.

我们再看下IUPAC官网的解释:
https://goldbook.iupac.org/html/E/E02015.html
The minimum work needed to extractelectrons from the Fermi level of a metal M across a surface carrying no netcharge. It is equal to the sum of the pot
ential energy and the kinetic Fermienergy taken with the reverse sign:

whera Ve is the potential energy for electrons in metals and eF is the kinetic energy of electronsat the Fermi level.

2 VASP计算功函数的过程

从前面的定义中可以看出,计算功函数我们只需要得到体系的费米能级和电子所处的静电势能,然后求差即可。

2.1 费米能级的计算:
VASP计算结束之后,通过命令:
grep E-fermi OUTCAR 即可提取出来。
2.2 静电势能的计算:
通过在INCAR中添加: LVHAR =.TRUE. 这个参数。
加入这个参数,计算结束后,VASP会输出一个文件: LOCPOT文件。我们可以通过脚本,或者程序对这个文件后处理来获取静电势能,怎么处理后面会讲的很清楚,大家先不要
着急心慌。
2.3 VASP的计算流程:
1)优化获取稳定的结构,
2)将CONTCAR 复制成 POSCAR
3)在INCAR中设置单点计算:
方法1:设置NSW=1 或者0
方法2:设置IBRION = -1
方法3:直接删除INCAR中NSW这一行,采用默认值
4)提交任务
注意:
1)如果第一步计算中有保存WAVECAR,则静态计算的时候可以设置:ISTART = 2 读取一下,以便节省计算时间;
2)如果没有保存,直接算即可。不要在读不读WAVECAR这个问题上瞎操心。
3) 电子步数的默认值是40,如果你的体系不容易收敛,计算的时候请设置一个较大的NELM值,比如 NELM = 500

3 Cu(111) 表面的功函数计算:
3.1)新建一个workfunction 的文件夹,将前面优化计算的: INCAR KPOINTS POTCAR CONTCAR和提交任务的脚本复制到这个文件夹中
3.2)修改INCAR改为静态计算
3.2)修改INCAR,添加 LVHAR = .TRUE. 这一行

3.3)将CONTCAR重命名为POSCAR
3.4)提交任务,等待结束。

4 后处理方法-1:p4vasp

p4vasp一直是本人强烈推荐的VASP计算相关的建模,可视化,查看结构,结果的软件。本节我们讲解一下如何通过p4vasp对功函数的计算结果可视化。
4.1 导入数据:
1)Linux系统下面,进入计算的目录直接敲命令: p4v & 即可 (我们稍微等下Windows用户的操作,后面可视化过程是一样的)
2)Windows下面,首先要将计算生成的LOCPOT文件保存到本地电脑上。
注意:有时候这个文件可能会很大,下载的时候比较蛋疼,不想下载的话等待下节的讲解。
3)打开p4vasp并导入LOCPOT文件:file --> loadsystem,然后找到LOCPOT所在的目录,点解导入,效果如下
4.2 开始可视化:(Linux,Windows都一样了)
Electronic –> Local potential

效果如下:

WOC,这是什么东东? 是不是算错啦?
别急,看下面:
点击下图中的 show,会出现三个方向让你选择,一般都是沿着 z 方向的,按照红色箭头点下即可。

效果如下:
Wow,Wonderful!!!是不是很有成就感?
But, 怎么才能获取静电势能的数值呢? 图中的纵坐标范围太大了,目测取值的话,误差应该在0.5 eV左右,太大了,不行。 那么我们只能导出数据,慢慢分析了。

4.3 导出数据

还记得前面我们讲的DOS的计算吗?我们求d band center,电子数目积分的时候将数据导出来了。同样,图中组成曲线的点的坐标我们也可以导出来。


点击: Graph-->Export

选择保存的目录,并给保存的文件一个名字。然后点击,Export, 图中的cu.dat 就会保存你指定的目录下了。

注意:
1)名字后面一定要有尾缀.dat或者.data, 否则会导出失败;
2)如果按照我说的步骤做的话,还不会弄,请自行查看前面关于DOS的计算,已经讲的很清楚了,不要再问我这个问题了。
4.4 分析数据
有了数据,我们就底气十足,什么都不怕了。用Notepad ++ 打开cu.dat 文件
注意: 这里大师兄说的是用Notepad++,别问我从哪里下载这个神奇的软件。百度会告诉你的。
打开之后,我们会发现,和DOS计算导出来的结果有几分神似。数据共有三部分,每两部分之间由空行分开。
这三部分的顺序,如下图

我们从图中可以看出,基本上在10-18的这个区间范围,三条线的数据差不多是一样的。静电势能的话,可以通过红线(Average那条线),也就是第二部分来获取。可以查看下1
4-15 A时红色曲线的数值,如下图:

由此,我们可以得出静电势能为: 4.835或者4.836 eV很多人问,那师兄,我们是取4.835 呢还是 4.836,亦或是4.837?我只能说,你取4.84都没问题。别再纠结第三位的这个小


数点了。
5 获取费米能级

套公式,功函数为: 4.84-0.03 = 4.81 eV


对比下维基百科中的数值:
注意:虽然维基百科给了功函数的一些数值,在发表文章的时候,你不能直接放wiki的链接到论文里面,这显得有些不专业。建议大家去参考CRC handbook 里面的数值,然后
引用。别问我CRC handbook是啥玩意,前面我也讲过了。

5 扩展练习:
1)重复本节的计算
2)重复VASP官网Ni(111)表面的计算。
6 总结:
本节我们主要
1)介绍了下功函数的定义(从别的地方拷过来的),
2)介绍了下VASP怎么计算功函数
3)怎么用p4vasp可视化,导出数据,并获取静电势能
4)怎么获取fermi level
5)举例介绍了p(1x1)Cu(111) slab 的功函数计算流程:计算结果下载:
链接:https://pan.baidu.com/s/1c2m52UG 密码:kfse

上一篇:Learn VASP The Hard Way (Ex50):功函数(work function)的计算(二) 下一篇:Learn VASP The Hard Way (Ex48):表面能的计算(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

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


2018-01-09

Ex50 功函数的处理脚本以及可视化
前面一节我们介绍了计算功函数的具体流程,以及用p4vasp获取真空能级的方法。
本节我们介绍另外两个方法,从本质上来说,这些方法是一样的,都是基于对LOCPOT中数据的处理。

1 使用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行注释掉就可以了。

2 使用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做计算。

4 扩展练习:

1)下载本节的例子,以及所有的脚本,按照讲解的操作一遍流程,链接:https://pan.baidu.com/s/1dEHvHr7 密码:ponm
2)Linux用户自行安装,ASE,使用vtotav.py这个脚本走一遍过程。
3)熟悉下用python画图的基本方式。

5 总结:

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


是正事。

上一篇:Learn VASP The Hard Way (Ex51):影响功函数计算的因素(一) 下一篇:Learn VASP The Hard Way (Ex49):功函数(work function)的计算(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex51):影响功函数计算的因素(一)


2018-01-09

Ex51 影响功函数计算的因素(一)

前面我们通过Cu(111)表面作为例子,学会了功函数计算的基本步骤和可视化过程。那么功函数计算的时候,需要注意的事项有哪些呢?

1 INCAR中的参数

计算功函数的参数:LVHAR =.TRUE.
加入这一参数时,VASP只将静电势能写入LOCPOT文件中。
在早期的VASP版本中,静电势的写入是通过设置LVTOT这个参数的。
在5.2.12版本之后,如果你设置LVTOT= .TRUE. ,那么静电势,交换相关势都会写入到LVTOT中。由于我们计算功函数的时候,只需要静电势这一部分。所以,如果你用的是5.
2.12版本之后的VASP,设置LVHAR= .TRUE. 即可。
如果有疑惑的话,不妨做个测试,分别设置LVTOT和LVHAR = .TRUE. 然后做个单点计算对比下结果。
设置LVTOT = .TRUE. 的结果如下:
设置LVHAR = .TRUE. 的结果如下:

我们对比下13-15Å范围内纵坐标的大小和平均值
很显然,两个参数对功函数的影响是不可忽略的。使用LVTOT这个参数,由于加入了交换相关势,曲线变得不再那么光滑,并且与LVHAR的结果有一定的偏差。所以,在计算功
函数的时候,LVHAR这个参数一定要注意。
这一点也体现在VASP官网最新的ppt中,如下如:
(自己主动根据下图中的关键词找这个ppt,别问我要,也不要在大师兄群里求助浪费别人的时间。)
注意:

在 hand-on-session(老版本的官方教程)中,使用的是LVTOT这个参数。老版本就是过时的意思。希望大家的以新版本的计算为准。

老版本中功函数的计算例子。
2 真空层的厚度及修改

真空层的厚度:指的是slab在z(或者c)方向上的长度减去表面原子在z方向的坐标。

Slab方向的长度,指的是POSCAR或者CONTCAR中第5行中的数值,上图箭头所指的地方。
那么我们怎么修改真空层的厚度呢?
由于slab模型中的原子部分就在那边乖乖地待着,我们只需改变slab中晶格常数在z或者c方向的长度即可。
例子1:上图中真空层的厚度为15 Å,我们需要一个20Å的slab模型,也就是在21.2994的基础上再加5个Å,等于26.2994。但这样做,对不对呢?
修改之后的POSCAR:

结构如下图:

我们发现slab的Cu原子部分之间好像也被拉长了。测量了一下两个Cu原子之间的距离为:2.956 Å。
修改之前为: 2.547Å。

所以:我们在前面的操作中,直接修改的z方向的数值,方法是错误的。
原因在于:前面的结构中坐标为分数坐标: Direct
我们修改完成之后,Cu原子在c方向的距离也会发生相应的改变。
所以,如果直接修改POSCAR或者CONTCAR改变真空层厚度的话,我们一定一定要先将它们转化为Cartesian 坐标。怎么转化呢?
方法1:用软件操作,比如p4vasp。

我们可以切换坐标通过鼠标点一下即可,然后保存成Cartesian 的POSCAR。
当然啦,也可以使用其他软件,比如VESTA等等,更好的选择,也欢迎留言补充。

方法2:使用脚本转换:
1)VASP官网在POSCAR的解释部分,提到了怎么进行坐标切换的公式。
链接如下:https://cms.mpi.univie.ac.at/vasp/vasp/POSCAR_file.html
2)在此基础上,本人写了一个python的小脚本,可以实现Direct到Cartesian的转换。
运行如下:

图中流程的解释:
1)将一个计算中的CONTCAR复制过来;
2)使用head -n 10 看一下这个CONTCAR的文件结构。(10指的是前面10行,如果你想看前面5行,使用head -n 5 )
3)dire2cart.py CONTCAR 使用脚本进行转换,转换的对象为CONTCAR
4)转换完成后,Cartesian的保存为CONTCAR_C文件,
5)cat CONTCAR_C 这个命令查看转化后的内容。(当然也可以继续使用前面的head命令)
本脚本下载链接: https://pan.baidu.com/s/1eRMJ7m6 密码:btsl
那么怎么把Cartesian转化为Direct呢?

1) 使用VASP,因为VASP的默认输出就是Direct坐标,算个单点就可以啦(笑话,别当真!)
2) 使用p4vasp等其他软件
3) 写个脚本倒着再做一遍,不过本人经常使用的是Cartesian坐标,懒得再写了,有兴趣的可以自己试试。

3 批量处理POSCAR

当我们完成转化后,就可以批量处理Cartesian坐标的POSCAR了。
1)先准备一个文件夹,名字为10,这个文件夹中有一个真空层为:10 Å的POSCAR,以及INCAR, KPOINTS, POTCAR, 任务脚本
2)运行命令:
for i in $(seq 12 2 36); do cp 10 $i ; sed -i "5s/16/$((6+$i))/g" $i/POSCAR; done
3)示例演示:
运行完这个命令后,会生成从12到36 的N个文件夹,每个文件夹之间间隔为2。我们通过下面这个命令查看所有文件夹中POSCAR中z方向的大小:
for i in *; do head -n 5 $i/POSCAR | tail -n 1 ; done

解释:

head -n 5 $i/POSCAR 获取POSCAAR前5行中的内容,


后面跟着一个 |tail -n 1, 这个命令的意思是,显示前面5行中的最后一行。
head 和tail 这两个命令之间用 | (pipe)连在一起,表示将前面head命令的结果传递给后面的tail命令。
任务准备好之后,批量提交就可以了。(不会的话,请前面自己翻批量操作的介绍。)

4 扩展练习:
1)使用LVTOT和LVHAR测试一下,加深下印象;
2)使用不同的测试不同真空层对功函数的影响以遍下一节的学习

5 总结:
由于时间的关系,本节就先讲到这里了。下一节我们讲解一下真空层对计算功函数的影响,以及如何批量获取真空能级。

上一篇:Learn VASP The Hard Way (Ex52):影响功函数计算的因素(二) 下一篇:Learn VASP The Hard Way (Ex50):功函数(work function)的计算(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex52):影响功函数计算的因素(二)


2018-01-09

Ex52 影响功函数计算的因素(二)

前面功函数的计算流程(VASP计算细节以及结果分析),我们已经掌握了。这一节介绍一下影响功函数的主要因素:真空层的厚度。首先个人经验:计算功函数的时候,真空层
厚度一定要足够。
这里有两点:
1)多厚才算足够?具体要根据自己的体系测试下,一般来说20Å左右足以。
2)是不是越厚越好? 越厚的话,计算出来的结果差别不大,但会增加计算量。前面我们讲过影响计算量的因素。
我们以Cu(111)表面的例子,简单介绍下真空层厚度对功函数的影响。

1 不同真空层厚度的测试(上一节内容)
1) 先准备一个真空层为10Å的计算文件夹:POSCAR如上图。
2) 将前面两节的INCAR,KPOINTS, POTCAR, 以及提交任务的脚本复制过来。
3) 批量生成测试文件,每个文件夹以真空层的厚度命名。命令如下:
for i in $(seq 12 2 36); do cp 10 $i ; sed -i "5s/16/$((6+$i))/g"$i/POSCAR ; done
4) 批量提交任务

注意:
1)这样的批量操作本书刚刚开始的时候就已经讲到了,这里不要再问我。
2)如果不会用这个办法批量制作输入文件,想其他的办法批量操作,条条大路通罗马,不要死磕在我的这个命令上。

2 结果处理

前面的测试计算中,共有14个任务。在Ex50这一节中,vtotav-v5.2f,vtotav.py或者p4vasp这三种可视化的方法,我们查找真空能级的数值,都必须读取数据文件,比如VLI
NE,LOCPOT_Z 或者p4vasp导出来的*dat文件。所以,我们要分别在这14个任务的文件夹中重复Ex50的操作14次。手动挨个弄可以完全实现,但本人不想这么做,因为这样
弄除了让你的操作更熟练些外,并不会有其他的收获。那就写个脚本批量处理吧。

首先我们分析下上图: 我们获取的真空能级在图中直线部分中间的一个点或者一个小区间的平均值。大约是真空层一半的高度。比如,我们的表层原子z方向坐标为6,真空
层厚度为16,那么我们可以取6 + (16/2)= 14时对于的点来得到真空能级。也可以通过[14-1, 14+1]这个区间中所有的真空能级求平均数来获得。下面我们看一下脚本的
主要内容:

1)注意部分:
使用这个脚本的时候,需要注意的内容。本人写了一堆废话在脚本里面,主要是提醒大家使用脚本的时候,需要注意的一些事项。
A) 脚本是谁写的,主要功能是什么、
B) 脚本读取POSCAR,POSCAR要为Cartesian坐标
C) 脚本默认读取LOCPOT_Z文件,如果没有该文件,你需要做的一些事情(生成以及如何将VLINE文件转换为LOCPOT_Z文件)
D) 该脚本是如何获取真空能级的
E) 一定要查看功函数可视化的结果,用来判断我们的这个方法是否试用。
写这么多废话,原因主要有2个:
A) 提醒大家在使用别人脚本的时候,一些需要注意的事项你要清楚。如果不清楚,可以咨询下脚本的作者;
B) 如果你写了一个脚本放到网上供大家使用,请花些时间写清楚脚本的运行原理,以及尽可能详细的注意事项。

2)脚本正文:
58行之前为我们Ex50这一节可视化的脚本:44 和 53 行中,额外将LOCPOT_Z中两列的数据保存到一个字典里面,便于后面根据z方向的坐标查找真空能级。
64:获取POSCAR文件总的行数
67-68:读取POSCAR文件
71:获取slab在z方向的数值
74-76: 将所有原子的z坐标保存到z_list 数列中
81:获得真空层的厚度
85:计算距离表层原子一半真空层厚度的z方向的数值: num_middle
88-93: 将[num_middle-1, num_middle+1]区间范围内所有的真空能级提取出来,并保存到middle_y 这个数列中。
97: 求平均值,并打印出来。

3)运行脚本:

图中第一个命令中,输出比较复杂,并且会和前面示例一样,展示功函数可视化的结果。
但这不便于批量提取数据,于是58, 82,96行便注释掉了。(如脚本图中所示。)
4)使用脚本批量获取真空能级

先将脚本复制到bin文件夹中,赋予可执行权限。

A) 批量生成LOCPOT_Z文件:

B) 使用脚本批量读取

5)批量获得费米能级:

我们需要的为第4列的数据。(图中的冒号也算作一列)
3 数据分析:

真空能级,费米能级以及功函数随真空层厚度的变化

图中的测试曲线看起来很漂亮,但纵坐标范围太大,我们将功函数随真空层的变化作图如下:
从图中,可以看出:20-30Å 范围内,功函数的波动变化较小,为4.81 eV。其他的波动值在4.85-4.87 eV 之间。Cu(111)表面的功函数为:4.94 eV。参考的是CRC handbook
中的数值。

实验与理论偏差为: -0.13 / 4.94 = 2.63 %

师兄,实验值结果是4.94 eV, 如果我们采用30 Å时的结果(4.87 eV),跟实验的差别更小,是不是更好?


可以这么说。但是
1)从我们测试的结果可以看出来,功函数随着真空层的变化,存在一个计算的误差;
2)实验测量值也会有一定的误差范围。
所以,如果你硬要把理论和实验结果完美地吻合,这是很难做到的,这当然也是大家所梦寐以求的终极目标。一般来说,只要在合理的误差范围之内(5% 的样子),跟实验值结果
一致就可以了,此外,如果你发表文章的时候,为了保证计算的可重复性。计算参数设置,模型尺寸等都要尽可能地详细。

师兄,不是说真空层对功函数的影响很大吗,为什么在10Å的时候,得到的功函数(4.80 eV)和20Å(4.81 eV)的时候一样?


这是因为,在当前的体系下,4层的p(1x1)-Cu(111)表面,10Å已经可以了。但10-20Å时,误差波动较大。12Å的数据也可以用,如同前面所提到的,他们都在一个合理的误差范
围之内,但必须注明你的模型尺寸。对于其他的体系,还需要大家自己动手去测试一下。

此外,给大家推荐一篇文章:
http://pubs.rsc.org/is/content/articlehtml/2016/mh/c5mh00160a

本文刚刚开始的图片就是从这篇文章中偷过来的。注意:如果你在大师兄群里,请不要求助文献!!如需求助文献,请加入这个群:157099073 (请严格按照群规求助)
4 扩展练习:
1) 复习功函数的相关内容
2) 计算,测试自己研究体系的功函数
3) 弄清获取真空能级的脚本原理(切记,搞不明白之前,不可乱用!!!)

5 总结

到本节为止,功函数的计算就先简单介绍到这里了,计算步骤,可视化以及测试都大体讲解了一下。但我们用的模型例子比较简单,如果你的体系复杂,计算仍有疑问,请在QQ
群中交流或者发邮件给我(qli@bigbrosci.com)。

上一篇:Learn VASP The Hard Way (Ex53):表面吸附以及模型的搭建思想 下一篇:Learn VASP The Hard Way (Ex51):影响功函数计算的因素(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex53):表面吸附以及模型的搭建思想


2018-01-09

Ex53 表面吸附以及模型的搭建思想

吸附这个词,对于做表面化学的人来说,是一个普通的不能再普通的名词了。从今天这一节开始,我们逐步进入表面化学相关计算领域。

1 吸附的定义:

1) 我们先看一下维基百科的解释:
吸附是指某种气体,液体或者被溶解的固体的原子,离子或者分子附着在某表面上。这一过程使得表面上产生由吸附物构成的膜。吸附不同于吸收,吸收是指作为吸附物的液体浸入或者溶解于另一
液体或固体中的过程。吸附仅限于固体表面,而吸收同时作用于表面和内部。
吸附也属于一种传质过程,物质内部的分子和周围分子有互相吸引的引力,但物质表面的分子,其中相对物质外部的作用力没有充分发挥,所以液体或固体物质的表面可以吸附其他的液体或气体,尤其
是表面面积很大的情况下,这种吸附力能产生很大的作用,所以工业上经常利用大面积的物质进行吸附,如活性炭、水膜等。吸附过程有两种情况:
物理吸附,在吸附过程中物质不改变原来的性质,因此吸附能小,被吸附的物质很容易再脱离,如用活性炭吸附气体,只要升高温度,就可以使被吸附的气体逐出活性炭表面。
化学吸附,在吸附过程中不仅有引力,还运用化学键的力,因此吸附能较大,要逐出被吸附的物质需要较高的温度,而且被吸附的物质即使被逐出,也已经产生了化学变化,不再是原来的物质了,一般催化
剂都是以这种吸附方式起作用。
2) IPUAC GoldBook中的定义:
Adsorption:An increase in the concentration of a dissolved substance at the interface of acondensed and a liquid phase due to the operation of surface forces. Adsorptioncan a
lso occur at the interface of a condensed and a gaseous phase.
https://goldbook.iupac.org/html/A/A00155.html

3) 参考书

吸附在物理化学中也是一个非常重要的概念,只要学过物理化学,肯定不会错过这一部分的内容。主要列举有关吸附的几本参考书,具体内容本节则不再详细介绍,这也超出了本书所包含的范围。
1)Atkins’ Physical Chemistry
(链接:https://pan.baidu.com/s/1hsJ95sg密码:nfxw)
2)Concepts of Modern Catalysis and Kinetic (By I. Chorkendorff,
链接:https://pan.baidu.com/s/1hrA5LHi密码:aqvq)
3)南大物理化学(傅献彩主编)(图书馆自己去找)

2 吸附在催化研究中的地位
本人想了很久,吭哧吭哧憋出来这么一句话:催化剂发挥催化作用的前提是:反应物需要和催化剂有接触(也就是反应物吸附到催化剂表面上并且得到活化)。写这句话的意思就是:研究一个催化反应,
第一步我们需要搞懂的就是反应物在表面的吸附情况。个人计算的心得就是:不论反应的初始态,过渡态以及末态,它们都是表面的吸附物种。这句废话的意思是:在我们的计算中,吸附贯穿着我们对
催化现象的整个研究过程中。吸附不仅仅是把反应物放到表面上就完事了,更与后面的反应息息相关。切记不要在思考的时候把后面我们要学习的过渡态和吸附隔离开。

3 吸附模型的搭建

前面我们已经讲过slab模型了,搭建吸附模型的本质就是在slab模型基础上,再添加吸附分子的xyz坐标。(搭建的模型无非就是一个xyz的坐标文件。)需要注意的有3个方面:
1) 熟悉VASP的POSCAR格式: 每一行的内容所代表的意思以及它们之间的相互联系:
A) 元素行,原子数目以及原子的坐标之间的关系;
B) Selective Dynamic 行与 T T T, F F F 等原子固定的关系;
C)Cartesian坐标和Direct坐标的区别等等)
D)POSCAR 与 KPOINTS的关系
熟悉POSCAR或者CONTCAR的格式可以使你在搭建模型过程中游刃有余。

2)Slab模型在 Z方向上: slab的厚度和真空层的厚度


这两点一方面决定了我们计算量的大小,另一方面,对于不同的体系;我们需要不同厚度的slab模型来保证计算的准确性。例如:对于金属体系来说:开放的表面往往需要更多的层数。所以,在准确性和
计算量上,我们要合理地权衡和取舍。可以通过一些基本的测试工作,以及参考他人发表的计算参数来确定。

3) Slab模型在XY方向上:
A)表面的大小:这个主要影响覆盖度,计算的工作量,
B)表面的吸附位点:比如下图中面心立方金属的111表面,有top,bridge,fcc 和hcp这几个位置,在搭建模型的时候要考虑吸附物种分别在这几个位置上的情况;
C)吸附物种与表面的结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等
这些对于你搭建合理的模型至关重要。一个合理的模型可以极大地降低计算工作量,提高你的计算成功率。当然,这需要一个扎实和良好的化学基本功来作为保障。

4 小结:
今天简单介绍了一下吸附的概念,吸附模型搭建的一些基本的思路,大家可以自己主动思考一下:本节提到的相关内容之间的相互关系以及具体的注意事项。在后面具体的实例操作计算中,我们会逐
步慢慢展开详细介绍。

上一篇:Learn VASP The Hard Way (Ex-Bader):Bader电荷计算 下一篇:Learn VASP The Hard Way (Ex52):影响功函数计算的因素(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-Bader):Bader电荷计算


2018-01-13

Ex-Bader Bader电荷计算

最近,群里有人在问bader电荷分析的问题,在这里,将bader分析的基本流程,以及本人写的一个后处理的脚本分享一下,希望大家不要再纠缠这个问题了。参考网址:
http://theory.cm.utexas.edu/henkelman/code/bader/
大家务必认真浏览参考网址的内容。

1 优化自己的体系结构:

使用VASP计算,获得稳定的结构,过程略过。

2 bader电荷分析的计算部分:

1) 将前面优化完的CONTCAR 重命名为POSCAR
2) 设置INCAR:
LAECHG=.TRUE.
LCHARG = .TRUE.
NSW = 0
IBRION = -1 (前面有了NSW = 0, 这个也可以不设置)
3) Kpoints可以用之前优化计算的,也可设置的稍微大些。
4) WAVECAR,CHGCAR等有的话就读一下(在第二步加上读它们的相关参数)。没有的话就不读了,这个无关紧要,不要纠结。
但是,如果你的体系很难收敛的时候,建议保留上一步的WAVECAR以便节省计算时间,如果没有的话电子步数适当增加(NELM=500)。

3 获取VTST的脚本

1)下载网址:http://theoryNaN.utexas.edu/vtsttools/scripts.html (用到里面的chgsum.pl这个脚本)http://theoryNaN.utexas.edu/henkelman/code/bader/downl
oad/bader_lnx_64.tar.gz (下载bader处理的脚本)
2)将前面下载的内容解压,然后复制到~/bin 文件夹中。
3)如果后面运行的时候遇到权限问题:执行:
chmod u+x ~/bin/chgsum.pl
chmod u+x ~/bin/bader

4 使用VTST的脚本处理结果

1) 进入计算的目录下面
2) chgsum.pl AECCAR0 AECCAR2
注意: AECCAE0和AECCAE2 是由LAECHG=.TRUE.这个参数控制输出的。如果你计算没有得到这两个文件,仔细检查一下这个参数。
运行这个命令:你会得到类似这样的输出结果:

结束后,你会得到 CHGCAR_sum 这个文件。

3) bader CHGCAR -ref CHGCAR_sum

注意:

i) 图中大师兄不小心把CHGCAR删掉了…所以没办法呈现完整的流程。放图上去只是想告诉大家,命令是正确的。
ii) 如果你在服务器上运行,得到了这样的错误。
FATAL:kernel too old
Segmentationfault
那么,你需要将计算复制到本地电脑上(由于CHGCAR等文件很大,该过程比较蛋疼,需要忍一会儿),然后用自己的电脑运行这个命令。(前提是电脑有linux系统,没有的话,我
也没办法。)
iii) 命令结束后,你会得到一些相应输出的文件:ACF.dat, BCF.dat, AVF.dat…
iv) 本人一般查看的是ACF.dat文件:(以SiH4为例)

如下图:

ACF.dat文件中,第一列的数字对应的是POSCAR中的原子顺序。
每个原子的电荷对应的是CHARGE那一列。注意,该列中的电荷是该原子价层电子中的电子总数。如果你想要知道这个原子是带正电或者负电荷,需要减去POTCAR中的电
子数目。

图中Si为第一个原子:有1.58个电子 ,减去POTCAR中的4,为 -2.42。


这表明Si失去了电子。2.42个电子分别转移到了4个H上面。
每个H有1+2.42/4 = 1.6 个电子。(对比下4个H中的电子)

5 得到任意原子的电荷信息

如果你对自己体系中的某一个或者某些特定的原子感兴趣,又不想每次打开ACF.dat文件或者已经导出来的excel文件。那么可以通过使用下面这个脚本提取相关的电荷信
息。

1) 脚本运行如下图:

命令:get-charge.py 后面加上你感兴趣的原子序数

注意:

A) 目前只支持一个,如果想查看多个,可以运行该命令若干次,或者使用一个for 循环即可: for i in 1 2 3 4 5 ; do get-charge.py $i ; done


B) 使用该命令前,请务必确认自己所关注的原子在POSCAR中的序数,如果不知道,可以通过p4vasp查看。

2) 脚本内容如下:
原理:

将ACF.dat中的信息以行的形式保存到一个列表里面。
然后根据用户输入的原子序数,调出来对应行中的电荷信息。

脚本下载:
链接: https://pan.baidu.com/s/1c2yIAoK 密码:qnlo

6 扩展练习

1) 浏览VTST官网bader电荷分析的有关内容
2) 找几个简单的气相分子或者自己的体系练练手。

7 总结

本节简单介绍了一下Bader电荷分析的计算流程,电荷分析的过程,以及本人自己写的一个小脚本。大家如果还有其他遇到的问题,可以在本文后面留言。我会持续更新相关
的问题解答。

上一篇:Learn VASP The Hard Way (Ex54):简单粗暴地获取初始构型(一) 下一篇:Learn VASP The Hard Way (Ex53):表面吸附以及模型的搭建思想
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex54):简单粗暴地获取初始构型(一)


2018-01-21

Ex-54 简单粗暴地获取初始构型(一)

Ex54-Ex56(下面两节)主要介绍一下如何计算:单个氧原子在p-(1x1)-Cu(111)表面top位上的吸附。在实际的计算过程中,一个好的初始结构会极大地加快并节约你的计算
时间,这不仅仅体现在服务器运行的时间上,也会避免很多错误的结果,因为这些错误结果的纠正耗时费力,通常折磨的新手们心焦力碎。可以回顾下前面我们O2分子的优化
过程:不合理的初始结构导致的错误结果以及计算时间的增加。
本节主要介绍一个快速获取优化初始构型的方法。该方法简单粗暴,可以让你在极短的时间内快速获得一个化学的feeling.

1 top site 的构型

在Cu(111)表面上,top位指的是直接吸附在Cu原子上方。其他的位点是什么,先不要着急,后面会慢慢学。如果一个O原子吸附在Cu原子上方,在空间坐标上,大家很容易想
到,O和Cu在xy方向的坐标应该是差不多的,z方向O的坐标为 Cu的坐标 + Cu-O键的键长。
如下图:

2 确定O原子在z方向上的坐标
知道了前面的基本原理,O原子的坐标我们就可以通过Cu-O的键长来初步获得了。
那么Cu-O的键长怎么获得呢?这里列举了一下几个常用的方法。
1)查数据库
2)查文献

3)自己估算
4)自己初算

前面1)和2)主要考验的是大家查询资料的能力,这里暂且不详细介绍了。有兴趣的可以加入大师兄文献互助超级群,跟众多文献检索大牛学习。(群号:157099073)

第三条:自己估算的话,可以根据Cu和O原子的半径:Cu和O成键,键长肯定要小于两者的半径之和。搜一下维基百科,Cu的半径为1.35 Å,O的为0.60 Å。(维基百科,搜索Ato


mic Radius就可以得到下面这个表)
从上面的数据我们可以得出:Cu-O键要小于1.95 Å。在吸附构型搭建的时候设置比1.95 Å小点的值作为初始,进行优化。一般来说,原子半径之和减去0.1-0.3 Å都是可以的
。但是不能太小,否则第一步优化的时候排斥力太大,会导致计算出错。

自己初算的话,就是采用一个小的模型,简单优化一下,得到一个合理的键长数值。
小的模型主要指2个方面:
1)结构简单;
2)计算参数简单。
下面我们主要在估算的基础上,介绍一个初算的方法:直接优化一下气相中Cu-O双原子分子的结构。
这个结构不难搭建,将前面练习中O2分子中的一个O原子换成Cu进行优化即可。
为了加深大家对搭建模型的印象,我们从p-(1x1)-Cu(111)表面的结构(具体见前面几节的内容)出发,然后一步一步搭建CuO的气相结构模型,并计算。

3 搭建初算的模型(Cu-O双原子结构)

1)p-(1x1)-Cu(111)表面的结构

将前面几节计算的一个真空层为15 Å的例子直接拿过来。表层原子在z方向的坐标为6.259 (第十二行)。

2)修改格子大小(3-5行)

这里修改的很随意,第三行中直接把2.571改成了12.571;
第四行中把2.227改成了12.227。
第五行中将21.299改成了12.299
效果如下:

注意:
A)当然也可以用其他大小的格子;(例如:8x8x8 Å3)
B)格子大小直接影响计算量和时间。(回顾下前面所学)

3)保留表层的Cu原子,删除其他的Cu原子。

注意:
A)我们这里将表层以下的三个原子删掉了,只保留z坐标为6.259的这个原子;
B) 第7行中原子数目也要相应的改变。从4 改成1。
C) 效果如下图:

4)加入O原子
注意:
A)第6行中,在Cu的后面加上了一个O,不是数字0;
B)Cu 和 O 之间用1个或者几个空格隔开,不要用tab;
C)第7行中,记得加上O原子的数目
D)最后一行添加O原子的坐标,这里我们直接把Cu原子的复制过来了。

由于两个原子坐标一样,Cu和O堆在一起了。

5)修改O原子坐标

注意:
A)这里我们把Cu固定住了;为了方便下一步的计算。
B)Cu-O之间的键长,设置的为1.8 Å;
C)O的z坐标为:6.259 + 1.8 = 8.059。
6)到这里,Cu-O双原子分子的气相结构就搭建完毕了,保存成POSCAR即可。
上面的效果图是本人每一步打开展示给大家的。实际操作中,完全没有必要。我们需要学习的是:
A)怎么将脑子中的模型转化为VASP的POSCAR文件;
B)格子大小怎么修改;
C)怎么添加原子,添加或者删除原子后,原子数目怎么弄;
D)怎么添加原子坐标。
E)怎么通过改坐标修改原子位置。

4 INCAR 检查

注意:
1)算的是气相中的: ISMEAR = 0 ; SIGMA = 0.05 (本书前面就讲过了)
2)IBRION = 2; POTIM = 0.1;NSW =100 是优化的参数
3)EDIFF和EDIFFG是电子步和离子步的收敛标准。

师兄,磁性呢?对称性呢?
因为本例子是一个初算,几步算完,看下键长。这个任务的使命就完成了。
很多细节的东西可以暂时不用考虑。这里EDIFFG用的也有点小,本人忘了修改了。大家可以设置为 -0.05或者直接使用能量作为标准,这些都可以的。
虽然本节我们很多地方都没有考虑,这是由于任务的性质所决定的。我们对其定位就是瞎算下,得到一个初始的构型。这也是一个课题中为数不多的,可以为所欲为的计算了
。但你正儿八经开始算的时候,各种细节问题都要考虑进去。而这一步的计算,也可以作为一个缓冲期,让你有充足的时间去思考一下正式计算时其他需要的注意事项。

5 POTCAR、KPOINTS检查
A) 根据POSCAR获取对应的POTCAR;
B) 使用gamma点计算。
注意:
在提交一个任务前,一定要将INCAR、KPOINTS、POSCAR、POTCAR以及脚本在心里默念一遍。然后对应的检查一下,是否有些遗漏的地方。否则等算完了,发现错了,又
得浪费很多时间重新计算了。

6 检查结果

1)上个厕所的功夫,任务就结束了,共算了6步。(其实是切换电脑系统的功夫。
2)Cu—O 的键长为: 7.95-6.26 = 1.69 Å

注意:
此时的键长只作为下一步的初始猜测,不要跟其他文献去比,也不要太较真。

7总结:
本节,你会学到:
1)如何通过原子半径,估算一个初始的键长值
2)如果搭建一个简单的模型,初算一个键长值。
3)复习气相中的优化。
4)复习下计算前准备工作:INCAR、POSCAR、POTCAR、KPONTS的检查。
如果本节的内容,你有不理解的地方;想获取脚本等信息;请查阅前面讲的内容。
搭建几何模型,无非就是按照软件的格式,修改原子坐标罢了。这里我们强调的是几何模型。但,几何模型所具有或者要表达的物理、化学意义,这才是最关键的。

上一篇:Learn VASP The Hard Way (Ex55):简单粗暴地获取初始构型(二) 下一篇:Learn VASP The Hard Way (Ex-Bader):Bader电荷计算
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex55):简单粗暴地获取初始构型(二)


2018-02-02

Ex-55 简单粗暴地获取初始构型(二)

前面一节,我们通过一个简单的方法获取了一个Cu-O键的键长。因为我们固定了Cu的坐标,当计算完成之后, O原子初始构型的坐标可以直接将计算后的结果复制过来。
(此时需要注意Direct和Cartesian的坐标问题。) 操作如下:

1 搭建合理的O吸附模型

1) 取Cu(111)表面模型的POSCAR (Cartesian坐标)

2) 复制快速获取初始构型计算(Cu-O dimer)的结果
上图中的最后一行。

3) 构建O的吸附模型:

当然了,我们也可以根据键长或者O在z方向的坐标直接在Cu(111)表面基础上搭建。

这个简单粗暴的方法到此就讲解完了。有以下几个需要注意的地方:
A) 这里我们用的是Cu(111)的 p(1x1) slab模型,表面只有一个原子。一般来说,大家计算吸附的时候,模型都比这个大,我们可以取一层原子。记住,要固定住这层原子。
B) 这个方法基于的是气相中的计算,因此偶极矫正不要加!因为加上去之后,收敛会变得很困难。这个大家可以用自己测试测试。
下面我们讲一个基于slab模型的方法,虽然比这个计算量大, 但也异常的快,相对于后面的计算,花费的时间也可以忽略不计。

2 快速获取初始构型方法(二)
1) 在这个方法中,第一步我们先取slab模型的结构。这里就不讲了
2) 搭建一个初始的吸附模型。此时我们要根据原子半径,大体确认一下键长的合理范围,前面也讲过了,就不再细说了。 由于前面一节我们已经有了一个O原子的坐标数据,
可以直接拿过来。如下:

注意:实际操作的时候,这个方法可以使用前面一节的方法的出来的结果;也可以直接设置初始值,这两个方法之间联系不太大。

3) 固定slab模型中的所有原子!所有原子!所有原子!
重要的事情说三遍,是把slab模型中的原子全部固定!只放开吸附的分子。这里大师兄在vim里面操作,使用了下面的命令: 12,13s/T/F/g 意思是把前面图中,12和13行中的T
全部替换成F。当然也可以使用sed进行操作,相信大家学习了这么长时间,已经完全掌握了,我就不浪费时间了。效果如下:

4) 设置INCAR,这里是slab模型,把之前Cu(111)表面优化计算的INCAR直接拿过来了。
EDIFF、EDIFFG 可以适当放宽,下图大师兄懒得改了。

5) 生成对应的POTCAR,K点只用gamma点!K点只用gamma点!K点只用gamma点!
这里需要注意的有两点:
A) 计算前一定要检查POTCAR和POSCAR是否对应,养成这个好习惯
B) 一定要用gamma点。因为我们知道,K点越多,计算量越大。

6) 提交任务等待结束。

O原子的坐标,从最初的7.950优化到了8.009。
到此,另外一种快速获取稳定构型的方法,也介绍完了。希望大家可以举一反三,运用到自己实际的课题计算中。

3 正式优化O的吸附

前面我们已经获取的初始的一个合理的构型,下面就开始正常计算了。想一想,在上一步的基础上,正式计算的时候,我们有那几个需要修改的部分。

1) 结构
这个是必须要想到的。怎么做呢? 直接将CONTCAR 复制成 POSCAR即可。
PS: 怎么完成复制这一步还不会的话,请从头开始学。
2) 复制完了并不代表完事,前面一步我们还固定了表层的原子,此时我们需要放开。使用sed命令: sed -i ‘12,13s/F/T/g’ POSCAR
3) KPOINTS: 使用前面Cu slab优化时用的 13x13x1
4) INCAR中,如果前面一步的计算精度较低,这时,我们就要提高一下了。
5) POTCAR 不变
6) 提交任务的脚本:由于前面的计算量很小,一般可以使用小队列进行计算,如果计算量增大了,这时我们也需要稍微修改下脚本。

7) 提交任务,等待结束,查看结果。

O原子的坐标从8.009 优化到了8.093。键长从1.75 Å 优化到 1.80 Å,变化很小,这说明我们的初始构型已经很接近优化结果了。

4 扩展练习:
1) 本节的实例中,使用了 && 这个连接前后的命令,大家学习下是怎么回事
2) 重复本节练习,掌握其中的关键点。
3) 欢迎转发分享。

5 小结

一个合理的初始构型可以极大地降低我们的工作量,这一点是大家务必要记在心里的。而获取合理的初始构型,一方面需要我们用化学的知识去搭建结构,另一方面,也需要
配合一些简单的低精度的计算去完成。希望大家可以掌握这两节的精髓,运用到自己的课题中,提高自己的计算效率。
上一篇:Learn VASP The Hard Way (Ex-XX) Ubuntu下p4vasp的安装 下一篇:Learn VASP The Hard Way (Ex54):简单粗暴地获取初始构型(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-XX) Ubuntu下p4vasp的安装


2018-02-13

Ex-XX Ubuntu下p4vasp的安装(插播一节)

使用vasp计算,后处理的小程序、小脚本有很多。其中最为出名的非p4vasp莫属了。从搭建模型,调整结构,DOS、能带计算,功函数等等,都可以使用它来完成。举
个例子,本人博士四年,一直用它来查看和处理结果,再结合一些其他辅助的小程序和脚本,可以说是极大地提高了自己的工作效率。
今天因写脚本需要,浏览了一下p4vasp官网,发现官网对p4vasp的安装解释非常简单。于是便测试了一下。本节主要包含3部分,第一部分:p4vasp官方的安装流程,
相信大家按照这一步都可以完成安装; 第二部分:本人亲自安装的具体流程; 第三部分:傻瓜化安装流程。

1 第一部分:点击下方的链接,根据操作进行。
http://www.p4vasp.at/#/doc/getstarted

2 动手安装流程:

1)首先说明下,本人的操作系统是:Ubuntu 16.04.3 LTS


2)下载p4vasp:
目前最新的貌似只有source版本的了, Windows版本可以通过这个链接下载: 链接:https://pan.baidu.com/s/1eT3MGvC 密码:g9fn
也可以加入QQ群: 玩转VASP(群号:325959872)获取。

3) 解压:

这里将p4vasp软件包解压到Documents目录下,当然,也可以使用官网介绍的解压命令进行。

4) 进入解压的目录,然后按照官网说的,Ubuntu用户,使用install-ubuntu-dependencies.sh 这个脚本安装一些一些必须的dependencies. 如下图:运行命令后,会


提示你是不是下载,输入Y或者y,然后回车。屏幕此时开始疯狂地颤抖,说明正在下载安装。

注意:
A) 解压到什么地方不用要,可以放到桌面上,也可以直接解压在Download里面,本人习惯解压到Documents这个文件下,
B) 这里大师兄先进入的 install 这个目录, 然后运行的脚本。安装完记得再返回去。

5) 安装完成后,返回上一级目录,然后正式安装p4vasp。

等待屏幕颤抖完毕。

看到这里,基本上99.99% 成功安装了。

6) 测试一下: 终端直接输入: p4v,效果如下:


打开p4vap了,说明安装成功。

7)检查下版本:(点击右上角的help)

最新版的p4vasp已经顺利安装成功。欢呼吧,少年!!

3 傻瓜化安装

在进行第二部分操作的前4年,本人一直用的这个办法:

1) 终端一个命令搞定: sudo apt-get install p4vasp 效果如下:


输入Y,等待屏幕颤抖结束

2) 运行p4vasp:
3) 检查下版本:该版本为v0.3.29r1,比官网的最新版稍微旧一点。但不影响使用。

小结:

建议大家使用第一、二种办法,即按照官网的介绍,安装最新版的p4vasp。如果遇到自己解决不了的问题,可以使用 sudo apt-get install p4vasp 这个命令一键搞定


。其他linux系统的用户,也可以分享一下自己的安装流程。Windows下的,目前只能使用本文中链接下载旧版本的了。

上一篇:Learn VASP The Hard Way (Ex-XX)通过job-ID快速进入计算目录 下一篇:Learn VASP The Hard Way (Ex55):简单粗暴地获取初始构型(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-XX)通过job-ID快速进入计算目录


2018-02-19

Ex-XX 通过Job-ID快速进入计算目录

大家都知道,VASP的每一个计算都在一个单独的文件夹里进行。随着课题的进行,我们也会建越来越多的目录。从而导致我们在查看任务的时候,需要频繁地输入cd命
令,不停地使用tab 补全路径,然后在不同的计算目录下切换。这一方面导致我们浪费了很多时间在敲命令上,另一方面加重我们的双手负担,有助于键盘手的养成。

那么我们可不可以快速进入计算的目录呢?
答:当然可以。下面,大师兄们就带领你一步一步学会如何根据任务的ID快速进入计算目录。

首先,我们先思考一下进入目录的过程:
1) 获取目录的路径
2) 使用cd这个命令进入

知道原理之后,我们便可以把这个问题分成两部分来解决。

第一步,先根据job-ID获取目录,一般来说,不同的课题组都有不同的任务提交系统,但总而言之,不管什么样的任务提交方式,都会有一些相应的命令来查看你的任
务情况。
例子1)我们的服务器上可以使用: qstat -j job-ID 来查看任务详情。见下图:
方框里面便是我们任务的目录,我们可以使用grep 和 awk 命令来获得,如下

例子2)本人在超算中心查看任务的时候,需要用到 scontrol show job job-ID来查看任务信息,获取目录的示意图如下:


通过前面的例子,获取目录的工作顺利完成。

第二步:进入目录

获得了目录之后,直接用cd 这个命令进入就可以了。我们的脚本可以写成这样的:

保存脚本,名字为 ent.sh 。 然后运行,效果如下:

从上图可以看到,运行脚本后,我们并没有进入到计算的目录下,而是原封不动地待在原地。

这是为什么呢? 大师兄群里(217821116)的牛牛们给出了答案。

1) 首先我们先看下到底有没有进入计算的目录(小亮的测试结果),原理如下:
A) 在Desktop目录下,写一个test1.sh 的脚本
B) 在Desktop目录下,建一个test的文件夹,
C) 在Desktop/test目录下,写一个test2.sh 的脚本。
D) test1.sh的功能是 进入 test 目录,然后运行该目录下的 test2.sh脚本,test2.sh的功能是输出 lalala这几个字母。
E) 我们在Desktop目录下运行test1.sh: 也就是进入test这个目录,然后运行test2.sh
如果我们得到了 lalala 这样的输出,就意味着我们已经进入test,并且成功运行了test2.sh 这个脚本。
F) 脚本具体内容及运行结果如下图:

测试结果表明我们确实进入了test这个目录。但为什么我们最终又返回来原来的目录了呢? 这是因为直接用bash的话,是开始了一个子进程,并不会改变父进程的目录
。(小亮的话,原封不动地就贴出来了)但我们做化学的,大部分都知道紫禁城,但不知道啥是子进程啊,当然也不知道父进程是啥玩意。

这个问题先放一边,那么我们应该怎么解决这问题呢?毕竟,我们需要的就是通过脚本进入目录而已。小亮同学给出了答案。

我们可以使用source 或者 . 后面加脚本来实现这个功能。 为啥source 和 . 可以呢?


首先,在linux下面,source 和 . 是一样的。
其次,群里的赵老师解释说: 若用source命令,就会不开启子进程。
又是紫禁城,虽然不知道是啥,但我们现在可以得出这样的结论,使用source或者.是可以解决这个问题的。

我们尝试一下:

果不其然,大牛们的方法就是好用。(100个赞!)

第三步:脚本改进

上图中,脚本里面我们放的是一个任务的ID,但想查看任意的一个任务,就需要把图中的job-ID (1209653)改成 $1 即可。 $1 代表的是脚本后面紧跟的第一个参数


。效果如下:
哈哈,这样的话,我们每次运行: source ~/bin/ent.sh job-ID 即可进入计算的目录。
这里之所以使用 ~/bin/ent.sh 是因为脚本在~/bin目录下面。前面我们都是在~/bin目录下运行的,但如果你在目录1(非 ~/bin)下写的脚本,然后再目录2下运行so
urce ent.sh 的话,系统可能找不到ent.sh 文件,从而导致出错。 如果不想每次都输入这么长的命令,可以修改~/.bashrc 文件,添加如下内容: alias e6='source ~/
bin/ent.sh'

注意: 等号=前后没有空格。
这样,每次我们输入 e6 job-ID 就可以自动进入计算目录了。大功告成。

小结:

根据job-ID快速进入计算任务的原理:
1) 通过ID找到任务的路径,
2) 使用source来实现 cd 的效果。
脚本很简单,内容只有2行,但背后所隐藏的原理,出现的问题,以及解决问题的方法,这才是我们所需要真正掌握的。

再次感谢群里的小亮和赵老师对紫禁城问题的指导。祝大家根据自己的情况,顺利写出脚本并使用愉快。

上一篇:Learn VASP The Hard Way (Ex-56)吸附能的计算(一) 下一篇:Learn VASP The Hard Way (Ex-XX) Ubuntu下p4vasp的安装
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-56)吸附能的计算(一)


2018-03-07

Ex56 吸附能的计算(一)

我们已经优化完成了O原子在Cu(111)表面上的吸附。总结并数一下,到目前为止我们从前面的计算中可以获取哪些能量。
1) Cu(111) slab 的能量
2) slab上有O吸附时,体系优化完的能量
再往前想一下,我们也计算了
3) O2分子
4) 以及O原子在气相中的能量。

有了这几个能量,我们就可以计算O在p(1x1)的Cu(111)表面上的吸附能了。这也是本节的主要内容。

1 什么是吸附能?

从字面上不难理解,就是分子或者原子从气相中吸附到表面上所释放的能量。计算吸附能的时候,需要注意的有两点:起始和终态。
1) 先说下终态:这里说的终态就是O原子在表面吸附,并且优化完的构型。我们标记为 slab+O,它的能量为 E(slab+O)
2) 初始状态。我们计算O的吸附能,起始状态是O2 和 纯净的slab表面。因为在实际反应中,O2在气相中解离成2个O原子,然后再吸附,这种可能性微乎其微。
前面我们讲了O2分子的优化,这里我们直接把O2分子的能量拿来用。起始的两个结构能量分别标记为:E(O2) 和 E(slab)。
由于在终态的吸附结构上面,我们只有1个氧原子, 所以初始态我们要用O2能量的一半: E(O2)/2
3) 注意:文献报道里面,也有很多人用O原子在气相中的能量来计算O的吸附能。这样做的话,其物理意义为:O2需要先解离成O原子,然后O原子再吸附。此时
,初始状态为分解的O原子,因此O2分子解离的能量没有考虑在内。由于O2解离是吸热反应,忽略掉解离能,会导致O的吸附能很强。单个O原子的能量标记为:E(
O)
4) 所以,大家在计算的时候,一定要把自己的计算公式标出来,此外,大家看到直接用O原子能量计算出来的吸附能,不要用O2作为参考能量的结果进行对比。
5) 这两个计算方法,哪个对,哪个错呢? 答:都是对的。因为O2的解离能是一个常数,加上去(用O2能量作为起始)或者忽略掉(用O原子能量作为起始)得到
的结果之间的区别无非也是这个常数。看下面的计算。

2 计算吸附能(单个O原子)
公式1: Eads-1(O) = E(slab+O) – E(slab) – E(O2)/2
公式2: Eads-2(O) = E(slab+O) – E(slab) – E(O)

E(slab+O): O 在Slab上,优化完结构的能量;
E(slab): 优化的slab的能量;
E(O2): O2 分子在气相中的能量;
E(O): O原子在气相中的能量;

带入数据后:
Eads-1(O) = -17.68238420 eV – (-13.97082922 eV) – (-9.85498627 eV) = 1.216 eV
Eads-2(O) = -17.68238420 eV – (-13.97082922 eV) – (-1.89237882 eV) = -1.819 eV

前面我们说了,如果直接用O原子在气相中的能量,则忽略了O2分子解离的能量(或者是O原子结合能)。
我们知道O2 分子解离是一个吸热反应,那么,解离能可以通过以下两个方式来获取:

1) 两个吸附能量相减来得到: Eads-1(O) - Eads-2(O) = 1.216 eV – (-1.819 eV) = 3.035 eV

2) 直接通过O2分子和O原子的能量得到。单个O原子的结合能为:
Ebinding = [ E(O2) – E(O) * 2] /2 ,带入数据后得到。
Ebinding =[ -9.85498627 – (-1.89237882 *2) ] / 2 = -3.035 eV

3 思考问题:

1) 前面我们计算的Eads-1(O) = 1.216 eV 是一个正值,为什么会这样? 算错了吗?还是有其他物理意义?


2) 如何计算H,CO,CH4, CH3OH 等的吸附能,把计算的公式列出来。每个能量计算的细节,注意部分有哪些?
3) 如何计算脱附能?

4 扩展练习:

1) 推荐阅读下面这两篇文章(本人的)。讲的是关于甲醇,乙醇,乙二醇,以及甘油在Cu, Ru, Pd以及Pt的(111)上面的解离。Ex系列的后续文章,表面反应的优


化,过渡态的计算等,基本都以这两篇文章的内容为主。希望大家能够好好学习,并多多引用。此外,计算的很多细节都在支持信息里面,大家不要错过。一时半会
看不完没有关系,下载后结合本书慢慢看。

链接:https://pubs.acs.org/doi/abs/10.1021/cs501698w
链接:https://www.nature.com/articles/s41467-018-02884-y

2) 回顾并重复本节所涉及到的计算,以及注意细节部分。
A. 单个O原子的能量;
B. O2分子优化;
C. Cu bulk的优化;
D. p(1x1)-Cu(111)表面的搭建及优化;
E. O原子在p(1x1)-Cu(111)的top位吸附的模型搭建及优化;
F. 前面几点的细节参考前面ExXXX期的内容;
G. 不满半年的新手,建议从Ex0 从头学习。

5 总结:

本节我们主要介绍了O原子在p(1x1)-Cu(111)表面top位上的吸附能的计算公式。顺便带大家回顾一下整个计算流程(见扩展联系2)如果你从头跟着学过来的话,每个
流程中的细节,需要注意的部分肯定都已经掌握了,后面举一反三,就慢慢渐入佳境了。也就是所谓的开始入門了。

上一篇:Learn VASP The Hard Way (Ex-57)吸附能的计算(二) 下一篇:Learn VASP The Hard Way (Ex-XX)通过job-ID快速进入计算目录
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-57)吸附能的计算(二)


2018-03-10

Ex 57 吸附能的计算(二)
覆盖度的影响

首先回顾一下,前面吸附能计算(一)中我们讲到的内容。
1 吸附能为初始态和末态的能量差,初始态为纯净的slab 和 O2分子或者O原子,末态为O吸附的slab
2 O2分子优化计算的时候,要注意:
i) 从数据库获取O2分子的键长,作为初始值;
ii)ISPIN = 2
iii)ISMEAR = 0; SIMGA = 0.05
iv) IBRION= 2; POTIM = 0.1

3 O 原子优化计算的时候,注意的计算细节与前面相同。额外注意的是:
i) O 原子再怎么优化还是一个O原子,所以上一行表述是不恰当的,应该是O原子的单点计算;
ii) box的尺寸为:13*14*15 Å3 或者13.1*13.2*13.3 Å3 但绝对不能为13*13*13这种正方体的。

4 怎么优化Bulk的结构,扫晶格拟合和ISIF = 3直接优化(ENCUT要大,不妨取个700 eV)


5 slab怎么优化,Selective 和 坐标后面 T F 的关系
6 O吸附模型怎么搭建,如何得到合理的初始模型(有实验值优先使用,没有的话用粗精度的初算一下)。
7 此外,还要学会怎么判断计算结束,不同类型任务结束的特征是什么?

回到上一节我们留的问题,为什么O在p(1x1)-Cu(111)表面上的吸附能是正的呢?在解释这个问题先,我们先看下面一组照片:
第一张里面,地铁车厢里面是空的,这时候你上去,座位随便挑。
第二张里面,有些人了已经占了,但还是有座位的,你的选择并没有那么多了。
第三张里面,人太多,能或者出来都是个问题,有没有座位想都不敢想了。
那么回到我们的这个问题,我们把O的吸附结构在xy平面上重复一下:

你会发现,表面上密密麻麻全是O原子(绿色的为Cu原子)!空间这么小,如果你是O原子,你愿意在这上面挤么? 你是选择空旷的车厢还是人满为患的呢?如果我是氧原子,我肯定不愿意。
所以,如果非得在这个表面上挤的话。我们就需要一些外力的作用,比如下图中的这俩年轻力壮的小伙子协警。
这俩人使的劲就是O原子的吸附能。正值的意思表明我们需要额外的力才能将其吸附在表面上。表面越挤,正值越大。

如果你还是不理解的话,我们看另外一个例子:

早上,开学了。老师有1个苹果,需要将这个苹果分给教室里面的学生。而学生还没有来齐,当你第一个到达教室时,发现整个苹果都是你的。开心程度 100%。正要吃的时候,小明进来了,
老师说你俩要分一下,你只能得到一半了,开心程度 50%; 你俩正要吃的时候,小红和小白也进来了,老师说,打住,你们四个分,于是每人只能拿1/4,你的开心程度掉到 25%了。
表面就是这个苹果,O原子就是学生,总共就这一个苹果,学生越多,平均分到的就越少。学生之间可能还会因为分的不均匀而打架(相互排斥),导致开心程度越来越低。当开心程度成负的
时候,老师就需要施展神通费心思(额外的功)逗你们开心。

看完这两个例子,你也许就明白了,为什么这个时候O原子的吸附能这么大了。太他妈挤了或者人太多,分不到苹果吃了,心里肯定不爽!
下面,我们把车厢清空,学生数目控制一下,看看心情能不能好点。

搭建p(2x2)-Cu(111)表面

1 用p4vasp打开p(1x1)-Cu(111)的CONTCAR
2 选择Edit —> Multiply cell
3 弹出的窗口,如图填入扩展的倍数:

这代表我们在x和y方向上分别扩展到原来的2倍。点击Multiply,效果如下图:

4 关闭Multiply这个窗口,p4vasp主界面左上角选择:file --> save system as


5 在弹出的窗口,选择目录,保存成POSCAR,点击OK即可。

6 这样我们就有了一个p(2x2)的slab模型了。
搭建O在p(2x2)-Cu(111)上的吸附结构

1 我们可以用之前计算的结果搭建这个初始结构:O吸附优化的CONTCAR

O原子在z方向的坐标为8.0928A。先记住这个数字

p(2x2)的Slab坐标:(在p(1x1)基础上扩展的)

在这个坐标上面修改,搭建结构:
1)添加O原子元素
2)添加O原子数目
3)添加O原子坐标
4)弄完后,保存成POSCAR

到现在,p(2x2)的slab以及O原子的吸附模型都有了,准备INCAR,KPOINTS,POTCAR以及任务脚本,提交这两个结构的优化计算。等待结束。

计算吸附能:
公式1: Eads-1(O) = E(slab+O) – E(slab) – E(O2)/2
公式2: Eads-2(O) = E(slab+O) – E(slab) – E(O)

带入数据:

Eads-1(O) = -60.61682891 eV – (-55.96049190 eV )- (-9.85498627 eV)/2 = 0.271 eV


Eads-2(O) = -60.61682891 eV – (-55.96049190 eV )- (-1.89237882 eV)
= -2.764 eV

发现吸附能从正的1.216降低到0.271 eV了。看来空间对O原子的吸附影响很大。

地铁里面空间稍微大了写,现在不需要年轻小伙子暴力推搡了,大妈指挥下就可以了。

分的苹果稍微多了写,虽然还是有些不情愿,稍微诱导一下,就开心了。

前面的解释只是用现实的例子瞎扯一顿。但发表文章的时候不能这样说啊,我们就需要一些科学和专业的解释。而在实际表面上,覆盖度影响吸附能的因素有很多。体相中电子的分布转移,与
吸附物种的成键,吸附物种之间的排斥和吸引等等。如果你想了解的更多,更专业!阅读下面这篇文献:

谷歌上可以下载免费的,有权限的也可以直接下载。类似这样已经注明的文献,请不要花时间找我要,自己去下载。
(每设一道坎,就会把很多懒家伙挡住!跨过一道又一道坎,你就把别人远远甩在后面了。所以,请自己主动起来!)

扩展训练:

1 重复p(2x2)-Cu(111)的练习,心里面默念一遍INCAR, KPOINTS, POTCAR, POSCAR。看看都有些什么需要注意的。


2 阅读推荐的文献,学习表面物种之间的相互作用,覆盖度是怎么影响吸附能的。有哪几方面?
3 本文提到了一个专业名词:覆盖度,查找相关的文献,了解这个名词是怎么回事,文献报道的覆盖度都是怎么算出来的。

总结:

本节,大师兄带你做了趟地铁,当了回幼儿园的小朋友。来体验下人多的感觉。覆盖度高的时候吸附能很小或者是正值,说明物种在表面不稳定,需要额外的力来促使它们老老实实待在表面上
。表面就那么大点的地方,空间有限,p(1x1)上吸附的时候,表面太挤了,O原子不愿意待在上面。而表面扩成p(2x2)后,空间明显大了很多,O原子虽然不情愿,但明显不像在(1x1)上那么不
爽了。从吸附能就可以看出来,降低了1 eV左右。从另一个角度来看,这明显就是一场O原子争夺表面资源的战争。

上一篇:Learn VASP The Hard Way (Ex-XX)使用超算中心的准备工作(一) 下一篇:Learn VASP The Hard Way (Ex-56)吸附能的计算(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-XX)使用超算中心的准备工作(一)


2018-03-13

Ex-XX 超算中心使用前的准备工作(一)

感谢吕梁超算中心的支持,以后VASP的学习系列练习,都将在天河二号上面进行展示操作。一方面帮助大家继续学习VASP知识,另一方面也帮助大家快速掌握使用超
算中心计算的技巧,进而避免一些焦头烂额的琐事。今天我们先讲解一下怎么在Ubuntu系统上,1)安装VPN, 2)连接天河二号超算中心,3)以及将超算中心挂载到
本地电脑上,进行文件互传。

如果你是Windows用户,管理员在发送账号的时候,已经将使用说明一起发给你了。相信大家都可以顺利链接。那么请跳过本节内容。
但是Linux系统在计算具有的独特优势是Windows所不能比的,建议Windows用户继续看下去,对以后使用Linux系统做计算会有帮助。下一节,我们介绍如何使用脚本
运行VASP软件,由于本人还在摸索,需要和管理沟通学习,大家再耐心等待一天。

如果你想要试用或者申请超算中心的机时,请加QQ群:国防科大吕梁超算中心(204521798)了解更多的信息。

1 下载linux版的VPN软件,链接:
https://www.hillstonenet.com/our-products/next-gen-firewalls-e-series/
直接跳到网页最底部,右侧点击 Linux OS 下载。
2 安装Linux 版VPN

Hillstone 官网已经给出了详细的安装说明, 链接如下:


http://docs.hillstonenet.com/en/Content/7_VPN/SSL_VPN_Client_L.htm#Starting
大家可以参考链接,也可以根据下面的步骤进行。本人直接将官网的照片复制过来了。

找到刚才下载的vpn软件: 右击 --> 点击最底部的Properties

在弹出的窗口中,将Execute的那个框选中,然后点击左上角的叉号直接关闭。然后,双击这个软件一步一步点下去,这样就完成安装啦。非常简单。
3 连接VPN

1) 打开VPN:上一步完成后,桌面上会生成VPN的快捷方式图标,双击一下,会弹出让你输入电脑密码的对话框,输入密码,点击Authenticate按钮。

2) 点击下图中的New 对应的加号,会弹出对话框,让你输入IP,账号密码

注意:
1) Host的IP超算中心给了三个,大家根据自己的网进行选择,如果一个不行,换另一个试试即可。
2) Port 就是 4433
3) 图片中让输入的是VPN的账号和密码!!!一定要选中Remember Password. 因为管理员给的密码实在是太安全了!
4) 点击OK就开始连接了
5) vpn的官网的填写说明,大家把网页中的第三条展开就可以看到了

6) 连接过程以及成功是这个样子:
4 通过ssh连接超算中心服务器:

VPN登录成功后,后面我们就可以通过Terminal连接超算中心了。为了方便,提高效率,强烈建议大家按照下面的步骤进行:

1) 安装sshfs 用于把超算中心挂载到你的本地电脑上,后面再细说,先安装好。

sudo apt-get install sshfs 一键搞定。

2) 在home目录下建一个文件夹,名字为: lvliang
3) 将图片中的内容加入到 .bashrc 文件中。
4) 保存后,更新下 .bashrc 文件,然后直接敲命令: lvliang 即可连接超算中心。
第一次连接,可能会出来一堆提示东西,输入Yes ,回车即可。
输入自己的超算中心账号密码,就可以登录啦。

上图中,通过ls命令,你会看到超算中心有几个文件夹。那是我登录后新建的,新用户刚开始的时候主目录下面什么都没有。强烈建议大家建一个 bin 文件夹,用来存


放脚本。直接 mkdir bin 即可。

5 上传或者下载数据(sshfs的使用)

1) 挂载超算中心到自己的本地电脑。
打开一个新的终端,输入前面我们写进.bashrc文件中的命令: mlvliang
m是mount的缩写。如下图,输入超算中心的密码:

进入我们之前在自己电脑目录新建的 lvliang 文件夹。这样,超算中心账户里面的内容就可以直接通过我们的电脑访问了。

2) 例子1 :
超算中心登录后,我们新建了一堆文件
在挂载的目录里面,也同步出现了。

3) 例子2 :

我们将电脑桌面的内容复制到lvliang文件夹中,超算中心的目录下也同步出现了。

4) 注意事项:
1) 必须通过mlvliang这个命令将超算中心挂载到本地电脑上之后,我们才可以互传文件。
2) 如果还没有挂载,就将电脑的内容复制到lvliang这个文件夹中,那么挂载之后,服务器中不会显示刚刚复制的内容
3) 不要用鼠标点击电脑里面的文件夹查看文件,这样会很慢,只能使用命令!!!切记
4) 卸载的时候,使用mlvliang 这个命令,然后输入自己的电脑密码(不是超算中心的了。)
5) 我们这样做,相当于把超算中心当做一个移动硬盘来使用,非常方便。

本节就先介绍到这里,大家可以通过这样的方式,安装VPN,连接以及挂载超算中心,并将自己的文件上传到超算中心(比如VASP的那一堆POTCAR文件,自己的脚本
,任务文件等等)。先把准备工作做好,下一节我们就可以提交任务进行计算了。

上一篇:Learn VASP The Hard Way (Ex-XX)使用超算中心的准备工作(二) 下一篇:Learn VASP The Hard Way (Ex-57)吸附能的计算(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-XX)使用超算中心的准备工作(二)


2018-03-14

Ex-XX 使用超算中心的准备工作(二)
天河二号(吕梁超算)提交VASP作业的脚本和命令

上一节我们讲了怎么连接天河2号超算中心。这一节,我们主要讲一下VASP提交任务的脚本和命令。在天河2号提交任务非常简单,大家只要记住:一个脚本和一个命令就可以了。首先我们看
一下提交任务的实例:

上图中:
1) vasp544_sub 是提交任务的脚本
2) 下面框中是内容,一共有三行
3) 提交任务的命令:yhbatch -p lvlianghpc -N 1 -J slab vasp544_sub
-p lvlianghpc 是指定提交任务的队列
-N 1 是提交任务的节点数(每个节点24核)
-J slab 是提交任务的名字
4)如果你想用2个节点,提交一个名为 bigbro的任务,可以使用下面的命令:
yhbatch -p lvlianghpc -N 2 -J bigbro vasp544_sub

提交任务脚本的内容

前面我们用的是5.4.4版本的vasp提交的作业,如果我们要算过渡态,需要用到5.3.5的版本。我们需要这样修改一下脚本。将第五行注释掉,然后加入第六行的内容(最后一行)。前面几行我
们不要动,直接放那里不管就可以了。
对比下最后的两行,其实修改的仅仅是vasp的可执行文件的目录。那么我们怎么样确定自己所需要vasp版本的目录呢?

1)在天河2号,所有的软件都装在 /THFS/opt 这个目录下。Vasp也不例外,如果你进入这个目录,就会发现它。

2) 进入5.3.5_neb的vasp目录,vasp的可执行文件有点不好找,因为它藏在一堆文件里面。不过根据字母排序,找到vasp也不是很难。

如果你找到了这样绿色的vasp文件,说明他是可执行的。我们以后就用它来计算自己的体系。
通过 pwd 这个命令获取路径,将版本中的5.4.4的路径替换成我们所需要的。

路径最后记得加上可执行VASP文件的名字。 即 XXX/vasp.5.3/vasp
上图中注释掉哪行中,5.4.4版本的可执行文件名字为: vasp_std

挂载超算中心到本地电脑上的时候,有时候因为网络连接,会出现下图中的错误。这时候我们先使用ulvliang 把服务器umout掉,然后再重新挂载就可以了。

上图中,将超算中心的几个脚本复制到本地电脑上。其中qsub 是本人改进之后的一个脚本,将这个脚本放到 ~/bin 目录下,在终端进入自己的任务目录,直接敲 qsub 就可以提交任务了。

#!/usr/bin/env bash
rm job_sub
echo '#!/bin/bash' >> job_sub
echo 'export LD_LIBRARY_PATH=/THFS/opt/intel/composer_xe_2013_sp1.3.174/mkl/lib/intel64:$LD_LIBRARY_PATH' >> job_sub
echo 'yhrun -p lvlianghpc -n 24 /THFS/opt/vasp/5.4.4/vasp.5.4.4/bin/vasp_std ' >> job_sub
#echo 'yhrun -p lvlianghpc -n 24 /THFS/opt/vasp/5.3.5_neb/vasp.5.3/vasp' >> sub
yhbatch -p lvlianghpc -N 1 -J test job_sub
以上三个脚本的下载链接:https://pan.baidu.com/s/1AY6YUC97uTXsNpRLgA6hFQ 密码:bfo5

到此为止,连接VPN,天河2号,挂载服务器到本地电脑,互传文件,以及使用脚本提交vasp任务。你已经都掌握了。后面的就是好好利用超算中心,
得到自己所期望的数据,好好搞科研了。如果想试用超算中心,加下方的QQ群,或者直接联系超算中心即可。

超算中心试用联系方式:lvlianghpc01@163.com;
联系电话(微信):15383480556 18903588277

上一篇:Learn VASP The Hard Way (Ex-58)吸附能的计算(三) 下一篇:Learn VASP The Hard Way (Ex-XX)使用超算中心的准备工作(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-58)吸附能的计算(三)


2018-03-14

Ex58 吸附能的计算(三)
扩胞需要注意的事项

前面一节我们将Cu的slab表面扩展成p(2x2), 然后放了一个O原子在上面吸附。最后发现与p(1x1)表面上吸附相比,O原子的吸附能从+1.2 降低到0.2 eV. 说明覆盖度高的时候,O原子的吸附很


差。吸附能受覆盖度的影响很大。

那什么是覆盖度? Surface coverage(θ)


从字面上理解,就是表面被吸附物种覆盖的程度。一个固定大小的表面,如果上面吸附的某一物种越多,那么说它的覆盖度也就越大。也可以理解为:该物种在表面上的浓度也就越大。在多相
催化的过程中,吸附是第一步。而在催化剂表面上,其活性位点数量是有限的(N个),如果N1个活性位点被吸附物种占据了,那么此时的覆盖度:θ= N1/N。如果所有的活性位点都被占据
了,那么覆盖度就是1。 这个相信学过物理化学,以及相关多相催化基础知识的都能理解。 如果不知道的,请自己查找相关参考书学习,主要是在Langmuir 吸附那一部分。

在表面计算中,覆盖度我们通常使用原子数目的比来表示。首先,在p(2x2)的Cu(111)表面上,有4个Cu原子,我们可以认为活性位点是4个。当我们放一个O上去后,占据了一个Cu,那么此时
的覆盖度是1/4。前面我们在p(1x1)的表面上放了一个O,可以认为是Monolayer的O吸附,也就是覆盖度为1。
1)之所以用原子数来表示,而不用表面积。是因为吸附的物种往往不像O原子这么简单,比如甲醇,乙醇,等等。这些表面上吸附物种的面积很难算,将它们的面积除以表面的面积,可行性
不大。
2)师兄,如果我的吸附分子很大,比如苯环。 1个Cu原子上面放不下,那该怎么表示?

首先你需要扩胞,如上一节所讲的,将表面扩大到能容得下苯环为止。
1)比如我们将表面扩展成p(3x3)后才能放上去一个苯环,那么此时的覆盖度就是1/9。虽然数值很小,但对于苯环来说,Monolayer的吸附,按照这个定义,其覆盖度就是1/9。
2) 如果我们知道一个苯环可以占据9个表面的原子,那么我们将这9个原子看做一个活性位点,那么覆盖度就是 1/1。第一个1指的是1个苯环,第二个1指的是1个活性位点(9个原子)。
大家在计算的时候,一方面参考专业书,文献中的表示,另一方面根据自己的体系需要,只要将问题描述清楚就可以了。
这就是对应我自己要做的内容了
这里是扩胞才能放下一个苯
继续回到上一节留的另一个问题:扩胞时有什么需要注意的事项。 环,
1)扩胞的操作已经展示给大家了,相信这不再是什么难事了;
扩胞后的结果见下图:
2)扩胞后计算,我们需要注意的主要是KPOINTS这个文件。前面p(1x1)-Cu(111),我们用的K点是:13x13x1。那我们扩完胞后,晶格变大了,还能继续用13x13x1吗?
答:可以用来计算。但结果不能用来和其他K点的进行比较。

什么意思呢?
这里大师兄想要表达的是:如果你想要对比两个计算结果,首先要保证它们在一个计算的等级上, 即两个计算K点的网格密度是一样的,或者差不多的。在Reciprocal space中,晶胞的长
度为2π/a。然后我们将这个长度分割成k段。每一段长度为: 2π/ka
我们扩胞后,晶胞长度变为2a,则在Reciprocal Space中,晶胞的长度为2π/2a =π/a。
如果我们用之前的KPOINTS,那么就会将π/a分成k段,每段长:π/ka, 由于分的更细,这会导致扩胞后K点的密度更大。
为了保持和扩胞前的密度一致,我们需要将π/a 分割成 k/2 段,这样每段长为2π/ka。

因此当我们扩胞后,KPOINTS如果保持不变,会导致前后两个计算的K点密度不一致时,从而计算的精度也不一样,所以两个结果没有可比性。
师兄,你说了这么多废话。那我们该怎么办呢?

很简单,将K点数目减小就可以了。 前面p(1x1)我们使用的是13x13x1,那么扩胞成p(2x2)后,K点就需要相应的减小到7x7x1。更简单一点,回想我们前面说到的那个经验选择。K * a 的
取值范围。

https://wiki.fysik.dtu.dk/gpaw/exercises/surface/surface.html

我们只要保证所有计算中: K * a 的数值差不多就OK了。

所以,当你看到这里,你就可以随便扩胞了,什么p(2x2), p(3x3), p(4x4)啦,扩胞后都知道该怎么选择K点并修改KPOINTS了。

那对于其他输入文件呢?

INCAR:
此时,对于Cu体系来说,可以保持不变。

但有些与原子数目相关的参数,你还是需要在INCAR里面修改,保持与新的POSCAR对应。

比如:
1)MAGMOM, 但如果你的体系是具有磁性,需要重新设置MAGMOM。
2)更复杂点的体系,如果你的体系是不仅有磁性,还是反铁磁,当你扩胞后,你还要给不同的原子设置磁矩的方向。

POTCAR 保持不变

提交任务的脚本: 扩胞后,由于体系变大, 计算会变慢,为了加快速度,我们可能会需要增加节点数目。

计算步骤:

扩胞后,很多人问计算吸附能的步骤,不清楚该怎么样进行。

第一步:优化扩胞后的Slab 模型: 因为扩抱前已经relax过了,所以这一步很快就会结束;得到新的slab能量。


第二步:在第一步基础上搭建吸附模型; 然后优化,得到slab+吸附物种的能量。
第三步:套公式,计算吸附能。

当然了,如果你经验丰富,计算的够多了,可以尝试这样做:
第一步:优化扩胞后的Slab 模型: 因为扩抱前已经relax过了,所以这一步很快就会结束;得到新的slab能量。
第二步:在扩胞后的slab模型上直接搭建吸附模型,然后优化,得到slab+吸附物种的能量。
第三步:套公式,计算吸附能。

这两种做法,最后的结果应该是一样的,如果有差别,也是微乎其微,可以忽略不计。

另一个很常见的问题是,slab的表面我应该放开还是固定呢?

严格来说,slab的表层原子应该是弛豫的,也就是坐标后对应的是 T T T,这样更符合物理化学意义,因为催化剂表面的原子不可能会不动。厉害的时候,吸附物种还会
导致表面重构。所以你在阅读文献,会发现理论部分都会写:top two layers 放开来模拟表面,底部的原子固定来模拟体相等等这样类似的话。

但是,将表面原子放开后,会导致计算量的增加。如果你的计算量很大,可以测试下放开,或者固定前后,吸附能的差别。基本上应该在一个很小的范围之间。
这样你的心里就有数了。

注意:在计算纯的slab能量时,表面应该是放开的。不要直接拿刚刚切好的表面,直接固定住就开始算吸附。

如果你想固定住表面来算吸附能,那么i)先优化slab模型,ii)固定表面原子,iii)放吸附物种优化。

目前计算能力基本上可以完全满足放开表面原子的计算。所以,大家不要纠结这个问题。表面的原子能放开,尽量放开。

此外,本人的建议是,可以先固定住表面,算一遍吸附,大体有个感觉。
然后在此基础上再放开表面原子,继续优化。(这种做法就相当于通过固定表层原子,来获取一个理想的吸附初始模型!)

如果实在是不放心,那么就找一篇和你工作很相近,体系类似的计算文章,看看别人怎么设置的,照猫画虎就可以了。

参考阅读:
Density Functional Theory:A Practical Introduction, Chapter 3:Nuts and bolts of DFT calculations

有版权的直接下载:http://onlinelibrary.wiley.com/doi/10.1002/9780470447710.ch3/summary
没有版权的到:Ex18 下载整本书: 链接: http://www.bigbrosci.com/newsitem/277955129
扩展练习:

另一个无关痛痒,但对后面工作效率会造成影响的问题就是:

当扩展完之后,你会看到,Cu原子的坐标,是按照每个单胞中的坐标来排列的。在p(2x2)中有4个p(1x1)的单胞,先列出来第一个(1x1)中4个原子的坐标,然后再列出来第二个(1x1)的,以此类
推。但是,比如我们想仅仅放开表面的第一层原子(也就是纵坐标为6.26的所有原子),就得把纵坐标为4.189的原子挨个由T T T 改成 F F F (图中箭头所指的部分)。这样会很麻烦,还浪费
很多时间。怎么解决这个问题,快速将表层,次表层原子固定或者放开呢 ?

上一篇:Learn VASP The Hard Way (Ex-59)吸附能的计算(四) 下一篇:Learn VASP The Hard Way (Ex-XX)使用超算中心的准备工作(二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-59)吸附能的计算(四)


2018-03-15

Ex-59 吸附能的计算(四)
sortcar.py

丑话说在前头,本节内容有点多,大家慢慢消化。掌握本节的核心思想,对于后面提高你的工作效率,节省时间有着很大的帮助。

前面一节,我们在扩展练习中提到了扩胞后,原子坐标的后面T T T 和 F F F 修改的问题。
因为扩展后原子坐标是按照单胞为顺序排列的,如果想要将表面的原子快速固定或者放开,那么我们就需要知道表面原子所在的行数。

上图中,p(2x2)的POSCAR命名为POSCAR-2x2,最表层原子所在的行数为:13,17, 21, 25,次表层的原子所在的行数为: 12, 16, 20, 24。


仔细分析下,你会发现,表层原子的行数为:9 + 4*n
次表层的行数为:8 + 4 * n,其中n = 1-4,4表示在扩完后的slab模型里面有4个(1x1)的单元。
Sed用来写坐标的。
有了这个关系,我们就可以通过sed命令任意固定这两层的原子了, 命令如下:

for i in {1..4}; do sed -i "$((8+4*$i)), $((9+4*$i))s/T T T/F F F/g" POSCAR

或者:

for i in {1..4}; do sed -i "$((8+4*$i)), $((9+4*$i))s/T/F/g" POSCAR

效果如下图:

通过sed命令快速将表层原子批量固定住。

我们还可以只放开最表层的原子,在前面结果的基础上可以使用命令:

for i in {1..4}; do sed -i "$((9+4*$i))s/ F F F/ T T T/g" POSCAR

或者:

for i in {1..4}; do sed -i "$((9+4*$i))s/ F/T/g" POSCAR

使用sed命令快速将最表层的原子批量放开!
Soooo Easy!!!再也不用挨行修改T T T 或者F F F 了。

方法二:

什么,原来还有第二种方法? 这种方法是本人常用的。给大伙说实在话,前面的方法是本人在写本书的时候临时想起来的。本来打算主要讲解的是下面的这两个。前面我们提到,在p(2x2)的sl
ab模型中,原子坐标是按照p(1x1)的单元排列的。既然我们想根据层数固定原子,那么我们可以将原子按照层数来排列啊,这样就可以方便的选择同一层的原子了。

那么该怎么将它们按照层数排列呢? 这时候你应该想到,不同层之间的原子,它们的坐标在z方向是不同的。有了这个依据,我们就可以根据z方向坐标的大小来排列原子了。

首先我们先用一个笨方法实现所预想的小目标。(刚刚提到的方法2)

第一步:将坐标复制到excel表格里面。本人用的是libre office(linux下面的Microsoft)。不过功能大同小异,Windows用户按照做就可以了。

第二步:选中所复制的数据,然后根据图中的D列来排序。

排序完的结果, 如下图:

从图中,我们可以看出,原子根据在z方向上的坐标分成了4部分。

注意:这里我们所有原子都是Cu原子,因此全选了。如果你的体系中有好几种不同的原子,你需要按照元素,逐一进行排序。
比如体系中有C H O,我们先将C原子按照Z方向坐标排序,然后再排H原子的,最后再排O原子的。要保持和POSCAR前面元素顺序一致。
排序完成之后,将POSCAR中的坐标替换为Excel中的数据。

这样的话,我们的模型就搞定了。剩下的就是使用sed命令批量替换T T T和 F F F了

但是,师兄等等,上图看起来坐标很乱啊,结构能用吗? 放心,绝对可以用。

如果不放心的话,可以用p4vasp打开一下,然后重新保存成POSCAR即可。如下图:
最终我们的POSCAR是上面这个样子的

从图中可以看出来,次表层的原子在18-21行,最表层的原子在22-25行。
所以可以这样使用sed命令来快速实现表层原子的固定与弛豫。

方法三: 使用脚本。

师兄,这个问题竟然还可以使用脚本来解决?

当然了,使用鼠标拖拖点点的事情,一般都可以用脚本来实现。脚本是用python写的,本人给它起了一个高大上的响亮名字:sortcar.py。

由于p(2x2)的slab坐标前面已经用过了,下面我们用p(3x3)的slab来演示一下脚本的使用。
新鲜出炉的,等待被sort的p(3x3)slab的POSCAR

被sort过的POSCAR

使用sortcar.py 将坐标按照z方向大小排列。输出文件为XXX_sorted,其中 XXX为我们想要排列的POSCAR或者CONTCAR。


如果你的VASP坐标结构文件名字为:BigBro,那么被sort之后,输出文件就是: BigBro_sorted。
脚本这么神奇,内容如下:

注意:

1) 这里我们用的是Cu(111)的例子,比较简答,脚本的威力展示不出来。
2) 如果你的体系有很多不同的原子,脚本首先会将同一种元素原子的坐标排列,然后依次类推。
3) 有些地方可能有些冗余。但本人一直在用,效果还不错。
4) 本人建议,只针对表面使用这个脚本。也就是吸附前的slab模型。如果你放了吸附物种,不建议使用,因为吸附物种间不同原子之间的连接顺序可能会被打乱。
5) 在放吸附物种之前,最好将表面先排序完,怎么做,前面三种方法任选。
6) 脚本的话已经上传,大家可以点右侧的链接随意下载:(密码:BigBroSci) sortcar.py
7) 如果发现里面的错误,或者有哪些可以更新改进的地方,也欢迎大家提出来或者把改进的脚本分享出来。

总结:

本节讨论的内容与科研关系说大不大,说小也不小,主要是在解决工作效率和时间上。想象一下,如果你的slab中有很多原子(金属氧化物,硫化物等),而且还不是同一种的,你用前两种方
法的时候,就得十分小心了,此时脚本的作用就显示出来了。
上一篇:Learn VASP The Hard Way (Ex-Bader):Bader电荷分析的常见问题 下一篇:Learn VASP The Hard Way (Ex-58)吸附能的计算(三)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-Bader):Bader电荷分析的常见问题


2018-03-20

Ex-Bader2 Bader电荷分析的常见问题

最近又有人问Bader电荷的问题了,现在将大家关心的问题做个总结。

1 VTST的网站:

很多人反映打不开,这里大师兄又检查了一遍。 发现超链接给弄错了,很认真地给大家道个歉。
前面Bader计算的链接现在已经更新改正过来了,大家也可以直接点这个链接:

http://theory.cm.utexas.edu/henkelman/code/bader/

Henkelman 课题组主页:
http://theory.cm.utexas.edu/henkelman/

2 电荷问题:

Bader电荷分析只是定性的辅助工具,得到的结果肯定也是定性的。大致分析原子上的带电情况即可,不要去较真小数点后多少位,一般来说小数点后两位就足够了。

3 ACF.dat 文件

ACF.dat 中的CHARGE那一列,对应的是每个原子上总的价电子数目。

划重点: 1)总的 2)价电子数目

4 如何判断原子的带电情况

你需要用CHARGE那列的数值去减去该原子对应的POTCAR 中的价电子数目。

5 怎么才能得到POTCAR中该原子的价电子数目呢?*

打开POTCAR,查找关键词:ZVAL ,后面对应的就是价电子数目,更方便点:
grep ZVAL POTCAR
划重点:不要以为自己元素周期表倒背如流就可以随便设定原子的价电子数目。
POTCAR中原子的价电子数目有些和周期表是一样的,比如H。
有些差别是很大的。比如:Europium [Xe]4f76s2, Lanshipunvboshanyougatedihuoerdiuyilu 中的you。
You有9个价电子,但POTCAR中有17个。

6 减完之后怎么分析?

如果一个原子POTCAR中的电子数为5.

1) ACF.dat中该原子对应的CHARGE为6.2 . 6.2-5=1.2, 这说明该原子得到了1.2个电子。虽然是+1.2,但它的化合价是-1.2价。


2) ACF.dat中该原子对应的CHARGE 为 4.3, 4.3 – 5 = -0.7, 说明该原子失去了0.7个电子,虽然是负值,但它的化合价是 + 0.7 价。

注意:这里我们说的化合价,是基于Bader电荷分析得到的。由于Bader电荷分析是一个经验性的定性分析工具,这些化合价的值只能用来参考判断体系中电子的转移情况。
大家千万不要把这里的化合价跟我们中学所学到的化合价的概念混淆了。因为大部分的情况下,bader电荷分析出来的化合价与我们在教科书里面所学到的化合价还是有区别的。

7 师兄,前面扯了那多么,直接用POTCAR中的价电子数减去CHARGE对应的不就更直接了?

是的,你很聪明:对应前面的例子:

1) 5 – 6.2 = -1.2 说明该原子是-1.2价,得到了1.2个电子,


2) 5 - 4.3 = 0.7 说明该原子是 +0.7 价,失去了0.7个电子。

所以得失电子和化学价是反着的。这点你能把握住,就会分析了。

8 总结:

Bader电荷分析并不神秘,你需要做的有两点:

1) 去看VTST的官网,知道怎么去算,这个本人也讲过了,见: http://www.bigbrosci.com/newsitem/278134340

2) 怎么通过得失电子判断原子的带电情况。ACF.dat中的CHARGE列,以及POTCAR中的价电子数。

上一篇:Learn VASP The Hard Way (Ex-60)吸附能的计算(五) 下一篇:Learn VASP The Hard Way (Ex-59)吸附能的计算(四)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-60)吸附能的计算(五)


2018-03-24

Ex 60 不同吸附位点模型的搭建

前面我们发现将p(1x1)-Cu(111)的表面扩展成p(2x2)后,由于O的覆盖度降低了,O原子的吸附能能+1.2 eV降低到 0.2 eV作用,说明O原子更加容易吸附在表面上了。


当你仔细观察p(2x2)的表面,你会发现,表面上不仅仅有Cu原子的上方可以放O原子,还有其他的位点。如下图:

如果我们想分析下不同位点对吸附能的影响,首先我们需要搭建模型,然后重复O原子的吸附优化步骤。本节主要简单介绍一下如何快速搭建不同的吸附位点模型。
1 观察不同位点的结构特征:
在面心立方金属的(111)表面上有4种不同的位点:

1)Top位,前面已经花了很多时间介绍了,本节就不再啰嗦
2)Bridge位:从名字大家就可以推断这个位点的吸附为两个top原子的中间。
3)Fcc位和hcp位:这两个吸附位点都是在三个原子的中心,为hollow位。

那么这两个位点怎么区分呢?

如果表面的Hollow位正下方(即第二层,图中黄色的)有原子,为hcp位,在第三层的话(图中红色的),则这个hollow为fcc位。
由于fcc位点的原子在第三层,离表面最远(far),大家把英文单词的far 和 fcc位的第一个字母关联起来即可。远的那个就是fcc,近的是hcp。
注意: fcc 和 hcp 分别是 face centered cubic 和 hexagonal close-packed 的缩写。

2 怎么搭建bridge和fcc,以及hcp位的吸附模型?
1)Bridge位: 这个位点在两个原子的中心。设两个原子的坐标分别为(x1,y1, z1)和(x2, y2, z2),它们中心得坐标为: (x1+x2)/ 2, (y1+y2)/ 2, (z1+z2)
/ 2。在这里,z1和z2 是相等的。所以我们可以通过两个原子的坐标,计算一下中心的坐标,然后按照之前O原子搭建的步骤,添加O原子的Bridge位的坐标即可。
2)Fcc位和hcp位的话,就更容易了,前面我们知道它们正下方分别为第三层和第二层的原子。那么我们在这两层随便取个原子,x和y 方向的坐标就确定了。
3)关于z方向的坐标,大家可以想象一下,如果O原子从top位移到Bridge,fcc和hcp,由于和O成键的原子多了,也就是O和表面结合地更强了,那么它在z方向的坐
标肯定比在top位上要小。所以在这三个构型的z坐标,我们可以在top位O的基础上稍微调小一点。那么小多少呢? 一般来说0.1-0.2Å就可以了。

3 使用p4vasp搭结构
前面介绍的方法是直接修改POSCAR来搭建模型,对于O原子的吸附这种简单的模型,大家都还可以胜任,但如果体系复杂了,比如一个苯环,乙醇分子等等,这样我
们的计算坐标的工作量就有点大了。此时,p4vasp的优势就开始慢慢显示出来了。

3.1 从top到bri
1) 首先,我们要有一个O原子在top位上的吸附结构
2) 然后选择top位的原子和相邻的那个原子,(p4vasp选中的结构看起来不是很清楚,见黄圈标出来的那两个)

3) 选则 Edit –> Move Atoms 后会弹出这样的界面:


按照图中的1 2 3依次点击, 你便会获得一个Vector。也就是从5到7号原子的一个向量。
但我们如果按照这个向量平移O原子的话,只会把它从5号原子移动到7号原子上,而不是Bridge的位点。
前面我们说了,Bridge的坐标就是这两个原子连线的中心。所以,我们把Vector减小一般就可以了。

修改完Vector之后,我们便可以移动O原子了,这里注意,要把前面选中的5 和 7 号原子换成 O,要不然你移动的是 5 7 号原子而不是O。最后点move,效果如下:


这样我们便获得了Bridge的吸附结构。
前面提到,我们在搭建Bridge结构的时候,O原子的坐标可以比Top位的稍微低一些,这个操作怎么实现呢?
1) 首先选中氧原子,
2) 在Vector那一行修改移动的位置即可。如下图:

点击move ,保存POSCAR即可。

3.2 从Bridge 到 Hcp:

1) 选中O原子和HCP位下面的Cu原子,并获取Vector

2) 修改Vector在z方向的大小。
点击 Move,效果如下:

保存成HCP对应的POSCAR即可。

3.3 从HCP到FCC
1)选中O原子和FCC的一个原子,获取Vector

2)修改Vector在z方向的大小,由于fcc和hcp的吸附很接近,直接平移即可,也就是z方向大小为0
点击move,最终的fcc结构,如下图:

保存POSCAR。

注意:

保存结构的时候,可以自己建对应的文件夹,在文件夹里面将结构保存成POSCAR,
也可以保存成类似POSCAR-fcc, POSCAR-hcp, POSCAR-top这一种的名字,计算的时候,将它们重新命名为POSCAR就行了。

总结:
本节,大师兄主要给大家介绍了如何在表面上,使用p4vasp平移原子来搭建不同的吸附位点模型。使用p4vasp搭结构非常方便简单,也会加深你对模型结构的理解,另
一方面,使用这一种操作的话准确性更高,搭建出来的模型比自己手动放原子要合理很多。所以强烈推荐大家使用p4vasp。

上一篇:Learn VASP The Hard Way (Ex-61)吸附能的计算(六) 下一篇:Learn VASP The Hard Way (Ex-Bader):Bader电荷分析的常见问题
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-61)吸附能的计算(六)


2018-04-04

Ex61 吸附位点对吸附能的影响

前面一节我们搭建好了p(3x3)-Cu(111)表面上不同吸附位点的O原子吸附模型。(fcc, hcp, top以及bri)也就是我们有了4个POSCAR。下面我们计算O原子在不同位点上的吸附能。根据吸附能

的公式,我们还要有Cu(111) slab的能量。总共5个计算。O2的前面已经算了,这里就不重复了。

1 准备工作 :

INCAR:和前面p(1x1)的计算一样

KPOINTS:根据前面我们经常提到的经验规则:k*a=30

POSCAR:已经准备好

POTCAR: 根据POSCAR生成对应的POTCAR。

提交任务的脚本或者命令。

2 天河 II号提交任务

前面我们已经讲解了如何在天河2号上提交任务,Learn VASP 系列的前面几节也介绍了一些相关的批量操作知识。

下面简单通过实例操作展示下批量提交任务的一个流程。
其中qsuball是本人在.bashrc文件中,给批量提交任务的命令行随便起的一个名字,详见前面关于alias的使用介绍。

alias qsuball='for i in *; do cd $i ; qsub ; cd $OLDPWD; done'

qsub 是我们在超算中心提交单个任务的脚本,我们在前面的一节中已经讲过了,详见:http://www.bigbrosci.com/newsitem/278168057

也可以点击文章底部的链接下载本节所有相关的脚本。

如果你下载或者自己手动制作脚本之后,记得走一遍下面的2个步骤。

1) chmod u+x qsub (赋予可执行权限)

2) mv qsub ~/bin (放到 ~/bin 文件夹下)

3 查看结果

等待任务排队,计算,结束。一个任务结束后,我们需要做的肯定就是检查结果了。那么改怎么样检查结果呢?这里列举出本人常用的几个方法和步骤。

1) 查看OSZICAR

i) 在查看OSZICAR之前,我们回顾下前面的INCAR

这里我们设置了NSW = 500,也就是允许本计算最大的离子步数。

ii) 再看下OSZICAR的末尾部分, 命令: tail OSZICAR


从这里可以看出来,经过25个离子步,我们的计算就已经停止了,说明收敛了。

2) 查看OUTCAR

对于VASP的所有计算来说,只要你看到这样的结果,说明你的任务已经算完了。这里你要记住:算完和收敛不是一回事。

比如你设置的NSW = 500, VASP优化了500步没有收敛的话,会自动停止,也会出现上图的结果。

怎么查看收敛呢?

i) 可以对比计算的离子步和我们设置的离子步。如果实际计算得了离子步小于INCAR中的,任务就收敛了。这也是前面查看OSZICAR的目的。

ii)可以通过OUTCAR里面的关键词: reached

如果你看到最后面的: Stopping structural energy minimisation

这就表明你的优化任务已经完成。

而事实上,的确有很多人把这句话误认为是计算出错了,然后在群里面求助,本人实在是想不通。

4 删除VASP乱七八糟的输出文件
计算完成之后,VASP会出现很多平时我们用不到的文件,CHG CHGCAR WAVECAR 这三个很大。由于计算目录下的存储空间有限。本人计算的时候,一般都默认VASP不写入这些文件,此外

在表面结构优化的时候,EIGENCAL, IBZKPT,REPORT,DOSCAR,以及超算中心与任务相关的输出文件:slurm-XXX 文件,一般来说正常计算结束后,我们也不需要。

因此,本人写了一个小脚本,用来删除这些乱七八糟的文件。脚本运行效果如上,脚本内容如下:

大家可以针对自己的计算任务,修改rm XXX 哪一行中的文件名。

5 获取能量,计算吸附能

上图中还运行了一个脚本(ta.sh),就是提取当前目录下,所有计算结果的能量。也是本人临时写的。有兴趣的可以自己照着写一遍,然后运行下。有了上面的数据,我们就可以进行吸附能的

计算,如下图:

一般来说,使用eV作为单位,精确到小数点后面2位即可。整理下表格:
从上图我们可以看出来,这四个位点的吸附能强弱顺序为: fcc ≈ hcp > bridge > top

6 扩展练习

1) 学会如何判断计算正常结束,并且优化达到收敛的标准了?

2) 总结并思考不同位点的吸附能的计算。

3) 学会判断稳定的吸附位点。

4) 思考下计算结束之后,除了我们讲的这些,还有那些需要检查的?

5) 本节的三个脚本:

i) qsub (天河II号提交任务)

ii) rmvasp.sh (删除乱七八糟文件)

iii)ta.sh (获取当前目录下,所有计算任务的能量)

可以通过点击下面的链接下载: 密码: BigBroSci (有大小写)

天河II号脚本下载

点上面链接。本节完。

上一篇:Learn VASP The Hard Way (Ex-62)吸附能的计算(七) 下一篇:Learn VASP The Hard Way (Ex-60)吸附能的计算(五)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-62)吸附能的计算(七)


2018-04-08

Ex62 计算结果的可视化

前面我们得到了不同吸附位点上吸附能的顺序,但结构是什么样子的呢?我们优化完的结果对不对?这还是一个问题。因此我们需要查看一下优化完的结果。

1 获取(下载)CONTCAR

没有结构,我们看个屁啊,所以第一步就是把超算中心的计算结果下载到自己的电脑里面。这里我们说获取或者下载CONTCAR,而不是OUTCAR等其他VASP的输入文件,原因在于本人这边
网速传输太慢了。所以我的策略是能量等信息在服务器里面直接获取,结构的话只下载CONTCAR。如果网速允许的话,可以把所有的计算结果下载到自己电脑里面,这样查看更加方便。

上图中,我们先挂载超算中心到本地电脑上,然后将计算目录下的CONTCAR复制到本地桌面上。(ccall 这个命令)
for i in * ; do if [ -e $i/CONTCAR ]; then mkdir ~/Desktop/$i; cp $i/CONTCAR ~/Desktop/$i ; fi; done
前面一节的打包的文件中也有一个 ccall.sh的脚本。效果和这里是一样的。
备注:
由于本人这边传输很慢,即使挂载了超算中心到本地电脑上,访问内容依然需要下载数据,只是不显示传输罢了。如果你的网速很给力,
可以直接通过自己电脑进入超算中心的目录,进行下面的操作。

2 使用ASE查看结构:

ASE 是Atomic Simulation Environment的简称,下载安装见:https://wiki.fysik.dtu.dk/ase/


本人只会在Linux下面使用,Windows用户自行解决。解决不了,我也没有办法。如果Linux用户解决不了,那么使用后面的第二种方法:p4vasp查看结构。

这个软件的有点就是: 我们可以一次性打开当前目录下,所有计算的CONTCAR: ase-gui */CONTCAR


从而避免了使用软件挨个导入结构查看。无形中会减少我们很多的工作量。

3 使用p4vasp 查看结构(Ubuntu下面唯一推荐的软件)
这里,p4vasp和前面说的ASE一样,也可以一个命令打开所有的计算结果。

作为p4vasp的忠实粉丝,这也是本人唯一推荐的Ubuntu系统下查看,搭建结构的软件。
i)使用p4vasp可以非常容易地进行原子替换,平移,旋转等基本操作。
ii)可以查看VASP的结算结果,DOS,能带,优化过程等等。
iii)Windows 系统下p4vasp的功能有些弱,除了不能批量打开文件外(可能是本人不会用),其他的和Ubuntu差不多。
iv)这个软件也有很多其他细微不尽人意的地方,但不影响我们的正常使用。
如果你刚开始接触这个软件,认真用鼠标各个地方点点操作一下,查看各个功能按钮的作用。此外,VASP官网的ppt教程中也有一些零星的p4vasp操作教程,大家可以参考一下。 详见: http
://www.bigbrosci.com/newsitem/278171036

4 其他软件:
当然了, 不论在linux还是Windows下面,都有很多查看结构的软件,比如:Jmol, Xcrysden, Molden, VESTA, Material Studio等等。
这里就不再详细介绍了,主要原因是本人不太会使用这些软件操作。目前大家需要做的就是根据自己的喜好,掌握一个软件:学会查看结构,键长,键角等信息即可。切记不可贪多,等一个软
件掌握好了之后,有余力的话再去学习另一个的操作。

5 扩展练习:

1) 自己优化O在Cu(111)表面上不同位点的吸附,计算吸附能
2) 选择一款自己喜欢的软件,查看不同的吸附结构。
3) 思考其他单原子在其他金属表面上的吸附,该如何计算?
4) 思考原子在表面上,为什么不同吸附位点的吸附能不一样?

6 总结:

本节没有什么技术难度,全靠自己亲自手动操作,使用一个软件并不是一蹴而就的过程,大家先把基本的简单操作掌握了,后面再逐渐提高自己的其他技能。此外,本节学习完之后,单原子在
表面上的吸附对大家来说应该不是什么困难的事情了。

上一篇:Learn VASP The Hard Way (Ex-63)吸附能的计算(八) 下一篇:Learn VASP The Hard Way (Ex-61)吸附能的计算(六)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-63)吸附能的计算(八)


2018-04-18

Ex 63: 闭着眼算

在进行本文的内容之前,大家先玩一个人尽皆知的小游戏:找不同。找出下面两幅图中不同的部分。

相信这个大家很快都能找出来,找不出来的话,不建议继续浏览下面的部分。

找不同2: 下面两个截图中,找出不同的部分
找不同3: 下面两个截图中,找出不同的部分

聪明美丽能干活泼善良可爱宇宙超级无敌的你会发现:

在找不同2中,两个图中内容的区别在于: POSCAR
在找不同3中,两个图中内容的区别在于: POTCAR

当你发现了这些不同之处,就应该差不多明白了,这是2个计算任务文件,一个是C原子在Cu(111), 另一个是O原子在Cu(111)上的计算。
仔细分析不同的地方,你就应该想到: 既然我们有了O吸附相关的计算文件,那么就可以在此模板基础上,快速编辑C的吸附模型,然后进行计算。

在进行下面的快速编辑模型的内容,先给大家介绍一个linux下面常用的比较不同的命令:diff。简单操作如下,更高级的大家自由去百度学习,并加以发挥拓展。

快速准备C原子在Cu(111)上吸附的计算文件:

1)INCAR 保持一样
2)KPOINTS 保持一样
3)POSCAR: 将 O 直接替换成C就OK了。
i)直接编辑,无数种编辑器任你选。不过 Windows下一定要记得编辑完后运行下: dos2unix
ii)使用sed命令: sed -i '6s/O/C/g' POSCAR

4)POTCAR:

i) 使用前面我们介绍的脚本:potcar.sh, 脚本运行例子如下图:(文章最后有下载链接,别着急问我要)

直接输入脚本名,后面跟你想要的元素名。

看下本人在天河II号服务器上的设置。

1) potcar.sh 在本人账号的: ~/bin 目录下


2) VASP所有的POTCAR文件在: ~/bin/pot 目录下
3) pot目录下,每个元素的文件夹中有2两个文件:POTCAR 和 PSCTR (这个我也不知道有什么用。)
4)新手,没有经验,不会用超算的,不会linux的,可以效仿下:

脚本下载后,将POTCAR所在的目录替换成你的: path="你的目录"。
怎么知道目录呢? 使用上图中的pwd 这个命令。
ii) 我很多时候都懒得去看POSCAR中的元素以及顺序,便打算根据POSCAR中的内容生成对应的POTCAR,于是便写了一个脚本:pospot.sh。使用方法如下:

上图运行了这个脚本两次:
1) 第一次运行的时候,目录下没有POTCAR,于是脚本直接生成新的
2) 第二次运行的时候,目录下有了一个POTCAR,于是脚本将POTCAR中的元素顺序读出来,然后删掉旧的POTCAR,重复1)的操作,生成新的POTCAR。(大师兄本人的扯淡逻辑,大家
可以忽略,脚本文章末尾下载直接使用即可。)
3) 注意:这个脚本读取的仅仅是以 元素 命名文件夹中的POTCAR。什么意思呢? 举个例子:Cu的POTCAR有:Cu,Cu_GW, Cu_pv,Cu_sv_GW这四种。脚本读取的仅仅是Cu中的POTCAR
。如果你想用Cu_pv,那么请使用: potcar.sh Cu_pv C H O 这个命令。
4) 脚本内容如下:大家可以自己手动敲一遍,找找感觉。
5)提交任务的脚本保持一样

前面所说的都是一些具体的做法,用化学的思维来说,应该叫基元反应。当你掌握了这些具体的做法后,可以通过批处理的方式将它们集成起来。本人的做法如下:

1)批量编辑POSCAR:sed -i '6s/O/C/g' */POSCAR

i) 将O原子的计算直接复制成C原子的
ii) 使用sed 批量编辑POSCAR中的元素行。

2)完成前面的一步,直接批量提交任务: 提交任务的时候,脚本自动根据POSCAR生成对应的POTCAR.
我是怎么做的呢? 在.bashrc 文件中 将pospot.sh 写到 qsuball里面了。大家可以看下我的bashrc文件:
前面批量提交了任务,但这些任务已经算起来了,但这些结果对我没有用出,纯属浪费机时,所以我要杀死它们。这里介绍给大家一个简单的批量删除任务的命令: {..},操作如下:

qdel 就是天河II号中的yhcancel命令,本人根据自己的习惯修改了一下alias中的内容(见前面bashrc文件的截图)
如果你的任务不是连续的,也可以使用这个命令, 只要把第一个和最后一个任务的ID号写在花括号里..的两端即可。非常简单,暴力和直接。

前面我们弄完了C原子的计算任务,下面我们再玩一次找不同的游戏,找不同4:下面2个截图中找出不同的地方:

师兄,这个题很简单,你要算H原子的吸附。跟前面的操作是一样的。但是,请看最后一行。
仔细的你会发现,这个题跟C的有些不一样,原因在于最底部的坐标也稍微变化了一下,从7.935 变成 7.635了。 这是为什么呢?
原因在于和C,O原子比起来,H原子很小,它在表面上吸附的时候,会更贴近表面。因此我们把z方向的坐标稍微修改了一下: 减小了 0.3 A。
这样做的话可以保证我们的初始结构更具有合理的物理化学意义,从而加快计算的收敛,节约时间。大家在搭建模型的时候,结构合理是必须要考虑的,也是脑子里要时刻思考的事情。

批量操作在H原子的吸附上,只能完成一半的任务,也就是把元素行中的C或者O改成H。而坐标的话,则需要大家自己手动修改一下(记得在Cartesian坐标下修改,如果你脑子转的很快,可
以迅速将Direct转化为Cartesian的话,也可以直接编辑Direct坐标)。
扩展练习:

1) 完成本节的所有操作
2) 计算C,H,O在Cu(111)表面上,不同位点上的吸附
3) 思考脚本的运行原理;
4) 思考如何通过:(找不同 + 写脚本)来节省自己的体力
5) 思考自己平时常见的人工错误,并尝试用脚本来解决或者避免。
6) 脚本下载链接在下面:密码: BigBroSci
Download

总结:

本文的题目是闭着眼算,不是让你真正闭着眼去提交任务,而是不通过可视化的界面进行结构的批量搭建,输入文件的批量处理以及提交任务。
希望大家在搭结构的时候,多一些思考,少一些操作,在搭建合理结构的路上突飞猛进。

上一篇:Learn VASP The Hard Way (Ex-64)吸附能的计算(九) 下一篇:Learn VASP The Hard Way (Ex-62)吸附能的计算(七)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-64)吸附能的计算(九)


2018-04-22

Ex63: CO在Cu(111)表面的吸附

前面我们讲解了一堆单原子的吸附计算和一些日常的操作,现在是时候来点复杂的操练了。这次,我们拿CO开刷,计算它在Cu(111)表面上的吸附。
由于CO比前面的O多了一个原子,复杂性稍微提高了些,但也不是太复杂。作为一个由简单向复杂体系的过渡,是一个很好地例子。
在计算CO的吸附之前,我们首先要了解以下3点:(都是教科书里面的经典内容,下面只列出来,不再细说,如果不懂的话,找本结构化学书好好啃一啃。)

1)CO的分子结构,如下图:

2) CO的几何结构:(用来搭建吸附和气相的模型)
3) CO与金属的成键方式 (用来搭建吸附模型)

2 搭建CO吸附的模型:
上一节我们学到了闭着眼操作的一些方式,这一节我们继续闭着眼搭结构。操作流程如下:
1) 将上一节中 C 原子吸附的那几个模型复制过来,进行修改:
i) 修改POSCAR中的元素(第6行)和原子数目部分(第七行),添加O原子。
2)在POSCAR的尾部,添加O原子的坐标:

可以看到上图中,最后两行的坐标一模一样,这是因为CO在表面上吸附的时候,我们假定的是直立吸附。所以C 和 O原子的坐标在x和y方向上一样。不同的区别在z方向上,即CO的键长。CO
如果吸附在表面上,肯定会和表面原子有作用,也就是所谓的活化,如果原子被活化了,那么CO键就会被削弱,具体体现在键长上。与气相的键长相比,表面上CO的键长数值更大一些。前面
我们查数据库得到CO键长为:1.138A.这里我们不妨设置成1.2A。根据这些,我们设置O原子的坐标,如下:

同样,我们可以对其他吸附位点的坐标进行类似的修改,结果如下图:
3 背一遍VASP的输入文件,检查还有那些需要修改的:
i) INCAR: 跟之前保持一致;
ii)KPOINTS:跟之前保持一致;
iii) POSCAR: 已经修改完毕;
iV) POTCAR:提交任务的脚本里面自动生成
V)提交任务命令: qsuball (前面已经讲解过了)

4 提交任务:

上图,我们删除了slab的计算,因为前面我们已经计算过了,没有必要浪费机时再算一遍。

5 思考下吸附能的计算公式:

Eads(CO) = E(slab+CO) - E(slab) - E(CO_gas)。


前面我们还忘记了CO的气相结构优化。现在我们回忆一下前面所讲的气相分子的优化:

1) 气相分子的结构模型搭建。
直接将一个Cu(111)表面上吸附的POSCAR拿过来修改一下即可:
2) INCAR:(直接拿Cu(111)吸附的修改下)
对于气相分子的优化来说:
ISMEAR = 0
SIGMA = 0.01
3) KPOINTS: gamma 点即可。
4) 这里我们没有批量提交,手动运行一下:pospot.sh脚本,生成对应的POTCAR
5) 使用提交单个任务的脚本: qsub 提交任务。具体操作如下图:

6 扩展练习:

1)完成CO吸附的计算
2)进一步熟练简单模型的闭着眼操作方式
3)复习分子气相结构的优化过程

7 总结:

本节,通过CO的吸附模型搭建,带领大家走出简单的单原子吸附,开始逐渐接触复杂的吸附计算。如果前面内容掌握了,本节就是一个水到渠成的事情。在多原子分子的吸附计算中,首先我
们要知道分子的电子和几何结构,分子哪一部分(这里的C原子)和表面成键。在本节的例子中,如果你不知道C和金属作用,你还需要计算Metal-O-C这样的结构。可能还会计算CO横着吸附
的结构,任务无形中就会增加一倍或者更多,从而造成机时的浪费。退一步来说,如果你真的不知道吸附是以什么方式进行的,想尝试N种初始的结构,我的建议是:把slab的原子全部固定住
,然后用gamma点算一下它们的吸附能,先大体上判断一下,把那些吸附特别强的结构筛选出来,用作下一步的计算。
上一篇:Learn VASP The Hard Way (Ex-65)吸附能的计算(十) 下一篇:Learn VASP The Hard Way (Ex-63)吸附能的计算(八)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-65)吸附能的计算(十)


2018-04-29

Ex-65吸附能的计算(十)
p4vasp 的旋转操作

经过前面的学习,相信对于:单原子和双原子分子的吸附,大家已经掌握了怎么搭建模型,以及计算吸附能了。下一节我们要讲的是三原子分子的吸附。在进行三原子分子吸附的计算之前,我
想是时候祭出本人使用p4vasp搭结构的一个法宝了。古人语,工欲善其事,必先利其器。所以,本人认为这一节的学习对于以后的结构搭建非常重要,尤其是对于那些使用p4vasp的筒子们来
说。说了这么多废话,本节主要内容是手动搭建一个H2O分子,并实现分子的任意旋转。

1 获取结构

首先我们先知道H2O分子的基本结构。本人的做法是去NIST数据库查找资料。操作如下图:

点击上的链接,得到下面的信息:
在NIST的数据库里面,基本的热力学数据,结构都有了。大家完全可以按照上图中的Cartesian坐标搭建一个H2O的结构,直接复制到POSCAR即可。不过,这个操作我们先缓一下,以后你有
的是机会操作。本节主要介绍下如何是从头开始搭建一个H2O分子模型,整个操作过程的学习比搭建模型的结果更加重要。

2 模型搭建:

1)从数据库获取O—H的键长为0.9578 A,∠HOH = 104.478°


2)首先,我们在xy平面内搭建一个直角形的H2O分子。

O放到原点: 0, 0, 0
H_1沿着x轴, 0.96, 0, 0
H_2 沿着y轴: 0, 0.96, 0

3) 前面说了,∠HOH = 104.478°, 我们该怎么做呢?


i) 可以自己手动算一算,其中一个H原子的坐标,然后更新坐标信息。三角公式大师兄早就忘的一干二净了,暂时跳过。

ii)通过p4vasp进行旋转操作。
对于旋转操作,我们首先要定义一个旋转轴;然后选择旋转的原子,以及角度。在上面H2O的结构里面,很容易就想到,如果∠HOH 从 90°增大到 104.478°, 我们需要以O原子所在的z轴,旋
转一个H原子即可,旋转角度为14.478。

4) p4vasp获取旋转轴的操作:

i) 选中O原子
ii) P4vasp界面左上方, edit—Rotate Atoms
iii) 弹出的界面点击: Get Group
iv)Center 那一行,点击1st的按钮
v) Second point那一行,点击1st的按钮
vi) Axis 那一行,点击 z 的按钮
这样我们就定义了一个穿过O原子的z轴。

5) p4vasp选择要旋转的原子和角度:

i)把鼠标分别移动要要旋转的H上,通过键盘的space 选择
ii)在上一步edit – Rotate Atoms 弹出的对话框中,再点一下: Get Group
iii)最后一行,我们选择 -15 作为旋转的角度。

注意1: +15 和 -15 顺时针和逆时针旋转15°。 如果你旋转错了,不要心慌,把数值改下,重新旋转即可。


注意2: 你也可以先选中O和H原子,然后在center 和 second point 那两行都选择1st来获取旋转轴。

点击最下面的: Rotate,效果如下:
由于我们绕着O原子旋转,所以O原子选中或者不选中,旋转操作都对其坐标都没有影响。通过Structure – Measure 测定一下 三个原子的角度。

3 绕任意轴旋转

上面我们介绍了一下,绕一个单原子的轴进行的旋转操作。而实际的模型调整,搭建的过程中,这种情况并不多,大多时候我们需要绕着一个3D空间里面的轴进行旋转,而不仅仅局限在xyz这
样简单的情况。我们知道,两点可以确定一条直线,所以,对于旋转轴来说,我们可以通过两个原子来定义。下面我们讲解一下,H2O分子绕着一个O—H键的旋转操作。

1)定义旋转轴:
i) 选择 O 原子 和 H原子
ii) Edit – Rotate Atoms
iii) Get group
iv) Center 那一行,点 1st
v) Second point那一行,点 last
点完之后,下面一行会自动填充我们选择的旋转轴。即从1st原子指向last原子的一个轴。最后一部分,我们写的是60,即绕着O—H键 旋转60°。

选择要旋转的原子,由于前面两个原子已经用来定义旋转轴了,剩下的第三个就是我们旋转操作的对象。选中所有的原子,然后点击 Get group。 下面的图是:H2O 的一个H原子绕着另外两


个原子的轴旋转 -60 °的效果。我们绕着一个O—H 键旋转,旋转操作对轴上的原子坐标没有影响,所以大家可以选中这些原子,也可以先通过这两个原子定义旋转轴,进行最后一步操作的时
候,取消选择也可以。
2) 一般对于分子的计算来说,如果分子在原点附近的话,由于周期性的原因,结构的一部分会进入到另外一个相邻的格子里面,虽然对于计算没有什么影响,但对后面的其他可视化过程(比
如,频率计算等)会造成一定的影响。所以本人经常把原子移到格子里面。选择所有的原子,在最后的Vector部分,选择5 5 5, 即在xyz三个方向上都移动5A的距离。点击move,效果如下图
,然后保存结构。

4 扩展练习:

1) 重复本节的所有操作;
2) 复习前面乙醇分子模型的搭建
3) 根据今天所学,随意操作乙醇分子中,原子的旋转,平移等操作,直至熟练位置。

5 总结:

本节的重点是学会用p4vasp 进行分子的旋转操作,并复习下分子的平移操作。分子的旋转在表面结构模型的搭建过程中,非常重要,熟练掌握这一个技巧,可以极大提高自己搭建模型的合理
性和准确性,从而在后面的计算过程中,节约我们的计算时间。如果你有更好的方法,也也可以分享经验给大家。

上一篇:Learn VASP The Hard Way (Ex-66)吸附能的计算(十一) 下一篇:Learn VASP The Hard Way (Ex-64)吸附能的计算(九)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex-66)吸附能的计算(十一)


2018-04-30

Ex66 H2O在Cu(111)表面上的吸附模型
令人蛋疼的多种可能性

结合上一节的内容,下面主要讲解一下H2O分子在Cu(111)表面吸附的初始模型搭建。

1 计算H2O气相分子的能量

相信大家已经轻车熟路了(老司机)。只将INCAR,KPOINTS,POSCAR列出来,不再详细解释。如下图:

提交任务,结束后,将CONTCAR中的Direct坐标转换为Cartesian,方便后面的表面模型搭建。
怎么转换前面也讲过了,这里也不再啰嗦。
注意:很多人问H2O的分子计算用不用打开自旋的问题?

我的回答是:

1)如果你的体系是开壳层的,那么就打开自旋。
2)如果你的体系是闭壳层的,那么就闭嘴。
3)如果你不知道自己的体系是开壳层的还是闭壳层的,那么就:
i) 自己去测试一把,然后对比下,打开与不打开的区别;
ii)查找文献,看别人怎么做的。

2 搭建H2O的吸附模型

1) 打开p(3x3)-Cu(111)的slab结构

先点击左侧的Build,然后点击右上方的text 按钮,进入编辑的部分。如下面的示意图:

注意:上面的只是p4vasp的一个界面,不是p(3x3)-Cu(111)的slab结构

2) 在元素行,添加O和H,下面一行,添加对应的原子数。
3) 在坐标的最后面,将前面CONTCAR的Cartesian坐标直接复制过来即可。

4) 你会得到下面的结果:

师兄,水分子跑到slab里面去了,这可怎么办? 答:往上平移下即可。

选择O H 以及表面上的任意一个Cu原子。回顾前面的平移操作:
From 那行点 1st 代表的是O原子
To 那行点 last 代表的是表面的4号Cu原子
得到的vector 就是从O到Cu的平移矢量。

注意:
Vector的第三个数字,这个是O和Cu在垂直方向上的距离。我们知道,H2O在Cu上吸附的时候,Cu—O有一定的距离,不妨先给个初始值2A。所以,我们需要把 1.246改成3.246。

小窍门:在下面红色圈出来的部分,可以通过一些快捷的操作来实现原子的选择。

i) 在p4vasp 里面可以直接通过写元素符号,选择该元素所有的原子。
ii) -10 代表从第一个到第10个原子
iii) all 代表所有的原子
iv) 10- 代表从10到最后的原子
v) 10-25 代表从10到25号原子
vi) 剩下的,自己瞎捉摸去吧,我也不知道了。

上面移动的效果如下:
5) 刚开始选择的4号原子在两个格子之间的界面上,本人喜欢将分子放到表面的中间。操作如上图:

i) 选择表面上的2个原子: 4 和 5 来定义平移的一个vector
ii) 平移一下O和H原子,效果如下:

当然,在开始的时候,你也可以将H2O分子直接移动到5号原子的表面,大师兄这里做了一些无用的分解操作,主要是为了加深大家的操作印象。

3 考虑不同的可能性

到目前为止,我们已经顺利搭建了一个H2O分子的吸附模型。把它保存到type_1目录下,名字为POSCAR。

师兄,为什么要建一个type_1的目录?

因为除了这个结构,H2O分子在表面上还有很多其他的可能性。为了保证我们可以获得最稳定的吸附结构,我们就需要将这些可能的结构都算一遍。那么还有其他什么样的可能性呢?

1) 一个H原子指向天空,另外的O—H 键平行于表面。这个结构怎么实现? 回想上一节我们讲到的绕着O—H键旋转的操作。看下图,不解释。


2) 2个H原子都指向天空,只留一个O原子在表面。(剪刀手)

操作思路: 定义一个穿过O原子的y 轴,然后旋转氢原子。

将这两个结构分别保存到type_2 和 type_3 目录下,名字为POSCAR。按照这样完成的话,你的目录应该是这个样子的:

小窍门:p4vasp */POSCAR 打开当前所有目录下的POSCAR,然后:

注意:本操作是在Ubuntu系统下操作的。Windows的用户可能不能实现p4v */POSCAR 这样的操作,下面讲解的搭建模型可能会多花出一些时间。在这里大师兄表示无能为力。

4 不同的吸附位点

我们前面了解到Cu(111)表面也有很多不同的位点:Top,Fcc,Hcp,和 Bri。所以这三种的初始构型在这四个位点上也要考虑。

Bridge的操作,选择5 和 6, 然后将Vector的数值减小一半,然后平移。
平移完了,将结构保存到bri目录下。
此时不要关闭平移的对话框(这是重点1)
点system对应的这个框,选择type_2 的POSCAR(重点2)
再点一下move,就完成这个类型的bri结构了。

同样,不要关闭对话框,打开type_3的结构,继续平移,获取对应的bri位结构。
这样操作的话,避免了重复获取平移Vector的那些鼠标点点的操作。点一次,可以继续用于其他结构的操作。希望大家可以掌握这个小窍门,提高自己搭模型的速度。Windows的用户,可以
通过将Vector的数值先记下,然后打开另一个结构的时候,直接输入vector就可以了。类似的,我们可以快速搭建完FCC,HCP的结构,最后,你的目录应该是这样子的:

将这些结构复制到服务器里面,准备提交任务。

5 扩展练习:

1) 完成这12个结构的搭建,彻彻底底地掌握p4vasp平移,旋转操作。
2) 使用MS,VESTA,p4vasp 搭建一个p(4x4)-Pt(111) 的吸附模型。(Bulk,slab的优化过程不用做,只熟悉搭建模型的过程。
3) 思考如何批量准备输入文件,并提交任务?
4) 思考准备的任务输入文件有什么需要注意的地方?

6 总结:

学完这一节:
1) p4vasp的基本操作,我是没有什么其他可以再教的了。基本上学会这些可以说p4vasp已经入门了,剩下的就是大家没事瞎点点,然后琢磨的事情了。
2)至少含有1-3原子的分子吸附模型你应该会搭建了。原则如下:
i)通过基本的化学常识和自己所学的知识判断与表面结合地原子;
ii)分析表面不同的吸附位点;
iii) 思考可能的吸附方式(躺着、竖着、斜着、歪着等等),并通过平移,旋转来实现。
而最后一点,每思考一种吸附方式,都会使得自己的模型数目激增(1x位点数目),增加工作量。所以,大家在操作的时候,一定要多看文献,因为前人已经把这蛋疼的路帮你走通了。但这并
不意味着别人算的就是对的,大家都是人,也会有疏忽的时候,如果你感觉某个结构应该会更稳定,一定要去尝试一下。

上一篇:Learn VASP The Hard Way (Ex67) 吸附能的计算(十二) 下一篇:Learn VASP The Hard Way (Ex-65)吸附能的计算(十)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex67) 吸附能的计算(十二)


2018-05-13

Ex 67 吸附能的计算(十二)

前面我们搭建了十二个H2O的初始吸附构型。为了获取最稳定的结构,我们需要将这些可能的结构都优化一遍,然后通过吸附能来判断。但是这12个结构,我们都要优化的话,需要很多的机时
,尤其是对于那些不太富裕的课题组来说,计算量着实不小。那么我们应该怎么办呢? 回顾:
1)前面几节我们讲的通过简化模型来加快计算的步骤
2)谁偷了我的机时系列。

这里我们可以选择的办法有N个:主要是这两个:1) 减小K点; 2)减小模型。


1) 减小K点的做法
i)固定住所有的表面原子(H2O分子除外)
ii)使用gamma点进行计算

2) 减小模型的做法
i)删去底部的2层原子
ii)固定表层的所有原子
iii)正常优化进行计算

3) 也可以前面两个方法结合起来进行操作

不管你使用上面什么方法,简化模型这一步的主要目的就是在最快的时间,获取一个最理想的初始构型。当你的初始构型很多的时候,这种办法非常适合作为一个初始
的筛选步骤。

师兄,为什么不通过ENCUT来减小计算量?
答:完全可以,只是本人不经常用这种办法而已。个人偏好将INCAR保持不变,以避免ENCUT不同所导致的计算结果错误。

1 H2O 吸附构型的第一步筛选:
这里,大师兄采用的是前面提到的第一个办法,即固定住表面,采用gamma点,然后优化H2O。

1) 准备INCAR,KPOINTS(1x1x1)
2) 批量固定表面: sed -i '10,27s/T/F/g' */*/POSCAR
3) 将准备好的INCAR和KPOINTS批量复制到各个文件夹中: for i in */*; do cp INCAR KPOINTS $i ; done
4) 批量提交任务qsuball.sh

任务结束后,首先查看一下能量信息:

for i in */*; do echo $i $(grep ' without' $i/OUTCAR | tail -n 1| awk '{print $7}') ; done

上图,我们发现能量数值相近的差不多,这表明它们很可能是同一个结构。我们把数值sort一下,如下图:

for i in */*; do echo $i $(grep ' without' $i/OUTCAR | tail -n 1| awk '{print $7}') ; done | sort -k 2
通过使用p4vasp 批量查看:(p4v */*/CONTCAR) 你会发现能量为-145.56XXX的都是H2O平行吸附在Cu表面,O在Cu的top位上。

而剩下的,就只有两种结构了:

结构1) type_3/bri 为V型吸附,O在桥式位置上。

结构2)type_3/top为V型结构,O在top位置上。

2 进一步优化

到现在位置,前面的12个初始结构,可以快速的被筛选成了3个。将这三个结构复制step2的文件夹中。在此基础上,开始正常计算:
1) 将CONTCAR批量复制成POSCAR: for i in *; do mv $i/CONTCAR $i/POSCAR ; done
2) KPOINTS变回原来的(4x4x1): sed 批量操作
3) 表面两层原子放开: sed 批量操作
4) 默背一遍提交任务的几个输入文件:INCAR,KPOINTS,POSCAR,POTCAR,脚本,集中注意力思考是否还有没有考虑到的参数或者细节,确保无误后
5) 批量提交任务: qsuball.sh
6)等待结束,查看结果

你会发现两个top的能量也一样了,说明这两个结构很可能优化到一块去了。查看后发现都是平行吸附的结构了。

7) 结构细节:化学上,我们对键长,键角这些信息一定不要放过。测量一下Cu—O 的距离,为: 2.343 \AA。

8) 计算吸附能: E_ads = E(slab+H2O) – E(slab) – E(H2O_gas) = (-140.33072118 eV) – (-125.93154318 eV) – (-14.21915741 eV) = - 0.18 eV。
与本人4年前的计算结果(-0.17 eV)相差0.01 eV。(ACS Catal., 2015, 5, 1027-1036: https://pubs.acs.org/doi/abs/10.1021/cs501698w )

本人发表文章支持信息里面的数据。

注意1:
这里吸附能计算的时候,我们取的是最稳定的结构。文献里面提到的也通常是作者所找到的稳定结构。当然,对于不稳定的结构,吸附能也就是顺带的事情了。写在文
章里面的话,要标明什么结构对应的吸附能是多少。

注意2:

分子在表面上是物理吸附?还是化学吸附? 通过计算出来的吸附能你应该会判断。如果不知道的话,那么就需要多多翻阅物化书了。

3 扩展练习:

1) 根据结构和吸附能判断我们的计算结果是不是对的?
2) 查找其他相关文献,将自己的计算结果与文献的进行对比。
3) Step1中12个计算,以及step2中的3个计算,结构和输入文件已经打包,下载链接:https://pan.baidu.com/s/1iyS_nzhI-MuJykabI6rj1w

4 总结:

通过本节,你应该学会的知识有:
1) 学会如何通过降低工作量来快速筛选不同的初始结构,并最终获取稳定的构型。
2) 巩固和加深对批量操作的理解
3) 对于更加复杂的结构,其吸附能的基本计算流程要掌握。

上一篇:Learn VASP The Hard Way (Ex68) 频率,零点能,吉布斯自由能的计算 下一篇:Learn VASP The Hard Way (Ex-66)吸附能的计算(十一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex68) 频率,零点能,吉布斯自由能的计算


2018-05-22

Ex68 表面吸附物种的频率计算

前面几节,我们讲解完成了表面上吸附的计算细节。学习到现在,表面吸附的具体流程,如何简化计算,如何判断优化的结构正确与否,这些都是你应该掌握,并且时
刻保持思考的事情。尤其是计算存在N种可能性的时候。当你优化出来最稳定的结构,一定要认真琢磨一番,为什么这个结构比其他的构型稳定?是什么因素导致了这
个结构最稳定? 从本人多年老司机的经验,简单来说:最稳定的结构从骨子里都透着美的气质,也就是比其他结构看起来更加顺眼。

一旦我们获得了最稳定的结构,就可以进行后面的其他计算了,比如相关的过渡态,与其他分子的吸附能进行对比,与已有的参考文献进行对比,等等。应公众号阅读
和分享冠军的要求,我们本节以及后面两节要讲解一下吉布斯自由能的计算,这也是物理化学、化学反应中最常见的一个物理量,尤其是对做电化学的筒子们来说,吉
布斯自由能的计算是大家都需要牢牢掌握的。物理化学中,我们学到了:G = H – TS。 而对于G的计算,大家普遍卡在S的这个部分。再次强调,VASP不可以直接算熵
,因此我们需要通过频率来自己计算,而OUTCAR里面的那个entropy不是我们物理化学的熵。本节我们简单介绍一下表面吸附物种的频率计算的一些注意事项,以及
气相分子的S的获取以及G的计算
1 准备频率计算:

回顾前面我们讲解的乙醇分子的计算例子,然后进行如下的步骤:

1) 修改INCAR的参数
IBRION = 5
POTIM = 0.015 或者0.01-0.02范围的值都可,闲的没事也可以测试下。
NFREE = 2
NSW = 1 1-10000的值均可,没事也可以测试下。

2) POSCAR: 将表面的原子固定住,使用sed命名,或者自己写个小脚本来处理。

3) KPOINTS,一般来说,很多人都使用和优化过程一样的KPOINTS,但从我个人的经验来看,使用更小的K点来计算则是一个更加有效,节约机时的做法。但前提是
你要做足够的测试
4) POTCAR保持不变 (废话,等于没说)

2 K点的测试:

回顾前面谁偷了我的机时系列,思考下面的计算,学会分析节约机时,省钱省力省时间。

1) 我们首先使用111, 221, 331, 441进行测试,然后对比振动频率的不同。EDIFFG 对于所有的计算均为 1E-7。

小技巧1): 提取频率的波数,对应的能量,使用 grep cm-1 OUTCAR 这个命令


小技巧2): 只提取虚频,使用 grep f/i OUTCAR

下面是我们测试的结果。H2O为三原子非线性的分子,振动的自由度为:3N - 6 = 3; 也就是有三个振动方式。减去的那6个分别为平动和转动。
对比下不同K点振动波数的区别,都在下面图里了,大家自己看下。
上面图中,前三个为振动的一些能量信息,通过对比可以发现:

i)使用 111 的KPOINTS的时候,我们得到了一个虚频,而其他的KPOINTS没有。


ii)对于振动来说,所有的KPOINTS的结果基本保持不变。

2) 看下不同K值对计算时间的影响。

啥也不想说了,111所花的时间也仅仅是441的一个零头。如果你是个糙哥,111的结果完全够用。如果你是个细心的软男,不敢用111,但又害怕浪费机时,221则是个
很好地选择。

3 EDIFFG的测试

这里之所以测试EDIFFG这个参数,是因为它决定了每一个离子步中电子步的步数。收敛条件越苛刻,需要的时间也就越多。

1) 下面是EDIFFG分别为1E-5,1E-6和1E-7的结果, 所有的计算中:KPOINTS为441
通过上面,你可以发现:EDIFFG 从1E-5到1E-7,振动频率变化很小。这个给我们的启示是,1E-5够用了。

2) 我们看一下时间:

K点都为441的时候,1E-5所花的时间是1E-7的一半。

4 思考与测试

i) 通过前面的测试结果, 是不是就可以说我们可以使用gamma点和EDIFFG = 1E-5结合进行计算呢?


2)测试不同的KPOINTS + EDIFFG, 并且与 441 + EDIFFG = 1E-7的结果进行对比,筛选出最佳的节约机时,而又保证结果准确的参数。
5 总结一下表面上频率的计算:

1) POSCAR, 固定表面
2) 修改INCAR: IBRION, POTIM, NFREE, 以及NSW(可有可无)
3) Play with KPOINTS + EDIFFG,节约机时,省时间去做其他的事情,给老板省钱。
4) 如果收敛困难的体系,可以保存优化步骤的WAVECAR用于下一步的频率计算。

6 零点能的计算:

频率计算完成之后,我们便可以计算零点能了。回顾前面乙醇的例子。这里的振动零点能等于前三个振动模式能量之和,(EDIFFG = 1E-7, KPOINTS=441)的结果


为:
(462.8 meV + 449.4 meV + 193.1 meV)/ 2000 = 0.55 eV。

7 熵的计算

零点能算完之后,我们还可以继续算以算熵。通过振动频率计算熵的做法我们下一节具体讨论。本节先介绍一下气相分子熵的获取。对于H2O来说,有3个平动和3个转
动,而VASP在这方面做的实在是太差了。如果你有兴趣,可以翻阅一下Gaussian对于熵的计算细节:(下载链接:http://gaussian.com/thermo/ )

我们可以根据这个,手动去计算平动和转动对熵的贡献,但相信大部分人不知道怎么去计算。庆幸的是,气相分子的熵值有热力学数据可以查。这里大师兄推荐2个数据
库:

1)CRC Handbook

这是本人使用频率最高的数据库了。只要数据库里有的东西,写文章的时候直接引用这本书即可,非常方便。
如果有师弟师妹再问你类似相关的问题,也可以用这本书直接砸砸砸!真可谓是绝世好板砖!
2) NIST 数据库

网址: https://janaf.nist.gov/

如果你看一些原子热力学或者其他相关的计算,你会发现很多人在这个数据库里面获取熵值。很多人不仔细阅读文献,经常给我抱怨说找不到别人怎么算的。是的,你
肯定不知道别人怎么算的,因为人家直接查的表,没有算。下面是这个数据库的简单用法:

1)点击红圈中的箭头:
2) 出来的下拉菜单中,点下H,然后找到H2O

3) 点view ,你会得到下面的界面:

-
不同温度下的熵值已经在表中了。直接拿过来用,气相的T*S到手!

8 吉布斯自由能的计算(气相分子)

气相分子的吉布斯自由能为: G = H - TS = U + PV - TS = E_DFT + E_ZPE + nRT - TS (n=1)


i) E_DFT就是我们直接提取的OUTCAR的能量。
ii) E_ZPE 我们计算的气相分子的零点能。(注意:是气相的,不是本节中我们算的表面的零点能)
iii)TS 查表获取
iV) 注意单位要统一。

9 总结:

通过本节,你应该学会
1)怎么计算表面吸附物种的振动;
2)计算零点能;
3)知道频率计算中KPONTS和EDIFFG对计算时间和结果的影响;
4)知道怎么去测试它们的影响,并筛选出合理的参数,节约机时;
5)知道气相分子的熵怎么获取;
6)知道气相分子吉布斯自由能的计算。
7) 关于数据库:如果你是
i) 单身狗:如果有心仪的女生问你怎么算气相分子的熵,请一定不要告诉她这两个数据库。自己查了以后告诉她,没准儿她下次还会来问你。大师兄也只能帮到这儿了
,剩下的就看你们自己的发挥啦!
ii)单身的小姐姐或者小妹妹:有了这两个数据库就完全掌握了主动权,剩下的就看个人的心情喽。
iii)老板的话,请直接拿板砖砸!
上一篇:Learn VASP The Hard Way (Ex69) 表面吸附物种熵的计算 下一篇:Learn VASP The Hard Way (Ex67) 吸附能的计算(十二)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex69) 表面吸附物种熵的计算


2018-05-26

Ex69 表面吸附物种的熵

上一节我们知道怎么获取气相分子的熵以及吉布斯自由能的计算。这一节,我们简单介绍一下表面吸附分子熵的计算。

1 复习基础知识:

首先我们应该要知道对一个体系来说,都有哪几部分对熵有贡献。一般熵通过统计热力学计算分子的配分函数来获取:主要有平动,转动,振动,电子以及核这5部分。
参考下面的这个链接: (http://210.45.168.34:8080/elite/wlhx/jiaocai/C_05.htm) 或者找本物化书狂补统计热力学的知识。

1)电子运动的能级间隔很大,除了在几千度以上的高温条件下,电子常常处于基态。一般情况下各激发态对配分函数的贡献都可忽略。
2)原子核的能级间隔极大,在一般的物理和化学过程中,原子核总是处于基态。所以这一项也可以忽略。
3)到现在我们需要考虑的只有平动,转动和振动这三个了。

2 分子从气相到表面吸附的过程

当分子从气相吸附到表面上,打个不恰当的比喻,就如同图中的苍蝇被粘住在纸板上,因此就不能随便乱飞了,更不用说施展什么空中技巧了。

同样,对分子来说,举个例子,一个非线性的三原子分子,一共有3N个自由度。气相里面为:3个平动,3个转动以及3N-6个振动。但是当它吸附到表面上,由于平动
和转动被限制住了,这6个自由度则会转化成振动自由度,也就是在表面上分子有3N个振动模式。如果你可视化表面上吸附分子频率计算的结果,会发现最后6个分别对
应的是平动和转动,但它们已经不是气相中的平动和转动了,我们称之为:frustrated translation,frustrated rotation。
(你大妈(平动转动)已经不是十年前的大妈了,你大爷(振动)永远是你大爷)

这两个在表面化学里面是非常令人蛋疼的东西。这个我们后面慢慢讲。至少现在我们知道了,表面的吸附物种有3N个振动方式。所以,平动和转动对熵的贡献也不用管
了,直接处理振动即可。(不会算的筒子们小开心下。)

3 通过振动频率来计算Entropy

振动频率对熵的贡献,随便查阅一本统计热力学的书,都可以找到答案,这里我们的参考书是第十版Atkins的物理化学。
Physical Chemistry 第10版的642页。获取方式:QQ群文件,Books文件下里面就有,自己下载。
图里面圈出来的公式里面,β,h,c,是基本的物理学常数。v (上面加个波浪号)是波数,单位是:m-1。我们就是通过这个公式来计算单个振动模式对熵的贡献。这
个很简单,直接把数值带入公式即可,可以摁计算器,也可以用excel等其他工具进行计算。本节,我们分享一个对应这个公式的python小脚本。

通过单个振动频率计算熵的小脚本,图里面的98.485是错的,应该是96.485,kJ/mol 转换为 eV的常数。

脚本解释:
-1 -1 -1
i)VASP得到的频率波数是cm-1,这也是大家所习惯接受的,所以在12行,单位要乘以100先将 cm-1 转化成m-1。
ii) 剩下的14-19行是一些基本的物理量,我们默认温度是300K;
iii) 21-27行:是我们定义的一个计算熵的小函数。
x_i 是书里面的 βhcv
pf_l和pf_r 是花括号里面,减号左面和右面的部分
pf 得到的是花括号的结果
然后entropy 是 pf * R
iv)29-31行就是调用函数,然后输出S, TS部分了。这里S的单位是 J K-1mol-1。TS 的单位是我们熟悉的eV。
v)自己对着图片输入一遍就可以得到脚本了,不要问我要现成的。如果自己照着抄的脚本运行出现错误,反复跟图片里面的进行对比,然后进行修改。

4 熟悉不同的振动频率对熵的贡献。

有了这个小脚本,我们就可以计算任何振动频率对熵的贡献了。一般来说,我们VASP的频率计算会有3N个波数,我们需要做的就是挨个算(虚频除外),然后求和即
可。这里,大师兄想强调的并不是如何去通过这些频率去算熵(相信到现在你也已经学会了),而是要了解频率大小对熵的贡献程度。下图是我们计算了不同波数(从1
0到500 cm-1)的振动所对应的熵,以及TS, 单位分别为:J K-1mol-1 和 eV。

通过上图的结果,你会发现:当波数越小的时候,TS越大,随着波数增加,TS越来越小,在490 cm-1, 300K 的时候,连0.01eV都不到。一般来说,正常的振动频率(3n-


6,过去以及现在的大爷那部分)对熵的贡献,基本上就可以忽略掉了,因为一般来说正常的频率波数在400-3000cm-1范围之间。

我们现在知道,波数越小,他们对熵的贡献也就越大,而前面我们说的frustrated translation 和 rotation,它们恰恰具有很小的波数,尤其是frustrated translation这


部分,大部分都在50cm-1以下,因此他们对熵的贡献不能忽略。然而,它们既有体相声子谱的一些特征,也有气相分子的平动和转动的样子。因此在处理的时候,要小
小心心地将它们剥离开来,非常令人蛋疼。正所谓:雄兔脚扑朔,雌兔眼迷离;双兔傍地走,安能辨我是雄雌?

另一方面:由于它们的波数很小,而VASP在小波数这部分的计算很烂,软件计算的结果也会导致很大的误差产生。一般来说大家都直接放弃,忽略这部分了。当然这样
的理由很多人不服,明明知道它们波数小,对熵的贡献大,却又不得不忽略。这里,大师兄再给你另外一个解释:摘自Computational Catalysis (RSC) 这本书的第32页
。如下:

在这里建议我们将平动单独处理,假设的是分子在二维平面内可以运动。也就是说只损失了一个方向的自由度。经验告诉我们,对不同的过渡金属表面来说,平动部分
对熵的贡献可以作为一个常数来处理。所以,又可以不考虑了…. 以上是大家一般都不考虑这部分的贡献的原因。当然,你也可以根据上面的公式计算frustrated transla
tion对熵的贡献,然后其他的按照振动来处理即可。

如果你对这一部分感兴趣,可以参考下这些人的工作:
1) Campbell 这个牛牛的JACS,还有一篇Chemical Review,大家自己找下。

2) 最新的一篇JPCC
3) Tamkin 这个软件的作者以及她发表的一些文章: http://molmod.github.io/tamkin/

4)Norskov 这个牛牛的一本书:Fundamental Concepts in Heterogeneous Catalysis (群文件也有,自己去找)


https://onlinelibrary.wiley.com/doi/book/10.1002/9781118892114

注意: 在这本书里的P33页,不同的吸附位点,构型数目,也会对熵有贡献:如下图:
这个的贡献不是很大,如果你的覆盖度为1/9的时候,R * ln((1/9) / (8/9)) = R * ln (1/8), 300K的时候,TS = 300 * 8.314 * ln (1/8) / 1000 / 98.485 = 0.053 eV。差
不多可以忽略掉。

再提零点能:

师兄,既然前面的frustrated的平动和转动我们都忽略了,那么他们的零点能矫正的时候还用不用考虑。
答:小波数范围对零点能的贡献很小,一般来说,考虑或者不考虑它们的贡献,无关紧要。本人一般直接都加上。

思考:

1)表面化学中,熵的贡献主要在吸附/脱附的阶段,因为分子损失/获得了大部分的平动和转动,对于表面吸附物种的熵:
i)3N-6的振动部分贡献很小,可以忽略不计;
ii)Frustrated rotation 大约在200-400cm-1左右,也可以和振动部分一起忽略;
iii)Frustrated translation部分,可以近似为二维平动来处理。也可以忽略,一般来说:忽略 是大家普遍的做法。如果理论基础不扎实,只想简单算算,那么你的
腰椎间盘还是不要突出为妙。
iv)表面吸附位点的数目对熵的贡献,基本也可以忽略。

2) 而在表面反应的阶段,我们计算反应热和活化能的时候通过下面的公式:
ΔE = E(FS) – E(IS);
Ea = E(TS) – E(IS)
这两个量的计算都是通过相减来得到的,而这个相减的过程中:
i)大部分熵的贡献可以被抵消掉了;
ii)小波数范围内零点能的矫正部分也会被抵消掉,所以零点能校正的时候,大胆地直接地把非虚频的部分直接加起来就可以了。
iii)如果你不信,那么可以通过频率计算一下IS,FS,或者TS的熵,然后计算矫正过的ΔE, Ea,会发现熵的贡献很小很小,所以一般大家都直接考虑零点能,而不考
虑熵的贡献,如果有审稿人问你这个问题,用脚本算一下,回答审稿人说影响不大就是了。

3)总结:表面吸附物种的熵,一路忽略,结果就是啥也不算… 不过,不算归不算,但背后的原因或者依据你得搞明白。

上一篇:Learn VASP The Hard Way (Ex70)过渡态的计算(一) 下一篇:Learn VASP The Hard Way (Ex68) 频率,零点能,吉布斯自由能的计算
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex70)过渡态的计算(一)


2018-07-02

Ex70 过渡态的计算(一)

从本节起,我们开始学习下过渡态相关的计算。在进行下面的讲解之前,大家务必要记住这两点:
1) 过渡态只是一个结构而已,过渡态的计算并不是你想象的那么神秘;也就是计算很容易。
2)物理化学,结构化学书中的过渡态相关的基本知识要掌握,也就是你的理论基础要扎实。感觉基础不好的,认真看书。

1 过渡态计算的例子

我们遵循一个从简单到复杂的顺序,慢慢介绍一下表面化学中过渡态的一般计算思路和方法。简单的例子,本节我们选取的是VASP官网的经典计算:NH3的翻转,如下图:

如果你不太懂这个过程,可以把NH3看做一把雨伞。翻转的过程,就相当于大风把伞吹翻。
对于这个计算的一些参考资料,大家可以点下面这两个链接:
1) http://www.vasp.at/vasp-workshop/tutorials/tutorial_ammonia_flipping.pdf

Vasp官网的一个PPT介绍,这个PPT有些年头了,不过对于我们学习还是很有帮助的。建议看完PPT里面的内容(最好是自己练习一遍后),再继续下面的学习。

2) https://cms.mpi.univie.ac.at/wiki/index.php/Category:Examples
VASP wiki网页中关于过渡态计算的例子。

2 过渡态计算:初末态结构的优化

过渡态计算的第一步:我们要知道自己想算什么,需要准备什么?

算过渡态,肯定指的是某一个反应或者过程的过渡态。过渡态的两边也分别对应着反应物和反应产物。
所以,算一个反应的过渡态,不管计算过程如何,我们最终都会有三个结构:初始和末态结构,以及过渡态。
初末态的结构和前我们已经讲过的优化过程是一样的,我们先回顾一番。

2-1 初态结构的优化:

1)搭建结构(POSCAR)

该图中的三个结构分别对应的是NH3翻转的初始,过渡态以及末态结构。这里反应物和产物都是NH3。首先,我们肯定要有一个NH3的结构。这里大师兄就直接复制PPT里面的坐标快速制备一
个POSCAR。

注意: PPT里面没有写元素符号,大家记得自己加上。下图是本人复制后制作的POSCAR。 (添加了元素行,Cartesian坐标。)

ammonia flipping
1.0
+9.0000000000 +0.0000000000 +0.0000000000
+0.0000000000 +10.0000000000 +0.0000000000
+0.0000000000 +0.0000000000 +11.0000000000
HN
31
Selective
Cartesian
+3.8185740000 +3.9721220000 +4.3936400000 T T T
+3.0000000000 +2.5542720000 +4.3936400000 T T T
+2.1814260000 +3.9721220000 +4.3936400000 T T T
+3.0000000000 +3.5000000000 +4.0000000000 F F F
2) 准备输入文件(INCAR)

优化NH3的初始结构:(回顾气相分子计算需要注意的地方)

System = NH3
ISMEAR = 0
SIMGA = 0.01
ALGO = FAST
ENCUT = 450
EDIFF = 1E-5

NWRITE = 0
LWAVE = .FALSE.
LCHARG = .FALSE.

IBRION = 2
POTIM = 0.1
EDIFFG = -0.02
NSW = 100

3) 准备输入文件(KPOINTS)
K-POINTS
0
Gamma
111
000

4) 准备POTCAR 并提交任务
5) 优化完的结构:
只需要几步优化就完成了。这是因为我们复制的别人的(VASP官网例子)结构,因为这些结构已经被优化过了。即我们优化过程有一个很好的猜测结构。
这给我们的启发就是:在你开始计算的时候,一定要善于利用前人的或者自己前面的计算结构。这会大大节省我们的计算工作量。

2-2: 末态结构的搭建优化:

在上面结构的基础上,我们很容易搭建初末态的结构。仔细观察这个图,我们可以保持H原子的坐标不变,只需要将N原子的坐标修改一下。初始结构里面,三个H原子在xy平面上,
N与H原子z方向的距离为0.3929 Å。如果N原子翻转过去,那么它的坐标将会是:
4.3929 + 0.3929 = 4.7858 Å。

自行将这个图顺时针旋转90°

然后跟前面同样的方法,优化一下就可以了。

3 过渡态结构的优化
上图中,我们可以发现,过渡态是一个平面的结构,我们可以按照前面末态结构搭建的思想弄一个初始的过渡态结构出来。即直接将N原子的z方向坐标修改成H原子的。如下图:

对比下前面初末态结构的坐标,你会发现Z 方向上被固定住了(最后一列SZ没有选择)

+3.8177218605 +3.9717738141 +4.3929644172 T T F


+3.0000000000 +2.5559112549 +4.3926756556 T T F
+2.1822781395 +3.9717738141 +4.3929644172 T T F
+3.0000000000 +3.5000000000 +4.3929644172 F F F

这样做是强制优化过程中,所有的原子都在xy平面上。我们只优化H原面的坐标。原因如下:

这个三角形对应的就是我们从初始结构(IS)搭建过渡态结构(TS)的过程。在初始结构里面,N在三角形最下面,H在右边的点上,当我们人为把N原子放到H平面上的时候,N从下面的点移
动到上面,导致N—H 键变短(从1.022 减小到0.944 Å)。但这个变短的过程是我们人为搭建结构所导致的。所以我们要把H原子在xy表面上放开,继续优化一下。参数(ICNAR,POTCAR,
KPOINTS)保持不变,提交优化任务,最终我们的过渡态结构如下:
N, H 在同一平面内,N—H 键长为:1.004 Å

4 频率计算:(过渡态的验证)

验证一个算完的过渡态是不是真正过渡态的时候,我们需要用到频率计算。因为过渡态只有一个虚频。(自己看书去学习为什么只有一个虚频?)复习下前面我们讲过的频率计算的细节:
1) IBRION = 5
2) POTIM = 0.015
3) NFREE = 2
4) NSW = 1
这里我们需要另外加一个无关痛痒的参数:
5)NWRITE = 2 (或者不设置,默认值是2)

大师兄本人喜欢用NWRITE = 0 。但当参数为0,使用Jmol可视化频率计算结果的时候:你会发现所有的原子都是同一个颜色,如下图:

当使用NWRITE的默认值2的时候,则是正常的:这是因为NWRITE = 0 写入的OUTCAR的数据太少,Jmol无法获取元素相关的参数用来可视化。此处,特别感谢群里的:连赞 小朋友帮忙分析


.

提取频率相关的参数,可以使用下面的命令:
grep cm-1 OUTCAR 提取所有的频率(检查频率结果推荐使用)
grep 'i=' OUTCAR 提取所有的虚频 (基本没啥用)
grep 'f =' OUTCAR 提取所有的非虚频 (计算零点能推荐使用)

Jmol中所有的虚频都在最下面,大家可以根据前面的grep命令的结果和Jmol的界面对比下。本计算一共有3个虚频: 5.7, 10.2和806.8 cm-1 。前面2个虚频很小,直接不管就可以了。

5 总结:

算到这里,NH3翻转的过渡态我们就已经讲完了。本节采用的是直接优化的方法获取过渡态的结构,适用于一些非常简单的体系或者你已经非常熟悉的过渡态结构。回到开头我们讲的那句话,
过渡态只是一个结构而已,我们需要做的就是如何通过一些计算的技巧和方法来获取这些结构。很多人一提到过渡态就会想到使用VTST编译的VASP程序算neb(Nudged Elastic Band metho
d),其实neb也仅仅是大家常用的一个方法而已,除此之外,还有很多。而最关键的就是通过结构化学的基础知识来搭建、计算并判断这些过渡态结构背后的物理化学意义,通俗点说就是:
算的对不对,你要自己心里有个数。

本节计算例子的下载: 链接:https://pan.baidu.com/s/1hHGhrOlxMik8NBUqEzolwQ 密码:2dw5


上一篇:Learn VASP The Hard Way (Ex71)过渡态的计算(二) 下一篇:Learn VASP The Hard Way (Ex69) 表面吸附物种熵的计算
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex71)过渡态的计算(二)


2018-07-17

Ex71 过渡态的计算(二)

前面一节我们讲了直接优化NH3翻转的过渡态。这一节我们继续直接优化过渡态的介绍。计算乙烷分子(CH3CH3)绕C—C键旋转的过渡态。我们知道:乙烷有交错式

和重叠式构型。而重叠式能量较高。想象乙烷分子绕着C—C旋转,从交错式到重叠式,再到交错式这一个过程。很容易就得到这个结论:重叠式的结构就是过渡态。所

以,如果计算这个过渡态的工作就转化成了优化重叠式的构型。这也是本节的一个主要思想。

1 手动搭建初始的乙烷构型。
首先我们要搭建一个初始的乙烷构型。把C—C键的两个C平行于z轴。思考一下:

1) 我们为什么要这样做?
2) 乙烷构型网上到处都是,随便下载一个就可以直接拿来使用,如果将任意取向的结构转化为C—C 键平行于z轴的结构呢?

下面是我们搭建的乙烷结构,并优化的结果。优化过程中,两个C原子在xy方向的坐标被固定住了。
很显然,我们的初始结构经过优化后转变成了交错式的构型。

2 搭建过渡态的初始构型

在重叠式的结构中,乙烷分子的两个CH3关于穿过CC轴的xy平面是对称的。所以,我们将上面CH3中H原子的xy坐标修改的和下面部分一样。

注意:

1) 只修改xy坐标,z坐标保持不变
2) 观察图中:3和8, 4和7, 以及5 和6 的xy坐标。
3) 固定xy坐标,直接优化z方向

下面是优化完的结果:计算很快就收敛了。

3 对比一下交错式和重叠式C—C的键长:

在重叠式中,C—C 稍微拉长了一点。

4 频率计算:

在频率计算的时候,本人把所有的原子都放开了,如下图:
通过命令发现,有个256 cm-1的虚频。使用Jmol可视化一下:

过渡态计算完毕。

5 总结

大家等了很久,看完肯定会对本节失望。但过渡态计算里面的一些技巧很多都是自己琢磨出来的。比如我们将分子沿着平行z轴的方向放置,根据对称性手动搭建过渡态

的结构,以及固定坐标,选择性地优化等。还是那句话:过渡态只是个结构,我们需要做的就是通过各种各样的办法来实现快速优化这个结构的目的。
本节计算例子下载链接: https://pan.baidu.com/s/18TdaLhWnz4_IDMjJJGBMFw 密码: ugjt

上一篇:Learn VASP The Hard Way (Ex72)过渡态的计算(三) 下一篇:Learn VASP The Hard Way (Ex70)过渡态的计算(一)
版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务
大师兄科研网 首页 连载小说 LVASPTHW 招聘信息 知识经验

Learn VASP The Hard Way (Ex72)过渡态的计算(三)


2018-09-10

Ex72 过渡态的计算(三)
不好意思,让大家久等了。最近一直很忙,后面还是会很忙。为了不让大家失望,抽时间把简单的过渡态计算讲解一下,这一节我们需要学习的是通过CI-NEB(Climbing Image Nudged Ela
stic Band)计算H原子在Ru(0001)表面上的扩散过程。

1 NEB计算过渡态的准备工作

准备工作 1:

说到NEB或者CINEB,不得不提的就是Henkelman课题组的VTST:http://henkelmanlab.org/ . 我们需要下载VTST的code,然后将VASP编译一下,得到一个可以使用vtst的VASP版本。
链接:http://theory.cm.utexas.edu/vtsttools/download.html
很不幸,怎么编译,我一窍不通。如果这一关过不了的话,后面的也只能看看热闹,不能亲自实践了。如果你已经编译好了VTST的VASP版本, 那么就可以继续下面的学习了。

准备工作 2:
我们将VTST的一些实用小脚本下载下来:http://theory.cm.utexas.edu/vtsttools/download.html

下载VTST Scripts后解压,把所有脚本都复制到 ~/bin 目录下:效果如下:


很多脚本估计你一辈子都不会用到,没关系,它们很小,不占存储空间,静悄悄躺在bin文件里面就行了。Linux老手们嫌烦可以把这些脚本放到一个文件夹里面,然后bashrc文件里面修改下路
径就可以了。

准备工作 3:修改nebresults.pl 文件

将57到71行注释掉,注释掉就是在每一行的开头加个#号,效果如下:

为什么需要这么做?
如果neb运行的时候,你使用这个命令,它就会把你的OUTCAR文件压缩,VASP找不到OUTCAR,就不知道该往哪里存储,然后就挂掉了。大家可以在neb任务运行的时候分别运行下注释前
后的脚本,对比下就清楚了。

2 扩散的基础知识:

准备工作完成,我们加深下扩散(diffusion)的一些概念:

2.1 扩散我们高中的时候应该就学习过了。具体的定义这里不讲了。大家自行参考教科书或者维基百科:链接如下:
https://en.wikipedia.org/wiki/Diffusion
对于分子在表面上的扩散,就跟我们在校园里瞎晃悠是一样的。哪天指不定遇到个对上眼的美女,过渡态就要开始了。

2.2 具体到分子在金属表面上的扩算,一般来说,扩散的能垒差不多是吸附能的12%左右。这里我们说的吸附能,指的是最稳定的那个结构所对应的。
为什么是12% 呢? 这只是一个经验性的结论,大家可以参考大牛Manos Mavrikakis的俺狗娃文章: (不要留言问我要这个文章…)
A Simple Rule of Thumb for Diffusion on Transition-Metal Surfaces
https://onlinelibrary.wiley.com/doi/abs/10.1002/anie.200602223
2.3 从结构角度来看,举个面心立方的金属(111)面为例,表面上有fcc, hcp, top, 和 bridge这四个位点。如果fcc或者hcp的位点对应稳定的吸附构型,那么bridge的这个位点就是扩散的过渡
态。所以,如果你想简单算一个扩散的过渡态,直接算bridge的吸附就可以了。但是,bridge的位点也不是那么容易就可以算出来的。前面我们讲过Cu(111)表面的吸附计算,很多人就反应bri
的结构优化不出来。Bridge 的位点就跟下面的这个独木桥类似,少一不小心就掉下去了。

换个角度来分析:既然我们直接优化得不到bridge的结构,而这个结构恰恰就是过渡态,那么我们就可以使用算过渡态的方法来得到bridge的结构。当然,能直接优化出来bridge的结构是最
好的。

3 过渡态计算的步骤

3.1 第一步:优化初始和末态结构。

首先我们先优化一个扩散前后的两个结构: H在FCC和HCP位点上的吸附。这个对于认真练习过前面计算的筒子们来说就是小菜一碟了。直接列出来top的示意图:

FCC site

HCP site

3.2 第二步:准备NEB的结构
这里我们需要用到VTST官网的一个小脚本:nebmake.pl,使用方法如下:
nebmake.pl IS FS N
1) 敲命令nebmake.pl
2) IS 指的是初始结构:
3) FS指的是末态结构
4) N 指的是你要插点的个数。

细节 1:
IS, FS 是VASP的POSCAR或者CONTCAR。
可以是其他目录里面的POSCAR或者CONTCAR, 也可以是当前目录下的POSCAR或者CONTCAR。
你可以把初始结构的POSCAR命名成你的名字:bigbro , 末态命名成:bigbra. 运行的时候命令应该这么敲:nebmake.pl bigbro bigbra 8

下面图里面的三个事例,是等价的。自己随意领会:

细节 2:
插入的点数要保证可以被使用的核数整除。比如我们打算用24个核进行计算,那么N可以是下面的几种情况:

N Cores used for each Image Total


1 24 24
4 6 24
6 4 24
2 12 24
12 2 24
3 8 24
8 3 24

注意:
表中最后一个很可能会出错,因为你用3个核来计算一个image. 上面说的不是绝对的,具体要根据自己的服务器和习惯来设置。
本人使用4个节点(每个节点12个核,共48个核)进行计算,一般N设置位4或者8.

细节三:
同样核数下,N设置的越大,计算每个image所需要的核数就会减少,导致计算变慢。
N需要怎么设置才好呢?
一方面需要大家去咨询一些现成的经验:问问师兄师姐,没有师兄师姐,就在现有的条件下自己去摸索摸索。当然这需要耗费大量的时间和精力,也不符合当下很多人急于速成的心态。
我们着重讲解另一个方面,也就是你对自己研究体系的掌控性。个人感觉分两点:
1)反应过程结构变化的理解,这需要我们在前面初末态的优化上下功夫;
2)化学键的理解:对一个化学键来说,它断裂时候的过渡态键长应该在这个化学键的1-2倍之间。1 指的是这个化学键本身,2指的是这个键被拉长了2倍。你肯定会说我在扯蛋,如果更经验性
一点,应该在1.5倍左右。掌握这个这有助于你第一眼去判断自己的过渡态对不对。当然,1.5只是个粗糙的数值,不同的键会有不同的经验性数值。

3.3 第三步 : 检查初末态结构的原子坐标是否是一一对应。


这是很多人算过渡态经常忽略的一步,有时候也是很费精力的一步。一个人是不是在闭着眼瞎算,从这一步基本上就可以看出来了。这里大师兄推荐一个linux下检查结构的方法。 命令:p4v 0
*/POSCAR 一次性打开所有的Image结构,然后逐个点开,查看整个反应轨迹进行检查。

4 扩展练习:
本节我们需要做的很简单
1) 浏览VTST的网站,阅读相关过渡态计算的步骤以及CI-NEB相关的文献;
2) 下载VTST的脚本,复制到~/bin文件夹,修改nebresults.pl脚本;
3) 计算H在FCC 和HCP的吸附;
4) 使用脚本生成NEB计算的Images文件。
5) 使用脚本生成前面两节:NH3翻转,以及乙烷旋转的Images文件。

5 总结:
本节应该够新手们练习一阵子的了,下一节,我们介绍怎么把NEB的计算运行起来。

上一篇:无 下一篇:Learn VASP The Hard Way (Ex71)过渡态的计算(二)


版权所有:大师兄网络科技有限公司 鲁ICP备:16036772号
本网站由阿里云提供云计算及安全服务

You might also like