0%

大师兄网站不能登录的这几天时间,经过一番思考,下定决心给大家一个界面更简洁,阅读体验更好,内容更丰富的大师兄网。
虽然感觉时间上压力很大,但得到了很多筒子们的支持和帮助,这给了我继续写下去的动力。当然,最重要的还是老婆的支持。
在这里,向她(他)们表示深深的感谢。

为什么写本书?

使用人群

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

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

不适宜人群

  • 导师是不做计算,让你独辟蹊径,单独挑起组里做计算的大梁;

国内做量化计算的人如雨后春笋般涌现出来,一批又一批,好多高校,学院都有老师开始主动尝试计算这个方向,很多做实验的老师也安排自己的学生”算一下”, 但这一部分人之前没有任何的计算功底或者经验,但仍然抱有一颗非常乐观的心态:计算无非就是操作软件的活,花几万块钱买台电脑,美其名曰计算!而到了真正计算的时候,乱七八糟的问题如瓢泼大雨般从天而降,从软件的安装,模型的搭建,计算参数的设置,计算结果的分析等等…..却又不知道如何解决,一来浪费了自己的时间和精力,二来浪费了计算资源(至少很多电费是白交了,服务器白磨损了….)。

出发点(一)

本书的一个出发点就是,本人在很多计算的QQ群里面,但是群里面很多问题都非常低级,令人费解,或者说是匪夷所思的,从最基本的建模都做不到,到计算结果不会分析等等。这些人简单而又低级的问题充斥在各个QQ群里。暂且不说这些人的导师有多么地不负责任。很多热心的人却在群里整天忙着应付这些问题,而对于自身,除了得到个活雷锋的标签外,对理论功底的提高,帮助甚微。可以说是花自己的时间替别人指导学生。不论群主给自己的群定位有多高,高级群,中级群,精英群等等,都避免不了这样的问题出现。本书主要通过实例引导大家主动思考去解决这些最基本的常见问题,进而避免因自己的低级问题浪费他人的时间。我说希望的是,对于求助或者应助的人,大家尽可能地讨论一些更高级,更深层次的科研问题,而不是浪费在这些低级的问题上。即使在新的计算中遇到了之前没有碰到过的小细节,自己也知道怎么去动脑子,主动解决。

出发点(二)

本人博士已经毕业,目前正在做博士后,早晚有一天会回到国内继续自己的研究生涯,也会有自己的学生,通过这本书把自己学到的东西保存下来,以便后面学生可以借此快速入门,虽然说磕磕碰碰是最好的学习方向,但我更希望自己的学生能从本书中领悟到解决问题的一些基本思维方式。学习计算化学的人,对解决科研问题都有着一种执着的态度,通过构建模型来阐明已知或者预测未知的结果。相对于做计算的科研工作者们,虽然我们没有实验技巧的提高,但我们可以通过训练自己的大脑来弥补。懂得思考的人永远站在社会发展的最前端。

出发点(三)

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.

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

如何学习本书(一)

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

如何学习本书(二)

对于量化计算,本书也采用这样的思路,手把手先教会大家如何计算,如何避免错误。从最基本的计算开始,通过示例讲解,结合一些脚本的使用,引导大家思考解决自己的问题。因此,在这本书的学习过程里,每一章节会对应一个例子,大家务必手动搭建模型,输入文件(切忌复制粘贴),然后进行计算,得到和大师兄一致的结果。为了引导大家主动浏览官网解决问题,很多都会采用VASP官网的例子,大师兄会重新计算后放到章节里面,供大家对比参照。

  • VASP 官网目前国内不能直接打开,大家
  • 可以浏览pdf版本
  • 自行解决被墙的办法。

推荐参考书

  • Density functional theory:A practical introduction, by David Sholl.点击本文链接就可以跳转到百度网盘下载,不要从网上随便下载,很多都是阉割版的。
  • Vasp 官网
  • 其他参考书会在文中慢慢推荐,对新手来说,这本书+VASP手册完全足够了,不要贪多。

对读者的话

