基本概念
VASP的运行需要四个必不可少的输入文件,分别是INCAR、KPOINTS、POSCAR和POTCAR。准备这些输入文件时,有以下几点注意事项
①输入文件的名字一定一定要和INCAR、KPOINTS、POSCAR和POTCAR保持完全一致(包括大小写),不能有任何偏差!
②所有的输入文件都是文本文件,windows系统推荐使用notepad++编辑,linux系统推荐使用vim编辑器,任何时候都不推荐在windows系统上编辑VASP的输入文件
③引用经典名言:Rubbish in,Rubbish out! 程序只负责算,对错由你决定!
INCAR
INCAR文件简介
INCAR文件决定“算什么和怎么算”,也就是说其中包含了VASP计算的具体细节参数,INCAR文件的每一行都由“标签”、“=”和“一个或多个值”组成(例如 ISTART=0 )。 INCAR文件中的标签,一定要写自己理解的,不懂得标签不要写进去!而且INCAR文件中的标签一定是越少越好,与此次计算无关的标签一律删除!
如何准备INCAR文件
一、借助工具直接生成INCAR文件
注意这种方法绝对不推荐新手或者对INCAR各种参数还不熟悉的人使用,直接生成的INCAR文件不能拿来直接做计算,需要根据自己的体系和要算的内容进行微调
①VASPKIT
使用VASPKIT的101功能可以直接生成不同功能对应的INCAR文件,例如
使用命令生成结构优化对应的INCAR文件:vaspkit-回车-101-回车-SR-回车
SR可以替换为其他选项:
【ST】 Static-Calculation 【SR】 Standard Relaxation
【MG】 Magnetic Properties 【SO】Spin-Orbit Coupling
【D3】DFT-D3 no-damping Correction 【H6】 HSE06 Calculation
【PU】 DFT+U Calculation 【MD】 Molecular Dynamics
【GW】 GW0 Calculation 【BS】 BSE Calculation
【DC】 Elastic Constant 【EL】 ELF Calculation
【BD】 Bader Charge Analysis 【OP】 Optical Properties
【EC】 Static Dielectric Constant 【PC】 Decomposed Charge Density
【FD】 Phonon-Finite-Displacement 【DT】 Phonon-DFPT
【NE】 Nudged Elastic Band (NEB) 【DM】 The Dimer Method
【FQ】 Frequence Calculations 【LR】 Lattice Relaxation
②qvasp
qvasp与VASPKIT同理,可以直接生成不同功能对应的INCAR文件
使用命令:
qvasp -relax 产生优化结构的 INCAR,注意 ISIF 默认为 2,如果优化晶体需要改3
qvasp -ts 产生搜索过渡态的 INCAR
qvasp -scf 产生静态自洽的 INCAR
qvasp -elf 产生输出电荷局域信息的 INCAR
qvasp -vacp 产生计算真空能级,功函数的 INCAR
qvasp -band 产生计算能带的 INCAR,注意计算能带需要自洽产生的CHGCAR
qvasp -dos 产生计算态密度的 INCAR,注意计算态密度需要自洽产生的CHGCAR
qvasp -bader 产生能进行 bader 电荷分析的 INCAR
qvasp -hse 产生计算包含 HSE06 能带或者态密度的 INCAR
qvasp -md 产生跑分子动力学的 INCAR,默认系综 NVT
qvasp -elastic 产生计算弹性常数的 INCAR
qvasp -partchg 产生输出 Patical Charge 的 INCAR,注意计算需要 WAVCAR,且修改INCAR 中的 IBAND 和 KPUSE
qvasp -freq 产生计算过渡态频率分析的 INCAR
qvasp -optics 产生计算光学性质的 INCAR,通常包含 HSE06
qvasp -phono 产生计算声子谱的 INCAR
二、手动创建INCAR(以Linux系统为例)
使用vim直接创建并打开输入界面,写好后保存成INCAR
vim INCAR
先在INCAR文件中写好可以控制所有计算类型的“全局参数”
SYSTEM = MOF
ISTART = 0
ICHARG = 2
LWAVE = .F.
LCHARG = .F.
ISMEAR = 0
SIGMA = 0.1
ENCUT = 520
LREAL = Auto
然后根据你需要进行的具体的计算类型写其他参数,例如金属bulk的结构优化
ISPIN = 2
MAGMOM = 4*0
IBRION = 2
ISIF = 3
NSW = 50
几点注意事项:
①等号前后可以有空格,也可以没有空格,不影响VASP读取参数
②写参数的时候,一定不要使用Tab键
③#以后的内容不会被读取,例如#NSW=50,这样代表整个NSW参数都不会被VASP读取;NSW=50 #50个离子步,这样代表NSW参数能够正常读取
写完保存以后,INCAR文件的准备工作就结束了。再次强调准备INCAR的原则就是自己弄明白参数的含义,越简单越好,不要画蛇添足,乱七八糟的一股脑儿全往里面写。对参数的理解和熟练运用需要时间的积累,遇到陌生的参数第一时间想到去VASP Wiki(https://www.vasp.at/wiki/index.php/The_VASP_Manual)中最上方的搜索框内查询!
KPOINTS
KPOINTS文件简介
KPOINTS很大程度上决定了VASP计算的精度,同时也影响完成计算所需要的时间。合理设置KPOINTS文件,可以保证我们使用最少的时间,来获取准确可靠的结果。另外在显卡节点上运行VASP程序,占用显存也很大程度上取决于K点数量
如何准备KPOINTS文件
KPOINTS文件也是纯文本,和INCAR一样,使用vim直接创建并打开输入界面,写好后保存成KPOINTS
vim KPOINTS
K-POINTS
0
Gamma
1 1 1
0 0 0
第一行:可以随便写内容,但不能没有
第二行:数字0,不是字母O,0 在这里表示的是自动生成K点。0前面有个空格,空格对计算不影响,可以删掉,也可以再加一个空格
第三行:VASP只认第一个字母,大小写均可。这里可以写两种网格类型,分别为Gamma和Monkhorst-Pack,建议一直用Gamma即可
第四行,在x,y,z三个方向上生成对应数目的K点,在上述例子里是1,1,1
第五行,K网格的平移,一般都写成 0 0 0
K点模式选择
K点数量是奇数时,Gamma center和Monkhorst Pack模式的K点分布是一样的,偶数时有区别。Monkhorst Pack模式可能使收敛更快,但是会破坏某些体系对称性,一般情况下使用Gamma center即可,K点数量较少时K点尽量使用偶数
Bravais lattice | variant | mesh choices |
triclinic | primitive | Gamma, Monkhorst Pack |
monoclinic | primitive | Gamma, Monkhorst Pack |
base-centered | Gamma, Monkhorst Pack | |
orthorhombic | primitive | Gamma, Monkhorst Pack |
base-centered | Gamma, Monkhorst Pack | |
body-centered | Gamma, Monkhorst Pack | |
face-centered | Gamma | |
tetragonal | primitive | Gamma, Monkhorst Pack |
body-centered | Gamma, Monkhorst Pack | |
hexagonal | rhombohedral | Gamma |
hexagonal | Gamma | |
hexagonal | primitive | Gamma, Monkhorst Pack |
body-centered | Gamma, Monkhorst Pack | |
face-centered | Gamma |
K点数量的选择
KPOINTS各个方向的建议取值为:
①结构优化每个晶格矢量的长度(a)乘以这个方向上的k点数(k)即k×a≈30
②自洽计算每个晶格矢量的长度(a)乘以这个方向上的k点数(k)即k×a≈45
③结构的某个方向有真空层,例如二维材料,z方向是真空层,则z方向k点取1
④声子谱、AIMD计算三个方向的K点直接取1,即1 1 1
比如我要算一个二维材料,a,b方向的晶胞长度为7Å,c方向的晶胞长度为25Å(含真空层),则K点取4 4 1比较合适
以上只是经验之谈,如果是刚上手开始算的体系,最好自己做一下收敛性测试!!!
POSCAR
POSCAR文件简介
POSCAR 包含计算模型的结构信息,也就是你要研究的对象。POSCAR有自己固定的格式,每一行都有特定的含义,认真掌握这些,对于搭建模型非常有帮助。下面是一个简单的POSCAR文件
O atom in a box
1.0
8.0 0.0 0.0
0.0 8.0 0.0
0.0 0.0 8.0
O
1
Cartesian
0.0 0.0 0.0
第一行:注释行,可以写与材料相关的信息
第二行:缩放因子,一般建议将其设置为1.0
第三到五行:元胞的三个基矢,单位是埃。基矢需要乘上第二行的缩放因子才是真正的晶胞大小
第六行:体系中的元素,多个元素用空格隔开
第七行:第六行元素对应的原子个数,多个数字用空格隔开
第八行:体系中原子的坐标系,可以为笛卡尔坐标(Cartesian),也可以为分数坐标系(Direct)
第九行至以后:体系中原子的坐标信息
有时候POSCAR文件最后带着很多行的0.0000,那个其实是对应了上面每个原子的速度,如果是做AIMD计算,要把这些0删掉,做其他计算不必理会
如何准备POSCAR文件
第一步:获取cif文件
①各类晶体数据库网站,例如Materials Project、CCDC(点击直达)
②使用Materials Studio软件建模,保存为cif文件
第二步:将cif文件转为POSCAR
①使用vaspkit工具的105功能,vaspkit-回车-105-回车-输入cif文件名-回车
②使用VESTA软件打开cif文件,依次点击File-Export data,选择好文件路径,填上文件名后,依次点击保存-OK(默认分数坐标即可)
注意:VESTA软件保存的POSCAR文件带.vasp后缀,使用时需要先把.vasp后缀删掉,也就是保持文件名字与POSCAR严格一致
POTCAR
POTCAR文件简介
POTCAR是指赝势文件,按类型可分为LDA(local density approximation)和GGA(generalized gradient approximation),其中GGA又分为PBE(Perdew-Burke-Ernzerhof)和PW91(Perdew-Wang 91),目前主流的计算一般都使用PBE赝势
在POTCAR文件夹中,可以看到各个元素对应的POTCAR文件,我们以O的PBE赝势文件为例,其内容为
PAW_PBE O 08Apr2002
6.00000000000000
parameters from PSCTR are:
SHA256 = 818f92134a0a090dccd8ba1447fa70422a3b330e708bb4f08108d8ae51209ddf O/POTCAR
COPYR = (c) Copyright 08Apr2002 Georg Kresse
COPYR = This file is part of the software VASP. Any use, copying, and all other rights are regulated by the VASP license agreement.
COPYR = If you do not have a valid VASP license, you may not use, copy or distribute this file.
VRHFIN =O: s2p4
LEXCH = PE
EATOM = 432.3788 eV, 31.7789 Ry
TITEL = PAW_PBE O 08Apr2002
LULTRA = F use ultrasoft PP ?
IUNSCR = 1 unscreen: 0-lin 1-nonlin 2-no
RPACOR = 1.200 partial core radius
POMASS = 16.000; ZVAL = 6.000 mass and valenz
RCORE = 1.520 outmost cutoff radius
RWIGS = 1.550; RWIGS = 0.820 wigner-seitz radius (au A)
ENMAX = 400.000; ENMIN = 300.000 eV
ICORE = 2 local potential
LCOR = T correct aug charges
LPAW = T paw PP
EAUG = 605.392
DEXC = 0.000
RMAX = 1.553 core radius for proj-oper
RAUG = 1.300 factor for augmentation sphere
RDEP = 1.550 radius for radial grids
RDEPT = 1.329 core radius for aug-charge
……后面的数值部分太长省略不写了,感兴趣的可以自己打开一个POTCAR文件看一下
其中
VRHFIN 是指这个元素的价电子排布
LEXCH = PE表示这个POTCAR对应的是GGA-PBE泛函
TITEL 指的是元素,以及POTCAR发布的时间
ZVAL 指的是该元素POTCAR中价电子的数目
ENMAX和ENMIN与截断能ENCUT相关
POTCAR的不同后缀的含义
_GW:与GW 计算的对应的POTCAR
_pv:v是valence的缩写,pv代表把内层的p
电子作为价电子来处理。
_sv:v是valence的缩写,sv代表把更内层的s
电子也作为价电子来处理
_d:把内层d轨道考虑到价电子层里面
_h:hard的缩写,带h的POTCAR中截断能比普通的要高很多
_s:soft的缩写,带s的POTCAR中截断能比普通的要低很多
那么这么多类型的POTCAR我们又该如何选择呢?
如果没有特别的需求,直接采用VASP官网(https://www.vasp.at/wiki/index.php/Available_pseudopotentials)推荐的即可
依次点击Standard potentials –> List of PBE potentials,在列表中,加粗的是VASP推荐的赝势
如何准备POTCAR文件
准备POTCAR前,首先要知道,POTCAR文件中元素(包括元素的顺序)要和POSCAR中严格一致。例如,POSCAR第6行是C H O,那么我们就需要准备对应的C、H、O元素的POTCAR,将这三个POTCAR文件组合成一个新的文件,命名为POTCAR。如果POTCAR和POSCAR中元素的数量不对应,运行VASP会直接报错;如果POTCAR和POSCAR中元素的顺序不对应,比如POSCAR是C H O,但是你POTCAR准备成了C O H,此时运行VASP,实际上VASP是将你结构里的H当作O来计算,O当作H来计算的,也就是说,以POTCAR为准!
但是也不必过于担心,只要你每次计算都懂的细心的去读VASP的输出,其实在计算刚开始的时候VASP就会提醒你POTCAR文件的错误
WARNING: type information on POSCAR and POTCAR are incompatible
POTCAR overwrites the type information in POSCAR
typ 1 type information: H O
WARNING: type information on POSCAR and POTCAR are incompatible
POTCAR overwrites the type information in POSCAR
typ 2 type information: O H
①利用cat命令生成POTCAR文件(提前准备好所需的POTCAR文件或者知道POTCAR文件的绝对路径都可以)
如果在计算文件夹里提前准备好所需的POTCAR文件,然后也重命名好了,比如POTCAR-C、POTCAR-H、POTCAR-O,那么就可以
cat POTCAR-C POTCAR-H POTCAR-O > POTCAR
如果知道POTCAR文件的绝对路径,假如都在/home/user/POTCAR/PBE路径下
cat /home/user/POTCAR/PBE/C/POTCAR /home/user/POTCAR/PBE/H/POTCAR /home/user/POTCAR/PBE/O/POTCAR > POTCAR
②利用工具直接生成POTCAR,这种方法一般都需要提前在所需工具的配置文件中写好POTCAR的路径
鸢算科技各个集群直接在有POSCAR的路径下使用potcar命令即可自动生成PBE的POTCAR
vaspkit配置好~/.vaspkit中的POTCAR路径和类型后,使用vaspkit-回车-103-回车即可生成POTCAR
输入文件的检查
检查输入文件首先第一点就是看四个核心输入文件,有没有缺少。要牢记INCAR、KPOINTS、POSCAR、POTCAR,文件的名字要与之完全一致,否则计算一定会报错!
INCAR
①参数的书写是否正确,比如LREAL = Auto,不能写成LREAL = .Auto.;ISTART,不能写成1START
避免这些错误一是靠经验的积累,二是在遇到新参数时,一定要先在VASP手册上(https://www.vasp.at/wiki/index.php/The_VASP_Manual)查询一下这个参数的可取值还有每种值的含义
比如你第一次遇到LREAL这个参数,你就去VASP手册上搜索一下,你就会发现,LREAL可取值是.FALSE. | Auto (or A) | On (or O) | .TRUE.,这样你就明白LREAL = .Auto.是一种错误的写法了
②INCAR的参数书写是否符合计算的体系,比如半导体体系,但是你写了ISMEAR = 1;你是磁性体系,但是没写ISPIN = 2,或者没有写初始磁矩等等,这些错误都会导致计算结果的错误
③INCAR的参数书写是否符合计算的任务,比如做自洽计算,是否设置了NSW = 0;频率计算,是否设置好NFREE和POTIM等等
这里只是简单举例,具体到每个人的任务和体系使用的INCAR参数一定会有所差异,关于INCAR参数的详解,可以看下一篇文章
KPOINTS
①KPOINTS很大程度上决定了计算速度,所以K点数量的选择一定要既保证准确性又符合经济性,推荐值上面已经给出了,可以再往上翻翻复习一下
②K点数量一定要符合结构对称性,比如你的结构,a=b,那没有特殊情况的话,你的a,b方向的K点也应该是相等的
不过反过来说,如果你的结构a≠b,但是a,b数值接近,那你的a,b方向的K点可以是相等的
某些晶系只能用Gamma center,忘了的再往上翻翻复习一下
③计算吸附能、差分电荷密度等需要检查前后K点数量保持一致
POSCAR
①要认真思考模型对不对,是否合理
②理解什么是真空层,什么是周期性结构,什么是相邻周期的相互作用
③检查清楚固定和放开原子是否是按你预想的做的
POTCAR
①POTCAR中元素的种类和顺序是否和POSCAR一致
②POTCAR 的选择是否合理? 有没有参考VASP的推荐说明
提交作业脚本
这部分内容是写给使用Slurm作业系统提交VASP计算的朋友
①集群中一般有不同的分区,首先检查脚本中是否写好了对应的分区,比如鸢算科技弦月一号集群就有CPU、2V100、4P100三个不同的分区
体系原子数量较少或者计算自洽和电子结构等任务可以选择CPU分区,体系原子数较大的结构优化或者过渡态搜索可以选择2V100和4P100
②某些特殊的任务是否使用了对应的VASP版本,比如在鸢算科技弦月一号集群:
固定晶轴优化,选择sub_vasp_optcell.sh;计算CI-NEB,选择sub_vasp_vtst.sh等等
③K点大于1×1×1,不要使用vasp_gam;SOC计算,需要使用vasp_ncl。仔细检查有没有在脚本里修改对应的版本