VASPKIT---VASP软件预-后处理工具介绍 1. VASPKIT简介2. VASPKIT的配置和使用3. VASPKIT的子功能介绍3.1 VASP输入文件的生成和检查3.2 能带计算PBE泛函计算能带HSE06杂化泛函计算能带3.3 分波态密度和局域态密度3.4 热力学量校正气相分子的热力学校正吸附质分子的热力学校正3.5 差分电荷密度图的绘制3.6. 催化相关将NEB路径转成PDB文件以可视化线性插点生成NEB的路径虚频校正估算一级反应的反应速率和半衰期结构操作小工具3.7. 能带反折叠计算 3.8 3D能带计算3.9 费米面计算3.10 VASP2BoltzTraP接口3.11 基于能量-应变关系计算弹性常数3.12 用VASPKIT计算有效质量3.13 绘制原子电荷着色的结构图 4. 用户自定义界面(测试功能)二维材料MoS2投影能带计算(不考虑自旋极化和旋轨耦合)5. VASPKIT命令行批量操作6. VASPKIT的引用和手册开发不易,你的打赏是对开发者的鼓励。Appendix:菜单功能介绍
VASP
的全称Vienna Ab-initio Simulation Package
,是维也纳大学Hafner小组开发的进行电子结构计算和量子力学-分子动力学模拟软件包。它是目前材料模拟和计算物质科学研究中最流行的商用软件之一。与Material Studio软件包中的CASTEP
功能类似,但是VASP
的精度相对要高一点。不同于CASTEP
的图形界面,VASP
是一套没有界面的计算软件,建模、可视化、数据分析都需要依赖第三方工具如P4VASP、ASE、Pymatgen、VESTA软件等。VESTA、P4VASP主要是用来建模、可视化和分析部分数据。而ASE、Pymatgen这些软件擅长于数据处理,但是安装比较麻烦,同时入门门槛比较高,需要使用者有一定的编程水平。VASP
用户的学科分布很广,有做催化的,有做光学的,有做材料的,各个领域的数据后处理方式大相径庭。很多用户开发并贡献了自己所在领域用到的的脚本或者小程序,本人就开发了一款用来处理结构文件的POSCARtookit
脚本。但是对于新用户来说,找到并成功使用这些脚本是不太容易的。因此一款容易上手、功能强大的预-后数据处理软件vaspkit
应运而生。
最新版的vaspkit
是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。vaspkit 0.72
版本相对于之前的版本做了很多菜单调整,将功能相似的进行了归类,优化了一些已有功能,并增加了一些与催化有关的功能。VASPKIT release
版本是一款用FORTRAN
编写,在LINUX
环境下运行的二进制软件。它几乎不依赖于其他库,软件体积仅仅5.0M,无需安装即可使用,同时EXAMPLES
目录下面有主要功能的测试例子,方便用户学习使用。
主要功能有:1.自动生成VASP计算所需的必备文件,包括INCAR、POTCAR、POSCAR等,并对其进行格式检查 2.结构对称性查找 3.催化方面的工具,根据层数或者高度区间固定原子,NEB路径生成、NEB路径生成可视化的PDB文件、虚频校正等。 4.生成晶体的能带路径(包括杂化泛函),并处理能带数据 5.处理态密度DOS和投影态密度PDOS 6.处理电荷密度、静电势,绘制是空间波函数 7.其他功能,比如热力学量校正(吸附质分子和气相分子),光学、分子动力学、导电率和半导体方面的小工具。
详细可见附录:VASPKIT菜单功能介绍
0.73版本新增功能和修复的BUGs
vaspkit
是一款运行在LINUX环境下的软件,为了确保能够使用vaspkit
的完整功能。用户可以配置vaspkit
的环境目录,在下一次运行时生效。通过在bash
终端下运行以下命令将环境变量文件复制到用户目录下。
1cp -f how_to_set_environment_variable ~/.vaspkit
并编辑.vaspkit
文件
xxxxxxxxxx
11vi ~/.vaspkit
该配置文件主要用来设置vaspkit
的环境变量,包括VASP版本信息,赝势库的目录,泛函方法的选择,并选择是否按照VASP官方的推荐生成元素的赝势文件,设置生成的INCAR模板是覆盖、追加还是备份原有的INCAR。
xxxxxxxxxx
111# cp how_to_set_environment_variable ~/.vaspkit and modify the ~/.vaspkit file based on your settings!
2VASP5 .TRUE. # .TRUE. or .FALSE.; Set .FALSE. if using vasp.4.x
3GGA_PATH '~/POTCAR/GGA' # Path of GGA potential.
4PBE_PATH '~/POTCAR/PBE' # Path of PBE potential.
5LDA_PATH '~/POTCAR/LDA' # Path of LDA potential.
6POTCAR_TYPE PBE # PBE, GGA or LDA;
7GW_POTCAR .FALSE. # .TRUE. or .FALSE.;
8RECOMMENDED_POTCAR .TRUE. # .TRUE. or .FALSE.;
9MINI_INCAR .FALSE. # .TRUE. or .FALSE.;
10SET_FERMI_ENERGY_ZERO .TRUE. # .TRUE. or .FALSE.;
11SET_INCAR_WRITE_MODE OVERRIDE # OVERRIDE, APPEND,BACK-UP-OLD,BACK-UP-NEW;
设置好POTCAR的目录和完成一些其他的设置后,就可以启动vaspkit
了。
为了方便,可以将vaspkit
的绝对路径加入到环境变量里,如果是LINUX的用户,可以这样操作:
xxxxxxxxxx
21echo 'export PATH=/home/vaspkit.0.73/bin/:$PATH' >> ~/.bashrc
2source ~/.bashrc
其中/home/vaspkit.0.73/bin/
用自己的vaspkit
可执行文件所在bin
目录的绝对路径替代。
vaspkit
自0.73
版之后提供了自动配置脚本setup.sh
,source setup.sh
或者bash setup.sh
可以完成配置。对于新用户来说非常友好,但是赝势目录还需自己设置。如果已经存在~/.vaspkit
,将不会覆盖它,仍使用老版本的环境变量。
在终端直接输入vaspkit
或者/home/vaspkit.0.73/bin/vaspkit
开始运行vaspkit
程序。不出意外,你将会得到一个与我展示的一致的,非常萌的界面:
x1\\\///
2/ _ _ \ Hey, you must know what you are doing.
3(| (.)(.) |) Otherwise you might get wrong results!
4+-----.OOOo--()--oOOO.------------------------------------------+
5| A Pre- and Post-Processing Program for VASP Code |
6| VASPKIT Version: 0.73 (18 Apr. 2019) |
7| Developed by Vei WANG (wangvei@me.com) |
8| Contributor: Nan XU (tamas@zju.edu.cn) |
9+-----.oooO-----------------------------------------------------+
10( ) Oooo.
11\ ( ( )
12\_) ) /
13(_/
14===================== Structural Options ========================
151) VASP Input Files Generator 2) Elastic-Properties
163) K-Path Generator 4) Structure Editor
175) Catalysis-ElectroChemi Kit 6) Symmetry Search
18
19===================== Electronic Options ========================
2011) Density-of-States 21) DFT Band-Structure
2123) 3D Band-Structure 25) Hybrid-DFT Band-Structure
2226) Fermi-Surface 28) Band-Structure Unfolding
23
24=========== Charge & Potential & Wavefunction Options ===========
2531) Charge & Spin Density 42) Potential-Related
2651) Wave-Function Analysis
27====================== Misc Utilities ===========================
2871) Linear Optics 72) Molecular-Dynamics Kit
2973) VASP2BoltzTraP Interface
3091) Semiconductor Calculator 92) 2D-Materials Kit
31
320) Quit
33------------>>
如果出现以下问题,说明你的LINUX运行依赖库版本太低,需要升级(不建议),可以联系开发者获得在低版本LINUX环境下编译的版本。
xxxxxxxxxx
11vaspkit: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by vaspkit)
如果出现-bash: line 7: ./vaspkit: Permission denied
权限问题,只需赋予vaspkit
执行权限即可:
xxxxxxxxxx
11chmod u+x /home/vaspkit.0.73/bin/vaspkit
本教程将介绍使用vaspkit
生成VASP的输入文件,使用PBE和HSE06计算能带,提取分析分波态密度和局域态密度,校正热力学量计算自由能、生成差分电荷密度, 催化相关的工具和能带反折叠计算。能带计算包含了使用普通泛函和杂化泛函两个例子,而热力学量校正主要计算零点振动能及温度对自由能和焓的贡献。
为了成功运行VASP计算任务,我们至少需要4个文件:INCAR、POSCAR、POTCAR及KPOINTS,INCAR是告诉 VASP算什么任务,怎么算的控制文件;POSCAR是包含晶格信息,原子坐标信息和原子速度信息(MD用)的文件;POTCAR是赝势文件,也就是将内层电子用势函数表示;KPOINTS(可包含在INCAR内,不推荐省略)包含了倒易空间内K点信息,波函数会在这些点上积分得到电荷密度。
vaspkit 0.71
以后的版本将K点生成、POTCAR生成和INCAR生成整合到了功能1
:VASP Input Files Generator
中。
xxxxxxxxxx
91101) Customize INCAR File
2102) Generate KPOINTS File for SCF Calculation
3103) Generate POTCAR File with Default Setting
4104) Generate POTCAR File with User Specified Potential
5105) Generate POSCAR File from cif (no fractional occupations)
6106) Generate POSCAR File from Material Studio xsd (retain fixes)
7107) Reformat POSCAR File in Specified Order of Elements
8108) Successive Procedure to Generate VASP Files and Check
9109) Check All VASP Files
下面展示怎么使用vaspkit
进行一个VASP计算任务。
POSCAR
一般由软件生成或者从数据库中获得,简单体系可自己搭建。本例中从数据库(http://www.catalysthub.net/)中获得纤锌矿ZnO的POSCAR文件(也可以下载CIF文件,然后通过vaspkit
的功能105
或者VESTA
转化成POSCAR文件,只是原子位置分数占据的问题需要注意)。在catalysthub
中检索ZnO
,检索结果如下所示。纤锌矿ZnO的为六方晶系,空间群为P63mc
。因此下载第二行的POSCAR,下载的文件名为ZnO-1811117.vasp
。置于vaspkit.0.73/examples/ZnO_optimization
目录下。
xxxxxxxxxx
81The following shows the results (4) for: ZnO
2
3Full formula Space group HM HALL Lattice system Band gap Structure file
4Zn1O1 216 F-43m F -4 2 3 Cubic 0.63110 eV CIF | POSCAR | LAMMPS
5Zn2O2 186 P63mc P 6c -2c Hexagonal 0.73170 eV CIF | POSCAR | LAMMPS
6Zn1O1 225 Fm-3m -F 4 2 3 Cubic 0.71940 eV CIF | POSCAR | LAMMPS
7Zn1O1 221 Pm-3m -P 4 2 3 Cubic 0.00000 eV CIF | POSCAR | LAMMPS
8
接下来进行晶格优化得到合理的结构。将其改名为POSCAR文件。
xxxxxxxxxx
11cp -f ZnO-1811117.vasp POSCAR
Material Studio是常用的构建模型和可视化结构的软件,MS中的结构亦可借助其它工具转换成
POSCAR
。目前常用的做法是在MS中导出cif
文件,再通过功能105
或者vesta
转换成POSCAR
。但是转换颇为麻烦并且会丢失原子的位置限制信息。因此赵焱老师开发了固定原子坐标perl小脚本xsd2pos.pl,可以在MS中运行perl
脚本将结构生成POSCAR
,链接里有详细的操作流程,这里不再赘述。vaspkit
开发者也开发了一款类似的后处理脚本,能够将含有位置固定信息的xsd
批量转换成·POSCAR
,并将此脚本集成到了vaspkit
的106
功能中。xsd
中可以包含Fix Fractional Position
或者Fix Cartesian Position
两种限制方式。
我们采用vaspkit
预设的INCAR组合
生成所需的INCAR文件。在有POSCAR的目录下运行vaspkit
,输入1
选择功能VASP Input Files Generator
,然后输入101
选择Customize INCAR File
,会得到以下的显示信息:
xxxxxxxxxx
221+-------------------------- Warm Tips --------------------------+
2You MUST Know What You Are Doing
3Some Parameters in INCAR File Neet To Be Set/Adjusted Manually
4+---------------------------------------------------------------+
5======================== INCAR Options ==========================
6ST) Static-Calculation SR) Standard Relaxation
7MG) Magnetic Properties SO) Spin-Orbit Coupling
8D3) DFT-D3 no-damping Correction H6) HSE06 Calculation
9PU) DFT+U Calculation MD) Molecular Dynamics
10GW) GW0 Calculation BS) BSE Calculation
11DC) Elastic Constant EL) ELF Calculation
12BD) Bader Charge Analysis OP) Optical Properties
13EC) Static Dielectric Constant PC) Decomposed Charge Density
14FD) Phonon-Finite-Displacement DT) Phonon-DFPT
15NE) Nudged Elastic Band (NEB) DM) The Dimer Method
16FQ) Frequence Calculations LR) Lattice Relaxation
17
180) Quit
199) Back
20------------>>
21Input Key-Parameters (STH6D2 means HSE06-D2 Static-Calcualtion)
22LR
输入LR
,就会得到一个预设好的用于做晶格弛豫任务的INCAR(有些模板需要手动修改。比如DFT+U的U值设定,NEB的IMAGES数目等)。如果已经有INCAR文件,则原来的INCAR文件会被覆盖。你可以编辑~/.vaspkit
更改INCAR的输出设置。只需将最后一行的SET_INCAR_WRITE_MODE
由默认的OVERRIDE
更改为 APPEND,BACK-UP-OLD,BACK-UP-NEW
中的一个,分别对应于新的内容增加到原有的INCAR后面,备份原有的INCAR再写入新的INCAR和写入到新的INCAR.new里面。
接下来生成KPOINTS文件。对于非能带计算,只需用程序自动撒点的方式,但是需要用户选择撒点方式和K点密度。具体内容可以参考李强的教程Learn VASP The Hard Way (Ex1): VASP基本输入文件的准备
。启动vaspkit
,输入1
选择功能VASP Input Files Generator
,然后输入102
选择功能Generate KPOINTS File for SCF Calculation
,接下来输入2
选择Gamma Scheme
撒点方式(稳妥的选择),会得到以下的显示信息:
xxxxxxxxxx
101-->> (1) Reading Lattices & Atomic-Positions from POSCAR File...
2+-------------------------- Warm Tips --------------------------+
3* Accuracy Levels: (1) Low: 0.06~0.04;
4(2) Medium: 0.04~0.03;
5(3) Fine: 0.02-0.01.
6(4) Gamma-Only: 0.
7* 0.04 is Generally Precise Enough!
8+---------------------------------------------------------------+
9Input KP-Resolved Value (unit: 2*PI/Angstrom):
10------------>>
根据提示0.04
已经足够精确了,因此输入0.04
,将会得在当前目录下得到KPOINTS和POTCAR(自动生成)文件。
xxxxxxxxxx
21-->> (2) Written KPOINTS File!
2-->> (3) Written POTCAR File with the Recommended Potential!
KPOINTS内容如下:
xxxxxxxxxx
51K-Mesh Generated with KP-Resolved Value : 0.040
20
3Gamma
49 9 5
50.0 0.0 0.0
Learn VASP The Hard Way Ex19 谁偷走的我的机时?(三)
提到了一个简单的K点数目判断准则,对于半导体k点数目乘实空间对应晶矢量大于20Å(参考下图),本例中ka=29.62Å已经符合经验规律。刘锦程提到对于非正交体系 ,倒格矢长度和晶常数不满足反比关系,所以采用ka≈kb≈kc的经验准则并不能保证 K点密度在各个方向长相等。而vaspkit
严格计算了倒空间晶格矢量比例,选用经验“步长”(倒空间长度除以K点数目)0.03~0.04,vaspkit
就能根据所选的K点密度自动生成各个方向的K点数,此时倒空间K点的resolution 为.
生成KPOINTS的同时,会根据POSCAR中的元素类型从赝势库中提取并组合生成POTCAR,前提是你在~/.vaspkit
里正确设置了PBE_PATH
的路径,并根据POTCAR_TYPE
选择是生成GGA-PW91、LDA还是PBE的赝势。值得注意的是提示信息Written POTCAR File with the Recommended Potential!
,意味着vaspkit
根据VASP官网的推荐从PBE的赝势库中选择赝势。
PBE的赝势分为几种,无后缀、_pv,_sv,_d
和数字后缀,_pv,_sv,_d
就是说semi-core
的p,s
或者d
也当做价态处理了。因为有些情况下,次外层电子也参与了成键。刘锦程提到进行Bader
电荷分析,需要采用带_pv,_sv
的赝势。特别地,官网提到Important Note: If dimers with short bonds are present in the compound (O2 , CO, N2 , F2 , P2 , S2 , Cl2 ), we recommend to use the _h potentials. Specifically, C_h, O_h, N_h, F_h, P_h, S_h, Cl_h.
常用的做法是:用两种赝势测试一下对自己所关心的问题的影响情况。在影响不大的情况下,选用不含后缀的赝势,毕竟包含更多的价电子,截断能上升很多,计算量明显增大。
如果需要手动生成POTCAR,可以通过功能
104
手动选择每个元素的赝势类型。本例中演示给Zn选择Zn_pv
的PBE
赝势。选择功能104
,依次输入需要设定的赝势类型O
和Zn_pv
,如果设定的赝势目录下没有你选择的赝势类型,将会提示你重新输入。
xxxxxxxxxx
61-->> (1) Reading Structural Parameters from POSCAR File...
2Auto detected POTCAR_TYPE is O, please type the one you want!
3O
4Auto detected POTCAR_TYPE is Zn, please type the one you want!
5Zn_pv
6-->> (2) Written POTCAR File with user specified Potential!
通过命令grep TIT POTCAR
可以看到POTCAR中的赝势为O
和Zn_pv
,满足我们的需求。
为了取得有意义的结果,需要满足INCAR中的ENCUT大于POTCAR中的所有元素的ENMAX。通过以下命令可以查看所有元素的ENMAX:
xxxxxxxxxx
11grep ENMAX POTCAR
可以看到默认的INCAR参数中ENCUT=400eV
被注释掉了,但是保留了PREC = Normal
,程序会自动将ENCUT
设为max(ENMAX)
。当然也可以自行设置ENCUT
参数,只要参数大于所有元素的ENMAX
,这时候以自己设定的ENCUT
参数为准。注意在优化晶胞常数时,需要用较高的ENCUT
(Learn VASP The Hard Way (Ex36):直接优化晶格常数
),因此LR
任务(优化晶格常数)模板生成的INCAR中默认设置了PREC=High
,VASP程序会自动将ENCUT
设为max(ENMAX)*1.3
。乐平老师提到,为了确保相同体系的ENCUT
一致,VASP最新的官方手册已经不推荐使用PREC=High
了,它推荐设置为PREC=Accurate
并手动设置ENCUT
的值。
提交VASP计算任务,可以发现任务很快就失败了。错误日志如下:
xxxxxxxxxx
81running on 16 total cores
2distrk: each k-point on 16 cores, 1 groups
3distr: one band on 1 cores, 16 groups
4using from now: INCAR
5vasp.5.4.4.18Apr17-6-g9f103f2a35 (build Apr 07 2018 02:38:49) complex
6
7POSCAR found type information on POSCAR O
8ERROR: the type information is not consistent with the number of types
通过分析发现,VASP只读出了O的元素和赝势,Zn没有从POSCAR中读出,因此报错。原因在于,从数据库下载的POSCAR中空格的分隔符是制表符
\t
,VASP不能正确读出以\t
为分隔符的字符串。同样的问题也会在INCAR中出现。另外在WINDOWS系统下生成的POSCAR或INCAR在VASP中可能会出现非常奇怪的错误。最致命的是VASP不会自动检查POSCAR中的元素类型是否与POTCAR元素类型是否一致,也就是你算石墨烯也可以用H的赝势,并不会报错,但是结果一定是错的!因此vaspkit 0.71
以后的版本加入了格式纠正和赝势元素检查的功能109
。 输入109
,vaspkit
会自动进行INCAR和POSCAR的格式纠正,并检查赝势元素是否一致。
xxxxxxxxxx
51-->> (1) Reading Structural Parameters from POSCAR File...
2All Files Needed Exist.
3Element type in POSCAR may be not corresponding to POTCAR
4POTCAR:Zn_pv
5POSCAR:Zn
执行检查之后,再次提交任务。此时任务已经能正确运行。
为了方便用户,在乐平老师的建议下,我们设置了功能
108
:Successive procedure to generate VASP files and check
。先设置INCAR,再设置K点密度,生成KPOINTS和POTCAR,最后再调用功能109
自动检查所有的文件是否存在问题。我们的目标是,VASP之前,先KIT一下。
能带计算的KPOINTS与普通计算的KPOINTS不一样,通常需要第一布里渊区内的一条或几条高对称点路径来计算能带性质。 传统的做法是通过SeeK-Path网站或者Material Studio软件获得晶体倒易空间第一布里渊区内的高对称点,再通过脚本插值生成高对称点路径上的K点,得到满足要求的KPOINTS。好消息是新版的vaspkit
集成了与SeeK-path一致的算法分析晶体的高对称点,可以方便地生成PBE泛函和HSE06杂化泛函所需的KPOINTS,目前不支持三斜晶系。
在vaspkit.0.73/examples/hybrid_DFT_band
目录下有一个使用HSE06杂化泛函计算磷化镓的能带结构的例子。同样也可以使用PBE泛函计算该磷化镓结构的能带,只是普通的PBE泛函会低估带隙。为了计算能带,首先得获得晶体的第一布里渊区内的一条或几条高对称点路径。在有POSCAR的目录下运行vaspkit
,输入3
选择功能Band-Path Generator
,在下一个界面输入303
选择3D bulk structure (Experimental)
,你会得到以下信息:
xxxxxxxxxx
361+-------------------------- Warm Tips --------------------------+
2See An Example in vaspkit/examples/seek_kpath.
3This Feature Is Experimental & Check Your System using SeeK-Path.
4For More details See [www.materialscloud.org/work/tools/seekpath].
5+---------------------------------------------------------------+
6-->> (1) Reading Structural Parameters from POSCAR File...
7+-------------------------- Summary ----------------------------+
8Prototype: AB
9Total Atoms in Input Cell: 2
10Lattice Constants in Input Cell: 3.854 3.854 3.854
11Lattice Angles in Input Cell: 60.000 60.000 60.000
12Total Atoms in Primitive Cell: 2
13Lattice Constants in Primitive Cell: 3.854 3.854 3.854
14Lattice Angles in Primitive Cell: 60.000 60.000 60.000
15Crystal System: Cubic
16Crystal Class: -43m
17Bravais Lattice: cF
18Extended Bravais Lattice: cF2
19Space Group: 216
20Point Group: 31 [ Td ]
21International: F-43m
22Symmetry Operations: 24
23Suggested K-Path: (shown in the next line)
24[ GAMMA-X-U|K-GAMMA-L-W-X ]
25+---------------------------------------------------------------+
26-->> (2) Written PRIMCELL.vasp file.
27-->> (3) Written KPATH.in File for Band-Structure Calculation.
28-->> (4) Written HIGH_SYMMETRY_POINTS File for Reference.
29-->> (5) Written POTCAR File with the Recommended Potential!
30+---------------------------------------------------------------+
31| * DISCLAIMER * |
32| CHECK Your Results for Consistency if Necessary |
33| Bug Reports and Suggestions for Improvements Are Welcome |
34| Citation of VASPKIT Is Not Mandatory BUT Would Be Appreciated |
35| (^.^) GOOD LUCK (^.^) |
36+---------------------------------------------------------------+
vaspkit
会分析晶体的对称性并得到两条建议的能带路径[ GAMMA-X-U|K-GAMMA-L-W-X ]
,同时生成了晶体的单胞结构PRIMCELL.vasp
,并生成了KPATH.in
用于能带结构计算。KPATH.in
的第二行数字表示了每小段路径中插值的K点的数目,如果默认的数值都算不动的话,可以考虑将其设小。能带路径只针对于primitive cell,因此需要执行下面的命令,用生成的primitive cell作为计算的结构文件。
xxxxxxxxxx
11cp -f PRIMCELL.vasp POSCAR
下图展示的是磷化镓的primitive cell和其第一布里渊区的高对称点位置,由SeeK-path网站生成。
PBE泛函计算能带分为两步,第一步使用普通K点网格(功能102)进行自洽计算 ,启动vaspkit
,输入1
选择VASP Input Files Generator
,再选择108
选择Successive Procedure to Generate VASP Files and Check
功能,输入ST
,生成静态自洽的INCAR,并按照提示生成自洽用的K点。本例中ISMEAR=0
,即Gaussian Smearing
方法,如果是金属体系可以选择换成ISMEAR=1
。接着调用VASP计算。第二步:使用KPATH.in里的高对称点信息作为新的KPOINTS,然后读入电荷CHGCAR进行能带非自洽计算,即:
xxxxxxxxxx
21cp -f KPATH.in KPOINTS
2echo "ICHARG=11" >> INCAR
也就是读入上一步生成的CHGCAR并保持不变,调用VASP计算。
待第二步完成后,通过功能21
从能量本征值文件中读入能带结构。值得一提的是,费米能级应该以自洽计算的为准,因此如果想获得准确的费米能级,可以在第一步运行之后执行以下命令提取自洽后DOSCAR中的费米能级给第二步处理能带数据用:
xxxxxxxxxx
11echo -e "\n" $(sed -n 6p DOSCAR | awk '{print $4}') > FERMI_LEVEL.in
杂化泛函相比于PBE泛函和DFT+U方法,在计算带隙方面很有优势,但是HSE06的杂化泛函需要KPOINTS里既有权重不为0的K点进行自洽计算,又要求有权重为0的高对称点计算能带性质。因此操作流程颇为繁琐。
重启vaspkit
,输入25
选择功能Hybrid-DFT Band-Structure
,在下一个界面输入251
选择Generate KPOINTS File for Hybrid Band-Structure Calculation
。再输入1
选择Monkhorst-Pack Scheme
用MP方法生成自洽用的K点网格并根据建议输入0.04
选择较密的K点密度(权重不为0的K点用于自恰计算),接下来还需手动指定能带路径上K点的密度,用于能带计算,再次输入0.04
,即可生成HSE06杂化泛函所需的KPOINTS。0.72以前的版本在不同的能带路径上取相同的K点数,从而导致在不同路径上的K分布并不均匀,如下图a所示。VASPKIT
最新版支持根据给定k点间隔自动确定不同能带路径上的K点数,从而保证在整个能带计算中均匀撒点,如下图b所示。
xxxxxxxxxx
171 ======================= K-Mesh Scheme ==========================
2 1) Monkhorst-Pack Scheme
3 2) Gamma Scheme
4
5 0) Quit
6 9) Back
7 ------------->>
81
9 +-------------------------- Warm Tips --------------------------+
10 Input Resolution Value to Determine K-Mesh for SCF Calculation:
11 (Typical Value: 0.03-0.04 is Generally Precise Enough)
12 ------------>>
130.03
14 Input Resolution Value along K-Path for Band Calculation:
15 (Typical Value: 0.03 for DFT and 0.04 for hybrid DFT)
16 ------------>>
170.04
可通过KPOINTS文件第一行查看产生K点产生信息。Parameters to Generate KPOINTS (Don't Edit This Line): 0.040 0.040 24 126 6 28 10 30 24 20 14
,第一个和第二个数据分别决定总能计算(权重不为零部分)和能带计算(权重为零部分)K点密度,也就是我们之前输入的数值,24表示总能计算部分在不可约布里渊区的K点数目,126表示能带计算中总K点数目,6表示共有6条能带路径,从第一到第六条能带上分别选取28,10,30,24,20和14个K点,共126个K点。此均匀撒点的方式能够提高能带的计算效率。但是请注意:由于0.72当前及之后版本将采用新的杂化能带计算KPOINTS文件格式,不再兼容由VASPKIT早期产生的杂化能带数据提取。
因为HSE06计算非常耗时,因此本例中采用两步法加速收敛,当然也可以跳过第一步直接用HSE06进行自洽。第一步:使用PBE泛函产生波函数和电子密度,第二步:保持KPOINTS不变,读入波函数进行HSE06计算。
利用功能Customize INCAR File
生成第一步PBE自洽需要的INCR。重启vaspkit
,输入1
选择VASP Input Files Generator
,再选择101
选择Customize INCAR File
功能,输入ST
,生成静态自洽的INCAR。本例中ISMEAR=0
,即Gaussian Smearing
方法,如果是金属体系可以选择换成ISMEAR=1
。调用VASP计算,待自洽完成后执行第二步HSE06计算。重启vaspkit
, 选择功能101 Customize INCAR File
功能,输入STH6
,生成HSE06计算所需要的INCAR。再次调用VASP计算后,就完成了HSE06的自洽计算。
接下来使用vaspkit
提取能带数据,并输出高对称点在能带图中的坐标信息。输入25
选择功能Hybrid-DFT Band-Structure
,在下一个界面输入252
选择Read Band-Structure for Hybrid-DFT Calculation
处理能带数据。处理结果如下所示
xxxxxxxxxx
91-->> (1) Reading Input Parameters From INCAR File...
2-->> (2) Reading Fermi-Level From DOSCAR File...
3-->> (3) Reading Energy-Levels From EIGENVAL File...
4-->> (4) Reading Lattices & Atomic-Positions from POSCAR File...
5-->> (5) Reading K-Paths From KPATH.in File...
6-->> (6) Written BAND.dat File!
7-->> (7) Written BAND-REFORMATTED.dat File!
8-->> (8) Written KLINES.dat File!
9-->> (9) Written KLABELS File!
BAND-REFORMATTED.dat
是修改后生成的能带信息(0.70版本生成的有问题,Band.dat正常!0.71以后的版本以后已修复。),格式如下所示,第一列是K-PATH,相邻的距离为高对称点在倒空间的距离,第二列,第三列等即为所需的不同的能带线。如果开了自旋,第二列和第三列为能带1的spin up和spin down,以此类推。将dat文件拖入Origin软件后,即可得到能带图。
xxxxxxxxxx
91# Kpath Energy-Level (in eV)
20.00000 -14.54063 -0.82009 -0.82009
30.12809 -14.48597 -1.24459 -0.97903
40.25617 -14.32291 -2.13627 -1.37615
50.38426 -14.05442 -3.15793 -1.87258
60.51234 -13.68641 -4.20790 -2.37100
70.64043 -13.22973 -5.24586 -2.81765
80.76851 -12.70500 -6.23748 -3.18362
90.89660 -12.15541 -7.12954 -3.45312
KLABELS
是由读取能带标识的子模块生成的。通过读取KPATH.in
(PBE能带计算时为KPOINTS)高对称点后标识,写入KLABELS文件。
KPATH.in
文件内容如下:
xxxxxxxxxx
211Generated by VASPKIT based on Hinuma et al.'s Paper, Comp. Mat. Sci. 128, 140 (2017), DOI: 10.1016/j.commatsci.2016.10.015.
210
3Line-Mode
4Reciprocal
50.0000000000 0.0000000000 0.0000000000 GAMMA
60.5000000000 0.0000000000 0.5000000000 X
7
80.5000000000 0.0000000000 0.5000000000 X
90.6250000000 0.2500000000 0.6250000000 U
10
110.3750000000 0.3750000000 0.7500000000 K
120.0000000000 0.0000000000 0.0000000000 GAMMA
13
140.0000000000 0.0000000000 0.0000000000 GAMMA
150.5000000000 0.5000000000 0.5000000000 L
16
170.5000000000 0.5000000000 0.5000000000 L
180.5000000000 0.2500000000 0.7500000000 W
19
200.5000000000 0.2500000000 0.7500000000 W
210.5000000000 0.0000000000 0.5000000000 X
KLABELS
文件如下:
xxxxxxxxxx
91K-Label K-Coordinate in band-structure plots
2GAMMA 0.000
3X 1.153
4U|K 1.560
5GAMMA 2.783
6L 3.781
7W 4.597
8X 5.173
9* Give the label for each high symmetry point in KPOINTS (KPATH.in) file. Otherwise, they will be identified as 'Undefined' in KLABELS file
因为路径分了两条,所以能带图中第二个高对称点位置的标识为U|K
。K-Coordinate in band-structure plots
也就是每个高对称点在能带图中的横坐标位置。例如能带路径W-L-Gamma
, Gamma
的横坐标就是|W-L|+|L-Gamma|
两条线段(在倒空间中的)长度的累加,以此类推。当出现第二条路径X-W
,Gamma|X
点的横坐标就是第一条路径末点Gamma
的横坐标,而W
点的横坐标为Gamma|X
点的横坐标加上|X-W|
的线段长度。
用户在Origin软件中处理了BAND-REFORMATTED.dat
后,需要按照KLABELS
文件中的位置在能带图中标识高对称点位置。
vaspkit0.73
版本之后支持自动绘制能带图和DOS图,并能够进行自定义设置。当然如果要绘制出出版级的图片,需要自己对生成的Python绘图脚本进行设置。绘图需要用户安装了Python解释器
,并安装Numpy
和Matplotlib
库。在~/.vaspkit
环境变量中进行以下设置:
xxxxxxxxxx
21PYTHON_PATH /usr/bin/python # Python exe containing numpy and matplotlib
2PLOT_MATPLOTLIB .TRUE. # Set it .TRUE. if you want to generate Graphs. (Matplotlib and Numpy packages MUST be embedded in Python)
在运行提取能带或者DOS时会自动进行绘图,选择0
会自动根据预设的绘图设置进行绘图(下图的能带图即使用默认的设置绘的图),亦可选择1
进行手动调整。
xxxxxxxxxx
11If you want use the default setting, type 0, if modity type 1
可以更改的选项有图片尺寸,图片分辨率,能量选择范围,线宽,字体,及颜色,字体大小等。
xxxxxxxxxx
71 ============================ change_plot_setup ========================
2 1) Set if show a graph window or generate graphs silently
3 2) Set Figure size
4 3) Set Figure DPI
5 4) Set energy ranges for DOS or Band
6 5) Set if use the default line colors set or linewidth
7 6) Set fontsize,font-family,fontcolor
原则上讲,态密度可以作为能带结构的一个可视化结果。很多分析和能带的分析结果可以一一对应,很多术语也和能带分析相通。但是因为它更直观,因此在结果讨论中用得比能带分析更广泛一些。在电子能级为准连续分布的情况下,单位能量间隔内的电子态数目。即能量介于~之间的量子态数目与能量差之比,即为态密度。能态密度与能带结构密切相关,是一个重要的基本函数。固体的许多特性,如电子比热、光和X射线的吸收和发射等,都与能态密度有关。在VASP中,
LORBIT=10
计算的就是LDOS,也就是每个原子的局域态密度 (local DOS),是分解到每个原子上面的s,p,d;LORBIT=11
,计算的就是PDOS,投影态密度(projected DOS)或分波态密度(partial DOS),不仅分解到每个原子的s,p,d,而且还进行px,py,pz分解。
vaspkit
最近优化了DOS的提取功能。参考了李强的脚本 。相对于P4VASP
提取DOS信息,vaspkit
有以下几个优点:①不需要将体积庞大的vasprun.xml
拖回本地;②支持f轨道的提取,P4VASP
提取f轨道时存在bug;③生成的dat
文件格式友好,而P4VASP
导出的dat
是以空格为分隔符,无法直接用Origin绘图,并且没有DOS线的图例。
以官网的CO在Ni表面的吸附模型和Ni 100 surface为例提取 PDOS。也可在大师兄群里(217821116
)下载到VASP Official Tutorials.pdf
CO吸附的例子中设置了LORBIT=11
投影了轨道,关闭了自旋极化。
在/vaspkit.0.73/examples/LDOS_PDOS/Partial_DOS_of_CO_on_Ni_111_surface
目录下启动vaspkit
,输入命令115
选择子功能The Sum of Projected DOS for Selected Atoms and orbitals
。我们需要提取的是O
的s,p
轨道,C
的s,p
轨道以及表面的dxy
和d3z2-r2(dz2)
轨道。首先提示你选择元素(累加),第一次输入元素O
,回车后提示你输入提取的轨道名(累加),第一次输入轨道s
。回车后重复以上两个操作。如果想结束输入,在元素选择行直接按回车键结束输入。
xxxxxxxxxx
91 Input the Symbol and/or Number of Atoms to Sum [Total-atom: 7]
2 (Free Format is OK, e.g., C Fe H 1-4 7 8 24),Press "Enter" if you want to end e
3 ntry!
4
5 ------------>>
6O
7 Input the Orbitals to Sum
8 Which orbital? s py pz px dxy dyz dz2 dxz dx2 f-3 ~ f3, "all" for summing ALL.
9s
本次的输入内容如下:
xxxxxxxxxx
11O - s - O - p - C - s - C - p - Ni - dxy - Ni - dz2 - 'Enter'
在目录下会生成一个PDOS_USER.dat
,内容如下:
xxxxxxxxxx
51 #Energy O_s O_p C_s C_p Ni_dxy Ni_dz2
2 -27.10266 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
3 -26.92966 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
4 -26.75566 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
5 -26.58266 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
第一行是列名,也就是轨道的名称,2-301行为PDOS的数据点。拖入Origin可以得到PDOS图,官网的图也放在下面供参考。在~/.vaspkit
中打开绘图设置后,vaspkit
会自动绘制PDOS
图。VASP5.4.4计算的O的s轨道的PDOS会比官网例子低一点,此现象已经用
P4VASP`验证无误。
元素行接受自由格式输入,你可以输入以下内容1-3 4 Ni
表示选择元素1,2,3,4和Ni元素的PDOS进行累加。轨道行只支持标准输入,如果使用了LORBIT=10
不投影轨道,你只能选择 s p d f
中的一个或多个,如果使用了LORBIT=11
投影了轨道,你可以从s p d f
和s py pz px dxy dyz dz2 dxz dx2 f-3 f-2 f-1 f0 f1 f2 f3
中选择一个或多个输入。轨道行还支持输入all
计算所有轨道的DOS之和。
比如元素行输入C O
,对应的轨道选择s px
,那么提取的就是所有C和O元素的s
轨道和px
轨道的PDOS之和。 PDOS_USER.dat
中的轨道名 为#Energy C&O_s&px
,显而易懂。
接下来以纯的Ni表面为例。vaspkit.0.73/examples/LDOS_PDOS/Ni_100_surface_DOS
本例设置了LORBIT=10
,开启了自旋极化。
本次的输入内容如下:
xxxxxxxxxx
111 5 - all - 3 - all - 'Enter'
提取的是上下Ni表面的总态密度和中间bulk
层的总态密度。
PDOS_USER.dat
的内容如下:
xxxxxxxxxx
41 #Energy up_1&5_all dw_1&5_all up_3_all dw_3_all
2 -10.54087 0.00000 0.00000 0.00000 0.00000
3 -10.42787 0.00000 0.00000 0.00000 0.00000
4 -10.31487 0.00000 0.00000 0.00000 0.00000
第二列为上下表面的spin up
的总态密度,第三列为上下表面的spin down
的总态密度。拖进Origin
,可以轻松做出 DOS图。
众所周知,VASP
计算的是在体系在0K下的电子能量,没有考虑温度的贡献。做电化学模拟或者计算反应速率时需要计算自由能, 为了获得反应热需要计算焓, 为了获得0K下的体系内能要计算ZPE。Learn VASP The Hard Way (Ex69) 表面吸附物种熵的计算
中讲述了气相分子和吸附质分子熵不同的计算方法,该系列教程可以在群217821116
下载到PDF版本。刘锦程发布了两篇比较详细的自由能校正教程,包括气体分子自由能和吸附分子自由能,可以参考。
对一个体系来说,焓、熵可以通过统计热力学计算分子的配分函数来获取:主要考虑理想气体的平动,转动,振动,电子贡献。对分子来说,举个例子,一个非线性的三原子分子,一共有3N个自由度。气相里面为:3个平动,3个转动以及3N-6个振动。但是当它吸附到表面上,由于平动和转动被限制住了,这6个自由度则会转化成振动自由度,也就是在表面上分子有3N个振动模式。如果你可视化表面上吸附分子频率计算的结果,会发现最后6个应的是平动和转动,但它们已经不是气相中的平动和转动了,我们称之为:frustrated translation,frustrated rotation。
李强的教程Learn VASP The Hard Way (Ex68) 频率,零点能,吉布斯自由能的计算
提到VASP对于温度校正做的实在是太差了,他建议通过查询数据库(NIST等)的方法获得气相分子的热力学量。 而Gaussian
对于分子和团簇的热力学校正功能比较完善。Sobereva
开发了一个实用意义也有教学意义的Shermo
程序(http://sobereva.com/315
),通过分析高斯的输出结果,计算平动、转动、振动和电子贡献,得到给定温度、压力下体系的内能、焓、熵、自由能、热容。建议大家先看一下该程序的文档。VASPKIT
将该程序集成进来,用户可以直接根据VASP的振动结果给出气相分子的内能、焓、熵、自由能校正。
下面以乙醇(/examples/thermo_correction/ethanol)为例对比VASP和Gaussian的热力学校正结果。
振动计算完成后,启动VASPKIT
,输入5
选择功能Catalysis-ElectroChem Kit
,在下一个界面输入502
选择Thermal corrections for Gas
。紧接着提示输入温度298.15K
、压力1atm
和自旋多重度1
。自旋多重度定义为2S+1,其中S是自旋角动量,它与体系内的单电子数(N)相关。S=N/2,所以说到底最简单的判断方法:自旋多重度等于单电子数+1。乙醇没有单电子,因此自旋多重度为1。(氧气的自旋多重度为3.)该模块需要所有的原子都放开,也就是不能有原子被固定。
xxxxxxxxxx
171+-------------------------- Warm Tips --------------------------+
2This Feature Was Contributed by Nan XU, Sobereva.
3See An Example in vaspkit/examples/thermo_correction/ethanol.
4Vibrations ,Translation,Rotation,Electron contributions are considered.
5GAS molecules should not be with any fix.
6-->> (1) Reading Structural Parameters from CONTCAR File...
7-->> (2) Analyze Molecular symmetry information...
8Molecular symmetry is: Cs
9+---------------------------------------------------------------+
10Please input Temperature(K)!
11298.15
12Please input Pressure(Atm)!
131
14Please input Spin multiplicity!--(Number of Unpaired electron + 1)
151
16------------>>
17
VASPKIT
会计算调用Shermo
模块计算热力学贡献量。
xxxxxxxxxx
91-->> (3) Extracting frequencies from OUTCAR...
2-->> (4) Reading OUTCAR File...
3-->> (5) Calculate Thermal Corrections...
4Zero-point energy E_ZPE : 48.501 kcal/mol 2.103130 eV
5Thermal correction to U(T): 51.486 kcal/mol 2.232567 eV
6Thermal correction to H(T): 52.078 kcal/mol 2.258259 eV
7Thermal correction to G(T): 31.891 kcal/mol 1.382881 eV
8
9Thanks to Sobereva!(sobereva@sina.com)
而高斯G09RevD.01
的计算结果为U(T) 51.94 kcal/mol, H(T) 52.53 kcal/mol, G(T) 33.67 kcal/mol
,理论水平为B3LYP/CC-pVDZ
,可以看到使用VASPKIT计算的分子热力学校正量已经接近Gaussian的计算结果。
对于吸附质分子,Learn VASP The Hard Way (Ex69) 表面吸附物种熵的计算
建议忽略frustrated的平动和转动和电子贡献,只考虑3N-6的振动部分。本模块的原理正是基于此教程,由许楠、李强和刘锦程贡献。注意:该模块不能计算气相分子的热力学贡献。
以/vaspkit.0.73/examples/thermo_correction/ORR为例。下图展示的是在氧气在磷掺杂的石墨烯上的解离吸附的过渡态(Carbon, 2016, 105:214-223.),图片用VESTA软件可视化。为了求得温度的贡献,需要进行振动分析(IBRION=5
),为了节省计算资源,只有P、O原子放开,而C原子固定住,在计算Energy Profile时,需要对其他体系做振动分析,保持放开的原子一致。值得注意的是,本模块只考虑的振动的贡献,而电子的贡献忽略了,将波数小于50cm-1 的 frustrated translation,frustrated rotation的受限振动部分调节为50cm-1 的振动计入对熵的贡献。
启动vaspkit
,输入5
选择功能Catalysis-ElectroChem Kit
,在下一个界面输入501
选择Thermal corrections for Adsorbate
。紧接着提示Please Enter The Temperature (K):
,输入常温298.15K,屏幕会输出以下信息:
xxxxxxxxxx
231+-------------------------- Warm Tips --------------------------+
2This Feature Was Contributed by Nan XU, Qiang LI and Jincheng LIU.
3See An Example in vaspkit/examples/thermo_correction/ORR.
4Only vibrations! No Translation & Rotation & Electron contribitions.
5+---------------------------------------------------------------+
6
7Please Enter The Temperature (K):
8
9------------>>
10298.15
11-->> (1) Reading OUTCAR File...
12+-------------------------- Summary ----------------------------+
13H = E_DFT + E_ZPE + E_H
14G = H - TS = E_DFT + E_ZPE + E_H - T*S
15
16Temperature (K): 298.1
17Entropy (eV/K): 0.0005
18Entropy contribution T*S (eV): 0.1541
19Enthalpy contribution E_H (eV): 0.0858
20Zero-point energy E_ZPE (eV): 0.1944
21Thermal correction to G(T) (eV): 0.1261
22Total energy at Zero K (eV) : -159.3511
23Gibbs free energy at 298.1 K (eV) : -159.2250
298.15K下体系的吉布斯自由能由以下公式给定:
H = E_DFT + E_ZPE + E_H G = H - TS = E_DFT + E_ZPE + E_H - T*S
E_DFT为体系在0K下的静态电子能量。本例中体系在298.15下的自由能为-159.2250 eV。要记住的是DFT计算中绝对能量没有意义,只有相对能量才make sense。
需要指出的是,0.70版读取的Total energy at Zero K (eV)存在一个bug,0.71以后版本已修复。
差分电荷密度用来查看成键前后电荷的重新分布。这里以小木虫上的一个CO差分电荷为例。
文献中常用的差分电荷密度图为二次差分电荷密度图(difference charge density),区别于差分电荷密度图(deformation charge density)。 差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。 “二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。 Deformation charge density 的公式定义为
Difference charge density的公式定义为
计算Deformation charge density时,可由自洽计算的CHG或CHGCAR得到,而所需的 CHG 或 CHGCAR 可由下述非自洽计算得到:仍使用自洽计算的四个输入文件,但INCAR中需要设置ICHARG=12 和 NELM=0
,也就是CHGCAR是由孤立原子电荷的简单叠加构成。
而Difference charge density是文献中最常用的方法,需要对三个不同结构(A,B,AB)做自洽计算。步骤如下:
IBRION = -1;NSW = 0;NGXF,NGYF,NGZF
vaspkit
对三个结构的CHGCAR做差
根据公式,我们需要将CO的CHGCAR减去O的,再减去C的,就能得到想要的二次差分电荷密度。在父目录下启动vaspkit
,输入34
,选择功能Charge & Spin Density
,进入电荷密度子菜单,再输入命令314
选择Charge-Density Difference
,在下一个界面提示输入CO/CHGCAR C/CHGCAR O/CHGCAR
,会显示以下信息:xxxxxxxxxx
141======================= File Options ============================
2Input the Names of Charge/Potential Files with Space:
3(Tip: To get AB-A-B, type: ~/AB/CHGCAR ./A/CHGCAR ../B/CHGCAR)
4
5------------>>
6CO/CHGCAR C/CHGCAR O/CHGCAR
7
8-->> (1) Reading Structural Parameters from CO/CHGCAR File...
9-->> (2) Reading Charge Density From CO/CHGCAR File...
10-->> (3) Reading Structural Parameters from C/CHGCAR File...
11-->> (4) Reading Charge Density From C/CHGCAR File...
12-->> (5) Reading Structural Parameters from O/CHGCAR File...
13-->> (6) Reading Charge Density From O/CHGCAR File...
14-->> (7) Written CHGDIFF.vasp File!
此版本不需对路径加引号。运行完后,会在当前目录下生成CHGDIFF.vasp
,即为CO的电荷密度差。用VESTA软件可视化如下,黄色部分表示电荷密度增加,蓝色表示电荷密度减少:
通过组合功能亦可得到一维差分电荷密度分布。步骤为先做差分电荷密度,然后命名为CHGCAR,再使用功能316
做planar,其中一维电荷密度单位是e/A。
vaspkit 0.71
后增加了几个比较也特色的功能,其中几个是与催化相关。功能5中包含了几个已经开发的催化相关小工具。如下:
xxxxxxxxxx
91==================== Catalysis-ElectroChem Kit ==================
2501) Thermal Corrections for Adsorbate
3502) Thermal Corrections for Gas
4503) d-Band Center (experimental)
5504) Convert NEB-Path to PDB Format for Animation
6505) Interpolate NEB Images Linearly
7507) Imaginary Frequencies Correction
8508) Bader2PQR (Shown in VMD by atomic charge)
9509) Evaluate half life period for a first order reaction
其中功能501
和502
已经介绍,503
是用来计算催化剂d带中心。d带中心的相关知识可以查看研之成理何政达的文章d能带中心——最成功的描述符。
功能504
将Nudged Elastic Band
(一种过渡态的搜索方法)的images
组合成多帧PDB文件,通过可视化该文件可以查看VTST
脚本插值生成的路径是不是我们预期的能量路径。VTST
的nebmovie.pl
可以将images
组合成多帧xyz结构文件,但是由于xyz文件不包含晶格信息,无法查看周期性的映像,若分子处于盒子边缘,可能无法查看完整的能量路径。以目录中的ORR反应(/examples/nudged_elastic_band/neb_animation)为例说明功能504
的用法。启动VASPKIT
,输入5
选择功能Catalysis-ElectroChem Kit
,在下一个界面输入504
选择TheConvert NEB-Path to PDB Format for Animation
。VASPKIT
将会从00~07目录里面读取POSCAR组合生成NEB_*.pdb
。
提交任务前,我要检查一遍设想的对不对,运行一下504得到一个
NEB_initial.pdb
文件。提交任务后,比如说算了30步,我想查看一下算的怎么样了,需要再运行一下504,得到一个NEB_30.pdb
文件,同时提示你NEB is still runing, NOW 30 step!
。如果任务算完了,我运行下504,得到NEB_final.pdb
文件,同时提示你NEB has finished
。 如果NSW设置的100,跑了100步没有收敛,运行504同样会得到得到NEB_100_end.pdb
文件,但是会提示你NEB has stopped, but has reached NSW step, NOT converged!
。`
启动VMD,将NEB.pdb
拖入VMD,切换显示方式,在VMD主窗口选择菜单Display
,选择Orthographic
正交显示模式。然后在VMD主窗口选择菜单Graphics
,再选择Representations
,Drawing Methods
选择CPK
。默认是不显示盒子边界的,在VMD主窗口选择菜单Extensions
,选择Tk Console
,在VMD TkConsole
窗口中输入pbc box -color white
,就可以显示完整的体系,如下
如果分子处于边界,为了查看完整的振动,可以开启周期性。在Representations
面板里选择Periodic
,选择在x,y,z方向上是否显示周期性。
主窗口的底栏可以为动画功能栏,点击最右下角的小箭头就可以播放多帧动画。通过查看振动方向,可以判断nebmake.pl
线性插的点是否合理。
李强提出可以实时通过显示每个Image中成键原子间的键长来判断插值的点是否合理。在VMD主窗口选择菜单 Mouse --> Label --> 2, 然后去模型界面上,点与NEB路径中最相关的2个原子,就可以查看NEB路径中,原子间距离随着IMAGE结构的变化了。
功能 505 通过线性插点生成NEB所需的images,功能类似于nebmake.pl
。目录/vaspkit.0.73/examples/nudged_elastic_band/neb_make
有ORR反应的测试例子。启动功能505后,接着输入 Initial_POSCAR,final_POSCAR和images数目。
本例中输入ini/POSCAR fin/POSCAR 3
,即可在初态和末态之间插3个images。再通过功能504
将生成的路径转换成PDB,通过VMD
等可视化软件可以观察到NEB的路径。
功能507 能够校正振动分析中不想要的小虚频。为了验证优化的结构是否处于势能面的极值点,我们就会进行频率分析(IBRION=5)。常会发现有很多波数非常小的虚频(几十cm-1),李强建议,一般小于50cm-1的虚频可以忽略,一般都是为了破坏对称性而产生的虚频,并不是我们想要的过渡态虚频。因此可以通过此功能消除。进行频率分析后,启动功能507
,如果所有虚频的波数都小于50cm-1,自动校正所有的虚频振动,如果有1个大于50cm-1的虚频,此时可能会出现过渡态的虚频,会提示你是否保留最大的虚频。可以用JMOL
等软件查看最大虚频所对应的振动是否是过渡态的虚频振动方向,如果是,选择yes
保留。本例中选择no
,校正所有虚频。接下来按照提示输入频率矫正因子0.1即可生成虚频校正后的结构文件POSCAR_NEW
。
xxxxxxxxxx
41The max imag_fre is 477.69 cm-1, whether to keep it? Type yes or no!
2no
3 Please input the imaginary-freq correction factor, usually 0.1 is enough!
40.1
/vaspkit.0.73/examples/thermo_correction/H2
目录下展示了H2分子的虚频校正。
未校正前的虚频有两个波数比较大的虚频:
xxxxxxxxxx
41$ grep f/i OUTCAR
2 4 f/i= 0.006948 THz 0.043656 2PiTHz 0.231765 cm-1 0.028735 meV
3 5 f/i= 14.187904 THz 89.145228 2PiTHz 473.257512 cm-1 58.676474 meV
4 6 f/i= 14.320738 THz 89.979853 2PiTHz 477.688402 cm-1 59.225835 meV
校正后再优化一遍分子并进行频率分析。
需要强调的是,虚频的校正是按照振动方向的位移乘以缩放系数叠加到原有的原子坐标上,纯属经验操作,没有理论依据 。优化和振动分析必须在相同级别才有意义。
sobereva
建议,振动分析后出现虚频,说明优化精度明显不够,可以提高收敛精度(降低EDIFFG
并且IBRION=1
),也可以试试本工具。如果有多个虚频,一次通过微调结构消除所有虚频的可能性比较低 。如果体系比较大,虚频涉及的原子不在自己的兴趣当中,不消掉虚频也无大碍。
根据公式代入温度和自由能垒进行估算,一般认为反应能垒21Kcal/mol
的反应在常温下容易发生。
启动vaspkit
,输入功能509
,进入功能Evaluate half life period for a first order reaction
,输入温度298.15K
,反应能垒21Kcal/mol
,得到反应的半衰期为0.077h
,也就是反应物消耗一半所需的时间。
xxxxxxxxxx
71510
2 Please Input temperature in K
3298.15
4 Please Input energy barrier in Kcal/mol
521
6Rate constant is 0.003 s-
7Half life period is 0.077 h
主功能4 Structure Editor
包含了几个结构操作的小工具。
xxxxxxxxxx
81=================== Structure Operations ========================
2400) Redefine Lattice (experimental)
3401) Build Supercell
4402) Fix atoms (FFF) by Layers
5403) Fix atoms (FFF) by Heights
6404) Apply Random-Displacement on Atomic-Positions
7405) Converte XDATCAR to PDB Format for Animation
8409) Remove Spurious Lattice-Distortion after Optimization
功能400
为测试功能,在寻找primitive cell
之后,有些二维体系的真空层会变成x
或y
方向,可以使用此功能重新设置沿z
方向。功能401
用于结构扩胞,新版本进行了改进,在扩胞后能够保留原有结构中的Selective Information
,也就是原子的位置限制信息。以纤锌矿ZnO
的0001
面结构为例。在优化过程中固定了底部的三层(Zn-O
双层)和钝化氢,而放开表面的三层(Zn-O
双层)弛豫模拟表面。扩胞时,在x
,y
方向上的同层原子的位置固定信息将会一致。
xxxxxxxxxx
221ZnO-1811117\(0\0\1)
21.00000000000000
33.2890999317000000 0.0000000000000000 0.0000000000000000
4-1.6445499659000000 2.8484440965000002 0.0000000000000000
50.0000000000000000 0.0000000000000000 31.0000000000000000
6O Zn H
76 6 1
8Selective dynamics
9Direct
100.6666700244773196 0.3333300053761477 0.1505069039677451 F F F
110.6666716924670117 0.3333278011868069 0.3220708624919105 T T T
120.6666726846730975 0.3333236596434402 0.4952603515620634 T T T
130.3333300053138402 0.6666700242891679 0.0649169839032240 F F F
140.3333300053138402 0.6666700242891679 0.2361085000000003 F F F
150.3333199694428693 0.6666773648761363 0.4080366153030212 T T T
160.6666700244773196 0.3333300053761477 0.0855899113548375 F F F
170.6666700244773196 0.3333300053761477 0.2567814361612903 F F F
180.6666745852439349 0.3333222632901633 0.4277261402910583 T T T
190.3333300053138402 0.6666700242891679 0.1711915073870998 F F F
200.3333495480118175 0.6666503610072737 0.3422927302063438 T T T
210.3333226658022473 0.6666735134936482 0.5114804524358304 T T T
220.3353480398005857 0.6659931540629387 0.0310253291612881 F F F
功能402
,403
在表面模拟中非常有用。功能402
会自动依据不同的阈值对原子的Z方向坐标进行分层,提示用户使用不同的阈值时体系在Z方向有几层原子,用户再根据自己的判断输入新的阈值重新进行原子分层,并输入需要固定的底部几层原子,得到底部固定,表面放开的结构文件。
同样以纤锌矿ZnO
的0001
面为例,我们想固定底部4层(Zn-O
双层),只放开表面两层。启动VASPKIT
,输入4
选择功能Structure Manipulator
,在下一个界面输入402
选择Fix atoms (FFF) by Layers
。
xxxxxxxxxx
111Threshold: 0.3 layers: 13
2Threshold: 0.6 layers: 12
3Threshold: 0.9 layers: 7
4Threshold: 1.2 layers: 7
5Threshold: 1.5 layers: 7
6Please choose a threshold to separate layers->
71.5
8+---------------------------------------------------------------+
9| Selective Dynamics is Activated! |
10+---------------------------------------------------------------+
11Found 7 layers, choose how many layers to be fixed
我们判断CONTCAR在Z方向有7层原子,所以我们选择阈值1.5进行分层,并选择固定底部5层(包含最后一层钝化氢),就会生成CONTCAR_fix
。程序在固定完原子后会输出哪些原子被固定住了,帮助我们确认固定是否正确。
xxxxxxxxxx
1311.6445664829999989 0.9494718860000013 4.6657140230000982 F F F
21.6445755940842863 0.9494656074898858 9.9841967372492260 F F F
31.6445856685242579 0.9494538105351326 15.3530708984239652 T T T
4-0.0000164679999908 1.8989722949999921 2.0124265009999438 F F F
5-0.0000164679999908 1.8989722949999921 7.3193635000000095 F F F
6-0.0000615489445641 1.8989932042516069 12.6491350743936568 T T T
71.6445664829999989 0.9494718860000013 2.6532872519999624 F F F
81.6445664829999989 0.9494718860000013 7.9602245209999989 F F F
91.6445942160644029 0.9494498331008844 13.2595103490228077 T T T
10-0.0000164679999908 1.8989722949999921 5.3069367290000935 F F F
110.0000801471361600 1.8989162852407626 10.6110746363966584 F F F
12-0.0000463465581788 1.8989822338038955 15.8558940255107430 T T T
130.0077341959999959 1.8970442679999928 0.9617852039999312 F F F
有时候对于复杂的体系,很难通过选择层达到我们的目的,在刘锦程的建议下,开发了功能403
,通过选择高度区间固定原子。通过在其他可视化软件中确定需要固定的原子层所处的高度区间,在VASPKIT
中选择高度区间固定原子。vaspkit.0.73/utilities/
目录下有该功能的扩展脚本POSCARtoolkit
,可以实现对部分原子固定或弛豫的功能。
当然我们可以手动在Material Studio
中可视化地固定原子,导出xsd
后使用功能106
将含有位置限制信息的xsd
转换成POSCAR
。
功能405
,Converte XDATCAR to PDB for Animation
与功能504
相似,能够将分子动力学、普通优化,晶格优化过程
中XDATCAR
记录的离子步转化成可以可视化的多帧PDB文件。VMD,OVITO等可视化软件只能可视化分子动力学、普通优化的离子步,对于晶格优化(ISIF=3
)的XDATCAR只能查看第一帧结构。而VASPKIT
生成的XDATCAR.pdb
同样可以由VMD查看离子步的优化过程。
能带折叠的主要作用是因为合金需要使用超胞计算,为了和单胞的能带对比需要把超胞的能带折叠成 effective band structure (EBS)。
以石墨烯为例(详见vaspkit.0.73/examples/band_unfolding/graphene_2x2
)。
第一步,准备POSCAR;
xxxxxxxxxx
111Graphene
2 1.00000000000000
3 1.2344083195740001 -2.1380573715510001 0.0000000000000000
4 1.2344083195740001 2.1380573715510001 0.0000000000000000
5 0.0000000000000000 0.0000000000000000 12.0000000000000000
6 C
7 2
8Direct
9 0.0000000000000000 0.0000000000000000 0.5000000000000000
10 0.3333329999917112 0.6666670000099160 0.5000000000000000
11
第二步:准备KPATH.in
文件,对于二维体系,可通过vaspkit
302
命令产生推荐能带路径;
xxxxxxxxxx
131Generated by VASPKIT.
2 30
3Line-Mode
4Reciprocal
5 0.0000000000 0.0000000000 0.0000000000 GAMMA
6 0.5000000000 0.0000000000 0.0000000000 M
7
8 0.5000000000 0.0000000000 0.0000000000 M
9 0.3333333333 0.3333333333 0.0000000000 K
10
11 0.3333333333 0.3333333333 0.0000000000 K
12 0.0000000000 0.0000000000 0.0000000000 GAMMA
13
第三步:利用 vaspkit
401
命令建立2x2超胞,然后mv SC221.vasp POSCAR
,并新建KPKIT.in
文件,并在第一行输入超胞大小2 2 1
;
第四步:运行vaspkit
281
命令,生成用于超胞计算KPOINTS文件;运行VASP。
第五步:运行vaspkit
282
命令,提取包含有效能带(Effective Band Structure)数据EBS.dat
文件;
第六步:python ebs.py
画图;
二维材料3D能带计算,这里以石墨烯为例,见vaspkit.0.73/examples/3D_band
。
第一步,准备好石墨烯的POSCAR和用于静态计算的INCAR文件;
第二步:运行VASPKIT
并选择231
生成用于3D能带计算 的KPOINTS文件,执行界面如下所示。注意为了获得平滑的3D能带面,用于产生KPOINTS文件的分辨率值应该设置在0.001左右 ;
xxxxxxxxxx
131------------>>
2231
3 +-------------------------- Warm Tips --------------------------+
4 \* Accuracy Levels: (1) Low: 0.04~0.03;
5 (2) Medium: 0.03~0.02;
6 (3) Fine: 0.02~0.01.
7 \* 0.015 is Generally Precise Enough!
8 +---------------------------------------------------------------+
9 Input KP-Resolved Value (unit: 2*PI/Ang):
10 ------------>>
110.008
12 -->> (1) Reading Structural Parameters from POSCAR File...
13 -->> (2) Written KPOINTS File!
第三步,提交VASP作业;
第四步,待VASP计算完成后,再次运行VASPKIT
,输入232
或233
命令。233
命令可一次性输入包含价带顶的BAND.HOMO.grd
和导带底的BAND.LUMO.grd
文件的能带;232
可以得到其它任意能带的计算数据,这里我们选择233
,执行界面如下所示。
xxxxxxxxxx
141------------>>
2233
3 +-------------------------- Warm Tips --------------------------+
4 ONLY Reliable for Band-Structure Calculations!
5 +---------------------------------------------------------------+
6 -->> (1) Reading Input Parameters From INCAR File...
7 -->> (2) Reading Structural Parameters from POSCAR File...
8 -->> (3) Reading Fermi-Level From DOSCAR File...
9ooooooooo The Fermi Energy will be set to zero eV oooooooooooooooo
10 -->> (4) Reading Energy-Levels From EIGENVAL File...
11 -->> (5) Reading Kmesh From KPOINTS File...
12 -->> (6) Written BAND.HOMO.grd File.
13 -->> (7) Written BAND.LUMO.grd File.
14 -->> (8) Written KX.grd and KY.grd Files.
第五步:运行python how_to_visual.py
,绘制3D能带图(python2.7环境)。
费米面计算,这里我们以Cu为例,见vaspkit.0.73/examples/Cu_fermi_surface
。
第一步,准备好FCC Cu
的POSCAR,注意一定是原胞(primitive cell )和用于静态计算的INCAR文件;
第二步,运行VASPKIT
,输入261
命令,产生用于计算计算费米面的KPOINTS
和POTCAR
文件,执行界面如下图所示;
xxxxxxxxxx
121------------>>
2261
3 +-------------------------- Warm Tips --------------------------+
4 \* Accuracy Levels: (1) Medium: 0.02~0.01;
5 (2) Fine: < 0.01;
6 \* 0.01 is Generally Precise Enough!
7 +---------------------------------------------------------------+
8 Input KPT-Resolved Value (unit: 2*PI/Angstrom):
9 ------------>>
100.008
11 -->> (1) Reading Structural Parameters from POSCAR File...
12 -->> (2) Written KPOINTS File!
第三步,提交VASP作业;
第四步,待VASP计算完成后,再次运行VASPKIT
,输入262
命令,生成包含费米面数据的FERMISURFACE.bxsf
文件,执行界面如下图所示;
xxxxxxxxxx
81------------>>
2262
3 -->> (1) Reading Input Parameters From INCAR File...
4 -->> (2) Reading Structural Parameters from POSCAR File...
5 -->> (3) Reading Fermi-Level From DOSCAR File...
6ooooooooo The Fermi Energy will be set to zero eV oooooooooooooooo
7 -->> (4) Reading Energy-Levels From EIGENVAL File...
8 -->> (5) Written FERMISURFACE.bxsf File!
第五步,运行XcrySDen
软件,按照下图步骤。我们发现第五条能带穿过费米面,因此我们选择Band Number 5
,然后点击Selected
,然后得到Cu的费米面。
该功能介绍由王宁_电子科大_二维材料
贡献。VASP+BoltzTraP
能够计算材料的热电性质,其计算流程为:先使用VASP进行DFT计算,得到材料的电子结构,再利用BoltzTraP
计算其输运性质。在两个软件之间,需要一个转化接口,以实现将VASP的输出文件转化为BoltzTraP
的输入文件。BoltzTraP
手册给出了一种转化方法:利用ase库
、vasp2boltz.py
和vasp2boltz.txt
文件实现,但是操作十分繁琐。利用vaspkit
中的VASP2BoltzTraP Interface
,能够一键实现VASP与BoltzTraP
之间的文件转化。
具体使用方法如下:
OUTCAR POSCAR EIGENVAL DOSCAR
文件拷贝到新建文件夹下,并将此文件夹命名为case。(PS:省事的做法是将自洽的文件夹拷贝一份直接命名为case)。vaspkit
呼出菜单,选择VASP2BoltzTraP Interface
选项,得到BoltzTraP
所需的三个输入文件case.intrans, case.struct, case.energy
,修 改 case.struct
和case.energy
中第一行名称为 case。~/src/x_trans BoltzTraP
在材料的线性形变范围内(应变较小的情况下),体系的应力与应变满足胡克定律,
其中和分别表示应力和应变,是弹性刚度常数,这里,即应变和应力分别有6个独立分量。
施加应变后体系的应变能可按应变张量进行泰勒级数展开并取二阶近似得到:
这里和分别表示施加应变后和基态构型的总能,是平衡体积。
因此,采用第一性原理计算弹性常数有两种方法,第一种方法是应力-应变方法,即通过给结构施加不同应变,分别计算出所对应的应力大小,然后利用公式(1)拟合得到一次项系数,从而得到。第二种方法是能量-应变方法,即通过给结构施加不同应变后计算出体系总能相对于基态能量变化(应变能),再利用公式(2)进行二次多项式拟合,其中二次多项式系数是晶体的某个弹性常数或者弹性常数组合。第一种方法优点是每进行一次计算可一次得到六个独立分量,缺点是为了得到准确的应力大小,必须选择更高的截断能和更密集的K格点。在同样的精度下,能量-应变法相比应力-应变方法要求的截断能和K点数目相对较少,缺点是计算应变数目有所增加。VASPKIT中弹性常数计算基于能量-应变法。
这里我们以金刚石结构为例讲解如何采用能量-应变函数关系计算弹性常数,详见vaspkit/examples/elastic/diamond_3D。对于金刚石立方结构,一共有3个独立弹性常数,,和 。
立方晶系的弹性能可以表示
设定,可得,因此有 [1]。
设定,可得,因此有
再设定,可得。
联立以上三个方程组,即可得到三个独立弹性常数。
施加形变后的晶格基矢可通过下式得到 [2]:
其中是单位矩阵,
VASPKIT
和VASP计算晶体的弹性常数具体计算步骤分为:
vaspkit
选择102
生成KPOINTS,由于计算弹性常数对K-mesh
要求很高,因此对于半导体(金属体)体系,生成K点的精度应不小于 xxxxxxxxxx
191Global Parameters
2ISTART = 0
3LREAL = F
4PREC = High (截断能设置默认值1.5-2倍)
5LWAVE = F
6LCHARG = F
7ADDGRID= .TRUE.
8Electronic Relaxation
9ISMEAR = 0
10SIGMA = 0.05
11NELM = 40
12NELMIN = 4
13EDIFF = 1E-08
14Ionic Relaxation
15NELMIN = 6
16NSW = 100
17IBRION = 2
18ISIF = 2 (切记选择2,如果选择3会把施加应变后原胞重新优化成平衡原胞)
19EDIFFG = -1E-02
VPKIT.in
文件并设置第一行为1(预处理);运行vaspkit
并选择201
, 生成用于计算弹性常数文件;xxxxxxxxxx
411 ! 设置1将产生计算弹性常数的输入文件,2则计算弹性常数
23D ! 2D为二维体系,3D为三维体系
37 ! 7个应变
4-0.015 -0.010 -0.005 0.000 0.005 0.010 0.015 ! 应变变化范围
5.批量提交vasp作业;
VPKIT.in
文件中第一行为2,然后再次运行vaspkit
并选择201
,得到以下结果;xxxxxxxxxx
631-->> (01) Reading VPKIT.in File...
2+-------------------------- Warm Tips --------------------------+
3See an example in vaspkit/examples/elastic/diamond_3D,
4Require the fully-relaxed and standardized Convertional cell.
5+---------------------------------------------------------------+
6-->> (02) Reading Structural Parameters from POSCAR File...
7-->> (03) Calculating the fitting coefficients of energy vs strain.
8-->> Current directory: Fitting Precision
9C44: 0.817E-09 (拟合精度应保证低于1E-7,否则检查个别体系是否收敛)
10C11_C22: 0.814E-08
11C11_C12: 0.135E-07
12+-------------------------- Summary ----------------------------+
13Based on the Strain versus Energy method.
14Crystal Class: m-3m
15Space Group: Fd-3m
16Crystal System: Cubic system
17Including Point group classes: 23, 2/m-3, 432, -43m, 4/m-32/m
18There are 3 independent elastic constants
19C11 C12 C12 0 0 0
20C12 C11 C12 0 0 0
21C12 C12 C11 0 0 0
220 0 0 C44 0 0
230 0 0 0 C44 0
240 0 0 0 0 C44
25
26Stiffness Tensor C_ij (in GPa):
271050.640 126.640 126.640 0.000 0.000 0.000
28126.640 1050.640 126.640 0.000 0.000 0.000
29126.640 126.640 1050.640 0.000 0.000 0.000
300.000 0.000 0.000 559.861 0.000 0.000
310.000 0.000 0.000 0.000 559.861 0.000
320.000 0.000 0.000 0.000 0.000 559.861
33
34Compliance Tensor S_ij (in GPa^{-1}):
350.000977 -0.000105 -0.000105 0.000000 0.000000 0.000000
36-0.000105 0.000977 -0.000105 0.000000 0.000000 0.000000
37-0.000105 -0.000105 0.000977 0.000000 0.000000 0.000000
380.000000 0.000000 0.000000 0.001786 0.000000 0.000000
390.000000 0.000000 0.000000 0.000000 0.001786 0.000000
400.000000 0.000000 0.000000 0.000000 0.000000 0.001786
41
42Average mechanical properties for polycrystalline:
43+---------------------------------------------------------------+
44| Scheme | Bulk K | Young's E | Shear G | Poisson's v |
45+---------------------------------------------------------------+
46| Voigt | 434.64 GPa | 1116.34 GPa | 520.72 GPa | 0.07 |
47| Reuss | 434.64 GPa | 1109.30 GPa | 516.13 GPa | 0.07 |
48| Hill | 434.64 GPa | 1112.82 GPa | 518.42 GPa | 0.07 |
49+---------------------------------------------------------------+
50Pugh Ratio: 1.19
51Cauchy Pressure (GPa): -433.22
52Universal Elastic Anisotropy: 0.04
53Chung–Buessem Anisotropy: 0.00
54Isotropic Poisson’s Ratio: 0.07
55
56Voigt averaging scheme gives the upper bound for polycrystalline.
57Reuss averaging scheme gives the lower bound for polycrystalline.
58Hill averaging scheme is the average of Reuss's and Voigt's data.
59References:
60[1] Voigt W, Lehrbuch der Kristallphysik (1928)
61[2] Reuss A, Z. Angew. Math. Mech. 9 49–58 (1929)
62[3] Hill R, Proc. Phys. Soc. A 65 349–54 (1952)
63+---------------------------------------------------------------+
金刚石弹性常数实验值分别为: GPa, GPa和 GPa [3],通过比较发现采用VASPKIT结合VASP得到的理论计算弹性常数与实验值符合较好。
参考文献:
[1] 武松,利用 VASP 计算不同晶系晶体弹性常数
[2] 侯柱锋,采用VASP如何计算晶体的弹性常数
[3] McSkimin H J and Andreatch P 1972 J. Appl. Phys. 43 2944
以 MoS2
单层为例,首先通过分析能带结构找出价带顶(VBM)和导带底(CBM)的位置。对于 MoS2 单层,其价带顶和导带底均位于高对称点K点处。
接下来我们计算K点处沿着 K -> Γ
和 K -> M
方向的电子及空穴载流子的有效质量;
VPKIT.in
文件, VPKIT.in
文件包含以下内容;xxxxxxxxxx
611 设置为1将会生成计算有效质量的KPOINTS文件,2则计算有效质量
26 6表示我们在K附近取6个离散点用于多项式拟合
30.015 k-cutoff, 截断半径,典型值0.015 Å-1
42 2 表示有两个有效质量任务
50.333333 0.3333333 0.000 0.000 0.000 0.000 K->Γ 计算K点处有效质量,沿着K指向Γ方向
60.333333 0.3333333 0.000 0.500 0.000 0.000 K->M 计算K点处有效质量,沿着K指向M方向
第二步:运行 vaspkit
并选择 912
或者913
产生 KPOINTS , POTCAR 文件及静态计算 INCAR 文件;
第三步:提交 VASP
作业;-
第四步:计算完成后把 VPKIT.in
文件中第一行的 1 修改为 2 ,然后再次运行 vaspkit
并选择 913
,得到以下结果:
xxxxxxxxxx
419
2Effective-Mass (in m0) Electron (Prec.) Hole (Prec.)
3K-PATH No.1: K->G 0.473 (0.3E-07) -0.569 (0.1E-07)
4K-PATH No.2: K->M 0.524 (0.1E-06) -0.691 (0.1E-06)
Kormányos
等人计算得到 MoS2
单层的电子和空穴载流子有效质量分别为 0.44 和 0.54 [见文献2D Mater. 2 (2015) 049501]
注意:如果价带顶和导带底存在简并,例如GaAs和GaN等材料,这时候很难保证精度。
绘制原子电荷着色的结构图的功能由刘锦程
使用python
编写,经过优化后整合到了vaspkit0.73
版本中、
在算原子电荷的时候(比如:Bader电荷
)需要分析总的电荷密度CHGCAR_sum
了。所谓的原子电荷就是把一定空间内的电荷密度都划分给附近的一个原子,用一套人为的规则定义每个原子上所带的电荷。原子电荷常常用于定性分析,非常有用,第一性原理计算最常用的就是Bader电荷了。
计算bader电荷
需要在INCAR
里添加关键词LAECHG=.TRUE.
:
开始会产生AECCAR0 AECCAR1
两个文件,分别包含内核和内层电子密度(赝势),初始价层电子密度。计算结束会再生成一个AECCAR2文件,包含SCF收敛以后的价层电子密度。要得到体系的总电荷密度需要将AECCAR0 AECCAR1
两个文件的密度叠加,方法就是用一个vtst
脚本:
xxxxxxxxxx
11chgsum.pl AECCAR0 AECCAR2
生成CHGCAR_sum
,然后计算bader电荷
:
xxxxxxxxxx
11bader CHGCAR –ref CHGCAR_sum
bader
是一个二进制可执行文件,在此网站可以下载最新版的bader
程序。
运行成功会生成三个文件:ACF.dat, BCF.dat, AVF.dat
其中ACF.dat
文件包含:原子坐标和每个原子的价层电子数目,通过对比价电子数和POTCAR
中的ZVAL
就能得到每个原子的bader
电荷。由此可以进一步计算体系的bader
电荷着色的的结构图。
启动vaspkit
,选择功能508
,Bader2PQR (Shown in VMD by atomic charge)
,vaspkit
会执行utilities
下的bader2pqr.py
,运行结束后,将会得到bader.pqr
和vmdrc.txt
文件,用VMD
可以打开bader.pqr
文件也可以将其直接拖入主显示窗口。
如果程序运行时报以下的错误,说明未能正确识别utilities
路径,请重新运行utilities
的兄弟目录bin
下的vaspkit
程序即可。
xxxxxxxxxx
11 Please execute vaspkit binary in /vaspkit/bin/
vmdrc.txt
的内容如下:
xxxxxxxxxx
31pbc set { 5.873 5.873 24.591 90.000 90.000 120.000 }
2pbc box -on
3color Display Background white
在Extensions里选择 Tk Console,将vmdrc.txt里面的内容粘贴到Tk Console框。
然后在Graphics Representation里选择
(1) Coloring method:Charge;Drawing Method: CPK或VDW;
(2) Trajectory里Color Scale Data Range:可以调节颜色的范围;
(3) Periodic 里可以扩展周期性
效果图(左图正常着色O/Au(111),右图以原子电荷着色,O原子带负电呈蓝色,和O原子配位的Au原子带微量正电荷,成粉红色。-0.5到0.5,蓝-白-红):
VASPKIT
是由FORTRAN
编写。你是否也想参与完善VASPKIT
的工作,但是不擅长于FORTRAN
呢? 我们尝试性地设计了用户界面,也就是功能74
USER interface
帮助你实现。原理是调用系统命令执行你写的脚本。
我们将~/.vaspkit
里的ADVANCED_USER
设置为.TRUE.
,然后定义VASPKIT_UTILITIES_PATH
的路径,比如设成~/vaspkit.0.73/utilities
。
然后在~/.vaspkit
里的自定义区块设置命令。此处省略了相关介绍。
牛哥写了一个固定原子层的脚本atom_constrain.py
与vaspkit-402
功能或许楠的POSCARtoolkit.py
类似,但是它们都会将POSCAR 的坐标自动转换为笛卡尔坐标,但是atom_constrain.py
会保持原来的坐标格式。详细介绍可以查看教程,教程中同时演示了将该脚本加入vaspkit
的用户自定义界面中。
下一版本的彩蛋:刘锦程等人正在开发vaspkit
的投影能带绘图功能。可以将能带投影到元素、角动量和磁角动量。目前正在vaspkit
内测和专用讨论群331895604
中内测,欢迎大家加入 。下面给出几个效果图。
用户可以将已有的脚本或者程序按照说明和本例配置好,就可以在
vaspkit
里执行它了。欢迎大家贡献脚本,我们经筛选后会添加到新版本中。
vaspkit
的开发初衷就是为了简化计算流程。因此掌握vaspkit
的批量处理也是必不可少的技能了。部分功能支持命令行操作,可通过 vaspkit -help
获取帮助。
xxxxxxxxxx
101+-------------------------- Help Tips --------------------------+
2e.g.
3a) vaspkit -task 11
4Get TDOS.
5b) vaspkit -task 4 -file POSCAR -sc 2 3 4
6Build 2*3*4 supercell from POSCAR.
7c) vaspkit -task 22 -iatom 0
8Get PBNAD for each element in POSCAR file.
9d) vaspkit -task 8 -dim 3 -symprec 1E-2
10Get suggested K-Path for bulk material with SYMPREC=1E-2.
但是更多的功能是不支持的命令行运行的方式的。因此为了批量操作,可以使用 linux
下的 管道
帮助我们跳过交互,以便批处理。
xxxxxxxxxx
11(echo 'arg1'; echo 'arg2') | vaspkit
该命令可以依次将参数arg1
和arg2
传给 vaspkit
。
比如想批量给一系列结构(分别在FCC
, BRI
和 HCP
位 )生成 KPOINTS
。可以执行以下脚本(需将脚本转换成linux
格式,借助dos2unix
命令):
xxxxxxxxxx
51for i in BRI FCC HCP
2 do cd ${i};
3 (echo 102;echo 1;echo 0.04) | vaspkit
4 cd ${OLDPWD}
5 done
其中参数102
首先嗲用功能 Generate KPOINTS File for SCF Calculation
; 并选择采用 Monkhorst-Pack Scheme
撒点方式,K点密度选择 0.04
,即可在所有的文件夹下生成KPOINTS
。这个参数的设置规则跟人手动处理的流程一样,能够极大地方便我们进行批处理。比如从数据库中获得的一批cif
结构,可以通过功能105
将其转成POSCAR
,脚本如下所示,将生成的POSCAR
移动到对应与cif
的文件夹里。
xxxxxxxxxx
51for i in *.cif
2 do mkdir $(basename ${i} .cif)
3 (echo 105; echo ${i};echo) | vaspkit
4 cp POSCAR ./$(basename ${i} .cif)
5 done
老和山路人乙有一篇教程做计算,如何解放自己的双手?就是一个活用vaspkit
的好范例。
本文档可以作为vaspkit
的中文手册,目前正在完善。你也可以在以下QQ群里(331895604
,364586948
,217821116
)找到开发者交流,欢迎大家使用vaspkit
,并及时反馈BUG。其中群331895604
是vaspkit
内测和专用讨论群。
最新版会发布在以上三个群里, 我的Github Repository 以及 vaspkit
的官方网址 。引用参考: V. Wang, N. Xu, VASPKIT: A Pre- and Post-Processing Program for the VASP Code. http://vaspkit.sourceforge.net.
本文档由浙江大学
的许楠
同学撰写,邮箱地址为tamas@zju.edu.cn
。
xxxxxxxxxx
1121菜单1:VASP输入文件的生成
2101) 生成不同任务所需的INCAR
3102) 生成SCF所需的普通KPOINTS
4103) 以默认的元素类型生成POTCAR
5104) 用户指定POTCAR中元素的类型
6105) 将cif文件转换成POSCAR(不支持分数占据)
7106) 将Material Studio的xsd文件转换成POSCAR(保持位置限制信息)
8107) 以制定的元素序列整理POSCAR
9108) 批处理生成VASP输入文件,并进行检查
10109) 检查VASP输入文件,是否有格式问题
11
12菜单2:弹性常数工具
13201) 弹性常数计算
14202) 状态方程拟合工具
15
16菜单3:能带路径生成工具
17301) 一维纳米结构
18302) 二维纳米结构 (测试功能)
19303) 三维体相结构 (测试功能)
20304)二维纳米结构声子谱K点路径 (测试功能)
21
22菜单4:结构操作工具
23400)重新调整晶格 (测试功能)
24401) 建立超胞
25402) 根据Z方向层数固定原子
26403) 根据Z方向高度固定原子
27404) 对原子位置随机微扰
28405) 将XDATCAR生成PDB用于可视化
29406) 将POSCAR转成其他格式
30409) 移除晶格优化后的可疑的晶格畸变
31
32菜单5:催化、电化学相关
33501) 计算吸附质的热力学校正量
34502) 计算气体的热力学校正量
35503) d带中心计算 (测试功能)
36504) 将NEB的路径转成PDB,用于可视化
37505) NEB线性插点
38507) 虚频校正
39508) Bader2PQR (用VMD显示原子电荷)
40509) 估算一级反应的半衰期
41
42菜单6:寻找对称性相关
43601)寻找晶体结构对称性
44602)寻找初基原胞
45603)标准化晶体结构
46608) 优化后结构信息汇总
47609)寻找分子及团簇对称性
48
49菜单11:态密度计算
50111)总态密度数据提取
51112)投影态密度数据提取
52113) 提取每个元素的投影态密度
53114) 选择原子的投影态密度加和
54115) 选择原子和其轨道态密度
55
56菜单21:常规能带计算
57211)能带数据提取
58212)投影能带数据提取
59
60菜单26:3D能带计算
61231)用于3D计算能算的KPOINTS文件生成
62232)提取指定3D能带数据
63233)提取最高占据导带和最低未占据价带对应的3D能带数据
64
65菜单25:杂化密度泛函能带计算(也可用于常规密度泛函能带计算)
66251)用于杂化密度泛函能带计算的KPOINTS文件生成
67252)杂化密度泛函能带数据提取
68252)杂化密度泛函能投影带数据提取
69
70菜单26:费米面计算
71261)用于费米面计算的KPOINTS文件生成
72262)费米面数据提取,用XcrySDen可视化
73
74菜单28:能带反折叠
75281)用于能带反折叠计算的KPOINTS文件生成
76282)能带反折叠数据生成
77
78菜单31:电荷及自旋密度相关
79311) 电荷密度
80312) 自旋密度
81313) 自旋向上&向下密度
82314) 差分电荷密度
83316)一维电荷密度分布
84318)电荷密度文件转转XcrySDen(.xsf)格式
85
86菜单42:电势能相关
87426) 计算真空能级
88428)LOCPOT,ELFCAR等转XcrySDen(.xsf)格式
89
90菜单51:波函数分析
91511)波函数可视化
92
9371) 线性光学计算
94
95菜单72:分子动力学相关工具箱
96721) 均方位移计算
97722) 径向分布函数计算
98
9973)VASP计算数据 转BoltzTraP输入文件结构
100
101菜单91: 半导体计算
102911)计算带隙大小
103912)计算载流子在指定高对称点沿特定方向上的有效质量
104913)计算最高占据导带和最低未占据价带在指定高对称点沿特定方向上的有效质量
105
106菜单92: 二维材料相关工具箱
107921)二维材料沿z方向居中
108922)自定义真空层厚度
109923)设置真空层厚度为16A并居中
110927)价带顶和导带底对于真空能级的大小
111929)优化后二维结构信息汇总
112