如果你感觉本书对你有所帮助,欢迎随意转发转载如,果你有自己的科研经验和心得,也欢迎分享给大家!
为保证本书的简洁性,一些与本书无关的东西,QQ群号,公众号,留言联系方式等只在序言里面出现:

  • 微信公众号: BigBroScience (大师兄科研网)
  • 大师兄QQ群:2674006510 进群1)看群公告,了解群里的基本要求 2)修改自己的群名片。
  • 微信群: 满100人了,所以加大师兄微信(BigBroSci)后才可应邀加入微信讨论群。
  • 咨询邮箱: lqcata@gmail.com

QQ群专注于科研思维的碰撞与科研生活的分享,本书中已经详细解释或者指明的易出错部分,不建议在群中继续咨询,请大家认真学习并主动积极地去思考和练习。此外,论坛或者QQ群里,有很多无知或者stupid的回复,处在迷糊之际的菜鸟由于对自己的不自信,会一股脑儿去相信别人错误的观点,进而一路错下去,这是最可怕的。所以,如果有疑问,可以先酝酿一两天,多多查阅资料,主动思考。然后再大胆提出来,改正就是进步。

title: Learn VASP The Hard Way (序言2)
categories:

  • LVASPTHW
    tags:
  • 序言
  • 如何学习VASP
    date: 2017-10-10 16:30:16

序言2: 如何学习VASP?

写在前头的话,虽然本书会教给你怎么样一步一步从单个原子,到气相分子,再到表面,以及后面的分子吸附,过渡态相关的计算。但为了避免很多小迷弟迷妹们过于依赖本书,偏离了大师兄写书的初衷。先强调一下VASP的学习方法:老板+1本参考书 + 2个网址

老板

当然指的是有自己的老板指导喽,大师兄刚读博士的时候,老板并没有直接给我课题组,也没有让我自学或者跟组里的其他人学习VASP,而是花了一个月的时间让我读完此书和亲自指导我练习,这种的传授方式,是国内很多不负责任的导师需要学习的。虽然我老板每天都很忙,所有刚刚加入我们组的博士,都是老师亲手指导出来的。如果你的老板没有时间,至少要给你个师姐或者师兄,这都没有的话,那么老板要喜欢给你出钱让你去交流学习。老板又不教你,又不给师兄师姐带你,又舍不得在你身上花钱,不出意外,你会活得很惨。

一本参考书:

Density Functional Theory: A Practical Introduction (David Sholl)

书的作者简历,有兴趣的可以去搜一搜。这本书对于初学者来说,很容易掌握计算的要领。而对于老手们来说,此书经常翻阅,定会不断提升你的计算水平和对计算的理解。我们举两个例子,请认真阅读里面的内容,并理解。

第一章开始,为了缓解大家对DFT的恐惧,举了一个理论计算与开车的关系:

(此开车非彼开车,老司机闭嘴,认真看,不许笑!)

你需要做的是如何正确地驾驶汽车,定期维护它,但你并不知道怎么去造一辆车; 类似地,你需要做的是如何正确地理论计算,避免常见的错误,但你不知道VASP程序是怎么写出来的。

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

第三章开始的部分,介绍了收敛在计算中的意义。Numerical Convergence 和Physical reality的联系: DFT计算收敛了不等于薛定谔方程求解了。而体系的性质是由薛定谔方程的解来确定的!所以DFT计算结果的物理或者化学意义才是最终要的。

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

此外,网上的免费版本里面,很多公式符号不全。大师兄学习的时候深受其害:如图:

图中阉割版的箭头处都是空白,你不知道是正,是负,是乘还是除。所以,为避免这种情况对阅读造成理解上的困难,建议:

一个网址: VASP官网

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

1 VASP在线手册: http://cms.mpi.univie.ac.at/vasp/vasp/vasp.html

2 VASP Pdf 手册: http://cms.mpi.univie.ac.at/vasp/vasp.pdf

3 VASP wiki 入口: http://cms.mpi.univie.ac.at/wiki/index.php/The_VASP_Manual

4 VASP官网中实用的教程和参考文档。

老板亲自指导我学习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中的内容有限,只能作为参考。

第二个网址

VASP的官方论坛。http://cms.mpi.univie.ac.at/vasp-forum/forum.php

如果你在计算中,遇到什么错误的信息,99%都可以在这里找到答案。

总结

本书的初衷是引导大家去主动学习VASP,而不是教会大家VASP,而本节提到的参考书和官网则是新手们学习VASP最简单有效的途径。当然,还有很多有宝贵的参考书籍供大家阅读。如果你是新手的话,能把本节推荐的书啃完,再结合官网的计算一些示例练习,就足够了。如果你能坚持认认真真练习,主动重复网站的例子,认真思考,那么你的计算水平会得到极大的提升。

天河二号(吕梁超算)提交VASP作业的脚本和命令


上一节我们讲了怎么连接天河2号超算中心。这一节,我们主要讲一下VASP提交任务的脚本和命令。在天河2号提交任务非常简单,大家只要记住:一个脚本一个命令就可以了。首先我们看一下提交任务的实例:

1
2
3
4
5
6
7
8
iciq-lq@ln3:/THFS/home/iciq-lq/LVASPTHW/ex_a09$ ls
INCAR job_sub KPOINTS POSCAR POTCAR
iciq-lq@ln3:/THFS/home/iciq-lq/LVASPTHW/ex_a09$ yhbatch -p gsc -N 1 -J test job_sub
Submitted batch job 1028912
iciq-lq@ln3:/THFS/home/iciq-lq/LVASPTHW/ex_a09$ yhq
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
1028912 gsc test iciq-lq PD 0:00 1 (None)

上图中:

1) job_sub 是提交任务的脚本,内容如下:

1
2
3
#!/bin/bash
export LD_LIBRARY_PATH=/THFS/opt/intel/composer_xe_2013_sp1.3.174/mkl/lib/intel64:$LD_LIBRARY_PATH
yhrun -p gsc -n 24 /THFS/opt/vasp/5.4.4/vasp.5.4.4/bin/vasp_std

2) 提交任务的命令:

1
yhbatch -p gsc -N 1 -J test job_sub

-p gsc 是指定提交任务的队列

-N 1 是提交任务的节点数(每个节点24核)

-J test 是提交任务的名字,这里我们给任务起的名字是:test。

4)如果你想用2个节点,提交一个名为 bigbro的任务,可以使用下面的命令:

1
yhbatch -p gsc -N 2 -J bigbro job_sub

不同版本的任务提交

当然,超算中心上上面也安装了不同的VASP版本,5.3,5.4以及用于过渡态计算的VTST系列版本。如果我们使用编译了VTST的5.4.4版本提交一个过渡态的任务。需要做的有2点:

1) 找到编译了VTST的5.4.4版本的VASP安装目录。在天河2号,所有的软件都装在 /THFS/opt 这个目录下。Vasp也不例外,如果你进入这个目录,就会发现它。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
iciq-lq@ln3:/THFS/home/iciq-lq/LVASPTHW/ex78/step2$ cd /THFS/opt/
iciq-lq@ln3:/THFS/opt$ cd vasp/
iciq-lq@ln3:/THFS/opt/vasp$ ls
5.2 5.3.5 5.3.5_neb 5.3.5-wannier90-2.0 5.4.1_neb .... 5.4.1_sol_vtst 5.4.4_neb ....
iciq-lq@ln3:/THFS/opt/vasp$ cd 5.4.4_neb/
iciq-lq@ln3:/THFS/opt/vasp/5.4.4_neb$ ls
vasp.5.4.4 vasp.5.lib vtstcode-174 vtstcode.gz vtstscripts-933 vtstscripts.gz
iciq-lq@ln3:/THFS/opt/vasp/5.4.4_neb$ cd vasp.5.4.4/
iciq-lq@ln3:/THFS/opt/vasp/5.4.4_neb/vasp.5.4.4$ ls
arch bin build makefile makefile.include README src
iciq-lq@ln3:/THFS/opt/vasp/5.4.4_neb/vasp.5.4.4$ cd bin/
iciq-lq@ln3:/THFS/opt/vasp/5.4.4_neb/vasp.5.4.4/bin$ ls
vasp_gam vasp_ncl vasp_std
iciq-lq@ln3:/THFS/opt/vasp/5.4.4_neb/vasp.5.4.4/bin$ pwd
/THFS/opt/vasp/5.4.4_neb/vasp.5.4.4/bin
iciq-lq@ln3:/THFS/opt/vasp/5.4.4_neb/vasp.5.4.4/bin$

一路追踪,直至找到安装目录中bin文件夹下面的vasp_std可执行程序(一般是绿色的)。使用pwd命令得到当前的路径。

2) 修改提交任务脚本的最后一行:

1
2
3
4
#!/bin/bash
export LD_LIBRARY_PATH=/THFS/opt/intel/composer_xe_2013_sp1.3.174/mkl/lib/intel64:$LD_LIBRARY_PATH
yhrun -p gsc -n 24 /THFS/opt/vasp/5.4.4_neb/vasp.5.4.4/bin/vasp_std

将之前的目录,替换成刚刚通过pwd命令输出的内容。记得在目录后面加上vasp_std 表示你要运行这个目录下的vasp_std文件。

小结

到此为止,连接VPN,天河2号,挂载服务器到本地电脑,互传文件,以及使用脚本提交vasp任务。你已经都掌握了。后面的就是好好利用超算中心,得到自己所期望的数据,好好搞科研了。如果想试用超算中心,加下方的QQ群,或者直接联系超算中心即可。


超算中心试用联系方式:lvlianghpc01@163.com

联系电话(微信):15383480556 18903588277

感谢吕梁超算中心的支持,以后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 下载。注意:这个VPN不支持Ubuntu17 和 18的版本。


2 安装Linux 版VPN

Hillstone 官网已经给出了详细的安装说明, 链接如下:

http://docs.hillstonenet.com/en/Content/7_VPN/SSL_VPN_Client_L.htm#Starting

大家可以参考链接,也可以根据下面的步骤进行。本人直接将官网的照片复制过来了。

找到刚才下载的vpn软件: 右击 —> 点击最底部的Properties


在弹出的窗口中,将Execute的那个框选中,然后点击左上角的叉号直接关闭。、

双击这个软件的图标,一步一步点下去,这样就完成安装啦,同时桌面上会生成VPN的快捷方式图标。


3 连接VPN

1) 打开VPN:双击桌面的VPN图标,会弹出让你输入电脑密码的对话框,输入密码,点击Authenticate按钮。

2) 点击下图中的New 对应的加号,会弹出对话框,让你输入IP,账号密码

注意:

  • Name, Description 这两项随便填。

  • Host的IP超算中心给了三个,大家根据自己的网进行选择,如果一个不行,换另一个试试即可。

  • Port 就是 4433

  • User name和Password是VPN的账号和密码!!!

  • 一定要选中Remember Password. 因为管理员给的密码实在是太安全了,Linux的VPN不能修改密码。如果嫌密码麻烦,可以在Windows连接成功后,修改VPN的密码。

4) 点击OK就开始连接了

5) vpn的官网的填写说明,大家把网页中的第三条展开就可以看到了

6) 连接过程以及成功是这个样子:


4 通过ssh连接超算中心服务器:

VPN登录成功后,后面我们就可以通过Terminal连接超算中心了。为了方便,提高效率,强烈建议大家按照下面的步骤进行:

1) 安装sshfs

这个用于把超算中心挂载到你的本地电脑上,后面再细说,先安装好。可以命令行一键搞定。

1
sudo apt-get install sshfs

2) 在home目录下建一个文件夹,名字为: lvliang

1
mkdir ~/lvliang

3) 将下面的内容加入到 .bashrc 文件中,将下面代码中的172.16.20.XX 换成超算管理员发给你的IP地址。

1
2
3
4
####lvliang###
alias lvliang='ssh iciq-lq@172.16.20.XX'
alias mlvliang='sshfs iciq-lq@172.16.20.XX: ~/lvliang/'
alias ulvliang="sudo umount ~/lvliang -l"
  • lvliang 这个命令用来连接超算中心,提交任务,运行命令处理任务等
  • mlvliang 用来挂载超算中心到你的电脑上,相当于把超算中心看作成一个移动硬盘
  • ulvliang 用来卸载超算中心。

4) 保存后,更新下 .bashrc 文件,然后直接敲命令: lvliang 即可连接超算中心。

第一次连接,可能会出来一堆提示东西,输入Yes ,回车即可。

输入自己的超算中心账号密码,就可以登录啦。

1
2
3
4
qli@bigbro:~$ . .bashrc 
qli@bigbro:~$ lvliang
iciq-lq@172.16.20.10's password:
Last login: Tue Dec 4 18:22:59 2018 from 172.16.31.135

5)新用户刚开始的时候主目录下面什么都没有,强烈建议大家建一个 bin 文件夹,用来存放脚本。直接 mkdir ~/bin 即可。


5 上传或者下载数据(sshfs的使用)

1) 挂载超算中心到自己的本地电脑。

打开一个新的终端,

  • 输入前面我们写进.bashrc文件中的命令: mlvliang (m是mount的缩写)。
  • 输入超算中心的密码:
1
2
3
4
5
6
qli@bigbro:~$ mlvliang 
iciq-lq@172.16.20.10's password:
qli@bigbro:~$ cd lvliang/
qli@bigbro:~/lvliang$ ls
bin LVASPTHW POTCAR test_jobs
qli@bigbro:~/lvliang$

现在超算中心就成功被挂载到我们电脑上了,我们可以随时进入并访问超算中的文件夹,通过cp、mv、rsync等命令往里面传数据,或者下载数据到本地的电脑。


2) 例子1 :

挂载超算中心登录后,我们将Ex01的文件下载(通过cp命令)到本地电脑桌面上。

1
2
3
4
5
6
7
8
qli@bigbro:~/lvliang$ ls
bin LVASPTHW POTCAR test_jobs
qli@bigbro:~/lvliang$ cd LVASPTHW/
qli@bigbro:~/lvliang/LVASPTHW$ ls
ex01 ex02 ex03 ex04 ex05 ex06 ex07 ex08 ex09 ex10 ex11 ex12 ex13 ex14 ex15 ex74 ex77 ex78 potcar
qli@bigbro:~/lvliang/LVASPTHW$ cp ex01 ~/Desktop/
qli@bigbro:~/lvliang/LVASPTHW$ ls ~/Desktop/ex01/
INCAR KPOINTS POSCAR POTCAR

3) 例子2 :

我们将电脑桌面的ex16文件夹上传(通过cp命令)到超算中。

1
2
3
4
5
6
qli@bigbro:~/lvliang/LVASPTHW$ ls
ex01 ex02 ex03 ex04 ex05 ex06 ex07 ex08 ex09 ex10 ex11 ex12 ex13 ex14 ex15 ex74 ex77 ex78 potcar
qli@bigbro:~/lvliang/LVASPTHW$ cp ~/Desktop/ex16 .
qli@bigbro:~/lvliang/LVASPTHW$ ls
ex01 ex02 ex03 ex04 ex05 ex06 ex07 ex08 ex09 ex10 ex11 ex12 ex13 ex14 ex15 ex16 ex74 ex77 ex78 potcar
qli@bigbro:~/lvliang/LVASPTHW$

4) 注意事项:

1) 必须通过mlvliang这个命令将超算中心挂载到本地电脑上之后,我们才可以互传文件。

2) 如果还没有挂载,就将电脑的内容复制到lvliang这个文件夹中,那么挂载之后,服务器中不会显示刚刚复制的内容

3) 不要用鼠标点击电脑里面的文件夹查看文件,这样会很慢,只能使用命令!!!切记!!

4) 卸载的时候,使用mlvliang 这个命令,然后输入自己的电脑密码(不是超算中心的了。)

5) 我们这样做,相当于把超算中心当做一个移动硬盘来使用,非常方便。

6 异常问题的处理

1)挂载超算中心到本地电脑上的时候,有时候因为网络连接,会出现下图中的错误。这时候我们先使用ulvliang命令把超算中心卸载掉,然后再重新挂载就可以了。

2) 如果上面还解决不了的话,可以尝试着先关机,出去溜达一会儿,然后回来再弄。或者找超算管理员解决。他们一般都很上心,服务响应很快。

小结

本节就先介绍到这里,大家可以通过这样的方式,安装VPN,连接以及挂载超算中心,并将自己的文件上传到超算中心(比如VASP的那一堆POTCAR文件,自己的脚本,任务文件等等)。先把准备工作做好,下一节我们就可以提交任务进行计算了。

本节我们Bader电荷分析的常见问题做个总结。

VTST的网站

Henkelman 课题组主页:

http://theory.cm.utexas.edu/henkelman/

Bader计算的链接:

http://theory.cm.utexas.edu/henkelman/code/bader/

VTST脚本链接:

http://theory.cm.utexas.edu/vtsttools/

常见问题:

电荷数字保留位数:

Bader电荷分析只是定性的辅助工具,得到的结果肯定也是定性的。大致分析原子上的带电情况即可,不要去较真小数点后多少位,一般来说小数点后两位就足够了。

ACF.dat 文件怎么看?

ACF.dat 中的CHARGE那一列,对应的是每个原子上总的价电子数目。

划重点: 1)总的 2)价电子数目

如何判断原子的带电情况?

你需要用CHARGE那列的数值去减去该原子对应的POTCAR中的价电子数目。

怎么才能得到POTCAR中原子的价电子数目呢?

打开POTCAR,查找关键词:ZVAL,后面对应的就是价电子数目,更方便点:

grep ZVAL POTCAR

划重点:不要以为自己元素周期表倒背如流就可以随便设定原子的价电子数目。

POTCAR中原子的价电子数目有些和周期表是一样的,比如H。

有些差别是很大的。比如:Europium [Xe]4f76s2, Lanshipunvboshanyougatedihuoerdiuyilu 中的you。

You有9个价电子,但POTCAR中有17个。

减完之后怎么分析?

如果一个原子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电荷分析出来的化合价与我们在教科书里面所学到的化合价还是有区别的。


师兄,前面扯了那多么,直接用POTCAR中的价电子数减去CHARGE对应的不就更直接了?

是的,你很聪明:对应前面的例子:

  • 1) 5 –6.2 = -1.2 说明该原子是-1.2价,得到了1.2个电子,

  • 2) 5 - 4.3 = 0.7 说明该原子是 +0.7 价,失去了0.7个电子。

所以得失电子和化学价是反着的。这点你能把握住,就会分析了。

总结:

Bader电荷分析并不神秘,你需要做的有两点:

1) 去看VTST的官网,知道怎么去算;
2) 怎么通过得失电子判断原子的带电情况。ACF.dat中的CHARGE列,以及POTCAR中的价电子数。

最近,群里有人在问Bader电荷分析的问题,在这里,将Bader分析的基本流程,以及本人写的一个后处理的脚本分享一下,希望大家不要再纠缠这个问题了。大家务必认真浏览参考网址的内容。http://theory.cm.utexas.edu/henkelman/code/bader/

计算流程

优化自己的体系结构:

使用VASP计算,获得稳定的结构,过程略过。

Bader电荷分析的计算部分:

1) 将前面优化完的CONTCAR 重命名为POSCAR

2) 设置INCAR:

1
2
3
4
LAECHG=.TRUE. 
LCHARG = .TRUE.
NSW = 0
IBRION = -1 ## 前面有了NSW = 0, 这个也可以不设置

3) KPOINTS可以用之前优化计算的,也可设置的稍微大些。

4) WAVECARCHGCAR等有的话就读一下(在第二步加上读它们的相关参数)。没有的话就不读了,这个无关紧要,不要纠结。但是,如果你的体系很难收敛的时候,建议保留上一步的WAVECAR以便节省计算时间,如果没有的话电子步数适当增加(NELM=200) 。

获取VTST的脚本

1)下载网址:

2)将前面下载的内容解压,然后复制到~/bin 文件夹中。

3)如果后面运行的时候遇到权限问题:执行:

chmod u+x ~/bin/chgsum.pl

chmod u+x ~/bin/bader

使用VTST的脚本处理结果

1) 进入计算的目录下面

2) chgsum.pl AECCAR0 AECCAR2

注意: AECCAR0AECCAR2 是由LAECHG=.TRUE.这个参数控制输出的。如果你计算没有得到这两个文件,仔细检查一下这个参数。

运行这个命令:你会得到类似这样的输出结果:

结束后,你会得到 CHGCAR_sum 这个文件。

3) bader CHGCAR -ref CHGCAR_sum

注意:

i) 图中大师兄不小心把CHGCAR删掉了…所以没办法呈现完整的流程。放图上去只是想告诉大家,命令是正确的。ii) 如果你在服务器上运行,得到了这样的错误。

1
2
FATAL:kernel too old
Segmentationfault

那么,你需要将计算复制到本地电脑上(由于CHGCAR等文件很大,该过程比较蛋疼,需要忍一会儿),然后用自己的电脑运行这个命令。(前提是电脑有Linux系统,没有的话,我也没办法。)

iii) 命令结束后,你会得到一些相应输出的文件:ACF.dat, BCF.dat, AVF.dat…

iv) 本人一般查看的是ACF.dat文件:(以SiH$_4$为例)

如下图:

ACF.dat文件中,第一列的数字对应的是POSCAR中的原子顺序。

每个原子的电荷对应的是CHARGE那一列。注意,该列中的电荷是该原子价层电子中的电子总数。如果你想要知道这个原子是带正电或者负电荷,需要减去POTCAR中的电子数目。

图中Si为第一个原子:有1.58个电子 ,减去POTCAR中的4,为 -2.42。

这表明Si失去了电子。2.42个电子分别转移到了4个H上面。

每个H有 个电子。(对比下4个H中的电子)

得到任意原子的电荷信息

如果你对自己体系中的某一个或者某些特定的原子感兴趣,又不想每次打开ACF.dat文件或者已经导出来的excel文件。那么可以通过使用下面这个脚本提取相关的电荷信息。

1) 脚本运行命令如下图:get-charge.py Natom Natom 是你感兴趣的原子序数

注意:

A) 目前只支持一个,如果想查看多个,可以运行该命令若干次,或者使用一个for 循环即可:

1
for i in 1 2 3 4 5 ; do get-charge.py $i ; done 

B) 使用该命令前,请务必确认自己所关注的原子在POSCAR中的序数,如果不知道,可以通过p4vasp查看。

2) 脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python
import sys

script, Natom = sys.argv

# Natom is the atom number when run ths script
# Convert Natom into integer

Natom = int(Natom)

# Creat an empty list
charge_list = []

# read ACF.dat file and add all lines with charges into the charge_list
# These lines are started with atom numbers: line.rstrip().split()[0]
# line.rstrip() : ' 19 -1.2426 6.3529 5.9723 9.9947 1.0601 10.4547'
# line.rstrip().split(): '19', '-1.2426', '6.3529', '5.9723', '9.9947', '1.0601', '10.4547'

with open ('ACF.dat', 'r') as infile:
lines = infile.readlines()
for line in lines:
if line.rstrip().split()[0].isdigit(): # == True: # escape the first 2 and last 4 lines
charge_list.append(line.rstrip())

# Print the charge information of Natom
for i in charge_list:
# i.split() is used to split the whole line into different columns
if Natom == int(i.split()[0]):
# The 5th data in each line is the charge value, so we print i.split()[4]
print Natom, i.split()[4]

原理:

ACF.dat中的信息以行的形式保存到一个列表里面。

然后根据用户输入的原子序数,调出来对应行中的电荷信息。

扩展练习

1) 浏览VTST官网Bader电荷分析的有关内容。

2) 找几个简单的气相分子或者自己的体系练练手。

总结

本节简单介绍了一下Bader电荷分析的计算流程,电荷分析的过程,以及本人自己写的一个小脚本。大家如果还有其他遇到的问题,可以在本文后面留言。我会持续更新相关的问题解答。