一、vasp文件:
INCAR in **
STOPCAR in
stout out
POTCAR in **
KPOINTS in **
IBZKPT out
POSCAR in **
CONTCAR out
EXHCAR in (should not be used in vasp.3.2 and vasp.4.x)
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
二、输入文件:
1.INCAR
ISTART = 1
ICHARG = 1
ENCUT = 600
ISMEAR = 0
SIGMA = 0.05
EDIFF = 1E-6
⑴ ISPIN = 2
1 代表不考虑自旋极化,是VASP的默认值;
2 代表打开自旋极化该选项,计算中考虑。
需要考虑自旋极化一般来说有以下几种:
1)单原子的计算,
2)O2 分子(基态为三重态)
3)*基相关的计算
4)含Fe,Co, Ni 的体系
5)要计算的体系具有磁性:顺磁,铁磁,反铁磁等,要打开自旋极化。
6)当关注体系的电子性质时,且自己不知道加或者不加的时候,建议加上。
⑵ISYM = 0 计算时不考虑对称性
改变晶胞的对称性在计算单原子能量的时候是必须的
⑶MAGMOM = 22 (通过MAGMOM我们可以指定体系中原子的初始磁矩)
首先:MAGMOM是一个实数的排列(real array)
其次:默认值是,原子的个数乘以1.0,也就是原子个数在前面,MAGMOM的值在后面。
最后: * 前后没有空格,没有空格,没有空格!!!
如果磁矩是负值可以这样写:MAGMOM = 2-2
用法:
MAGMOM并不要求严格按照我们已知的数据去输入
对于简单体系来说,MAGMOM可以采用默认值
如果你知道体系的磁矩是多少,初始的时候可以设置的更大些,1.2或者1.5倍
⑷ISMEAR
1)不同的值对应的是不同的展宽方法;
2)对于分子,原子的计算用0。
对于半导体和绝缘体体系,ISMEAR的值取绝对不能大于0, 一般用0;
对所有体系,如果想获取更加精确能量的时候用-5:但使用-5的时候,K点数目小于3则程序会罢工;K 点少,半导体或者绝缘体,那么只能用 ISMEAR = 0;
在DOS能带计算中,使用ISMEAR= -5 用于获取精确的信息。
对于金属来说,ISMEAR的取值一般为0,1;
保守地说,ISMEAR = 0 (Gaussian Smearing) 可以满足大部分的体系(金属,导体,半导体,分子);
如果不知道怎么取ISMEAR,1)直接用0;2)测试不同的值对计算的影响。
⑸SIGMA:
SIGMA的取值和ISMEAR息息相关,也就是和ISMEAR这个参数同时出现,设定。下面是一些基本的介绍:
如果用了ISMEAR = -5; SIGMA的值可以忽略,也可以不管。(对于所有体系都适用);
对于金属: ISMEAR = 1 或者0,非金属: ISMEAR= 0 的时候,一般取 SIGMA = 0.10 即可,默认值是0.20。不放心的话,用0.05。
对于气体分子,原子体系(也就是你把分子或者原子放到一个box里面):死死记住下面组合就可以了, ISMEAR = 0; SIGMA = 0.01。
不过很多人都不放心,为了保险想测试一番。标准是: SIGMA的取值要保证OUTCAR 中的 entropy T*S 这一项,平均到每个原子上,要小于0.001 eV。检查的时候可以用这个命令:
grep ‘entropy T’ OUTCAR
⑹EDIFF:
EDIFF 控制电子步(自洽)的收敛标准,默认值为1E-4
⑺EDIFFG
我们优化几何结构的时候,当结构前后变化达到我们设定的要求时,便停止优化。而这个设定的要求,就是通过EDIFFG来控制
1)我们可以使用力作为收敛标准,此时EDIFFG为负值。一般来说取值在-0.01到-0.05之间
2)对于较大的体系,我们也可以使用能量作为标准:此时,EDIFFG 为正值,一般取值范围在0.0001-0.001即可
EDIFFG默认值为EDIFF的十倍
⑻IBRION
IBRION=3:你的初始结构很差的时候
IBRION=2:共轭梯度算法,很可靠的一个选择,一般来说用它基本没什么问题
IBRION=1:用于小范围内稳定结构的搜索
如果体系遇到结构不收敛的时候,首先检查自己的结构是否合理,也就是物理化学意义是否清晰。如果结构没问题,可以尝试下换下IBRION的参数
⑼NSW(控制几何结构优化的步数,也就是VASP进行多少离子步)
参数设置的方法:
首先,它必须是大于等于0的整数。
其次,一般来说,简单的体系200步内就可以正常结束。
不知道什么时候收敛,初始结构很差,或者设置了很严格的收敛标准,那么你就要增大一下NSW的取值了,比如NSW=500或者更大
⑽NELM(控制电子结构优化的步数,也就是VASP进行多少电子步)
默认值是60
电子步不收敛怎么办?
1) 首先检查自己的初始结构是不是合理的。这是关键点之一。如果合理,那么再进行下面的步骤:
2)如果第一个离子步中:SCF(也就是电子步)的计算不收敛,尝试下增加NELM的值;
对于一般普通的体系可以设置NELM = 100
对于一些电子结构比较难收敛的体系,可以设置更大一些:NELM = 200
增加NELM后依然不收敛,尝试下改变AMIX,BMIX,官网推荐的参数如下:不过个人的感觉,调这些参数好像没什么用,效果甚微。
3) 第一个离子步中的电子步收敛了,后面的不收敛,能量变的极大(本例),首先应该想到的是去检查结构,一般在结构不合理的时候会出现类似的情况;调整结构再提交任务。
4)如果前面几个离子步中电子步都不收敛,且能量变化正常,可以尝试着让任务再多算几步,后面跑着跑着可能就收敛了。
5)如果跑了很长时间,每一个离子步中的电子步都不收敛,可以尝试着换一个更加稳定的电子步迭代算法(ALGO参数)。这种情况:ALGO = ALL 结合 NELM = 200 可以解决大部分的问题。
6)但需要注意的是:ALGO= ALL 这个算法虽然稳定,但比较耗时。自己要权衡一下。可以尝试着两步走的战略:step1)先用ALGO =ALL的办法算一个单点,保存WAVECAR。step2)然后将ALGO改回原来的,读WAVECAR继续优化。
⑾POTIM=0.1
离子步移动的大小,默认是0.5
POTIM的改变一般是在IBRION=2的前提下进行的
INCAR中设置参数ALGO的参考链接:
https://cms.mpi.univie.ac.at/wiki/index.php/ALGO
INCAR: http://cms.mpi.univie.ac.at/vasp/guide/node91.html
2.KPOINTS
Al2O3
0
G
6 6 6
0.0 0.0 0.0
第四行,在xyz三个方向上生成对应数目的K点,本例是111;
对于原子或者分子的计算,K点取一个gamma点就够了(1 1 1),也就是这个KPOINTS文件可以用于绝大多数的原子或者分子计算,不用再修改;
但如果你要用ISMEAR = -5 来计算能量,那么就需要把 1 1 1 改成 2 2 2或者3 3 3。
3.POSCAR
1)储存模型的结构信息
al4 o6
1.0
5.3683791161 0.0000000000 0.0000000000
-4.4198371152 3.0470533650 0.0000000000
-2.0774127489 0.6466946947 6.9651142483
Al O
4 6
Direct
0.905783924 0.094216009 0.592572966
0.249898973 0.750100923 0.844029002
0.094215970 0.905783975 0.407427015
0.750101010 0.249898998 0.155970996
0.089533034 0.910467049 0.656478982
0.654550043 0.345450051 0.353072989
0.345450037 0.654550050 0.646926992
0.818279922 0.181719978 0.933486978
0.181719952 0.818279928 0.066512999
0.910466961 0.089533003 0.343520999
第一行:同样随便写,但不能不写;
第二行:Scale factor,称为缩放系数,这里是1.0;
第三到五行:是组成格子的三条边的坐标信息;从原点出发,在xyz轴上分别取8Å。这个很容易理解;
第六行:体系中的元素,这里我们算的是氧原子,所以写:O,即氧的元素符号。需要注意的有以下几点:
vasp4.xx版本里面没有这一行,不过现在几乎没人用4.X的版本了;
O的符号和数字0容易混淆,一定要注意;
第一个元素符号要顶格写,前面不要有空格,有可能会出错;
如果计算文件夹里面,已经有与结构相一致的POTCAR,那么POSCAR里面即使删了这一行有不会影响计算,VASP会读取POTCAR中的元素信息,但输出文件CONTCAR中会把该行自动加上。(新手跳过)
第七行:与第六行中元素相对应的原子数目,这里我们只有1个氧原子,所以写成1;
第八行:体系中原子的坐标系,可以为笛卡尔坐标,也可以为分数坐标系。注意的有以下几点:
这一行同KPOINTS的第三行一样,即只认第一个字母;
C或者c代表笛卡尔坐标, D或者d代表分数坐标系;
VASP输出文件CONTCAR里面采用的是分数坐标系。
第九行:体系中原子的坐标信息。这里我们把O原子放到了原点(0.0 0.0 0.0)的位置,大家也可以随便放一个位置,比如:(4.0 5.0 6.0),(1.1 2.5 6.5)都是可以的。由于周期性的存在,不管你怎么放,相邻两个格子之间氧原子的距离都是一样的。
4.POTCAR
赝势文件(里面包含了元素的各种信息)
其中重要的参数有:
VRHFIN 用来看元素的价电子排布,如果你元素周期表倒背如流,可以忽略这个参数;
LEXCH 表示这个POTCAR对应的是GGA-PBE泛函;如果INCAR中不设定泛函,则默认通过这个参数来设定。
TITEL 就不用说了,指的是哪个元素,以及POTCAR发布的时间;
ZVAL 指的是实际上POTCAR中价电子的数目,尤其是做Bader电荷分析的时候,极其重要。
ENMAX 代表默认的截断能。与INCAR中的ENCUT这个参数相关。
POTCAR的选择,参考官网提供的信息:https://cms.mpi.univie.ac.at/vasp/vasp/Recommended_PAW_potentials_DFT_calculations_using_vasp_5_2.html
三、输出文件:
1.CONTCAR
1)储存新结构的文件(优化以后的结构)
2)计算完成后,可以用可视化文件打开CONTCAR,检查计算的对不对
3)计算中途断开,需要继续计算时,可以用CONTCAR中的内容代替POSCAR中
的内容作为输入文件,在重新开始计算之前,最好把断开时所保留的有用
数据文件进行备份
保存数据的脚本:
#!/usr/bin/env bash
mv POSCAR POSCAR-$1
mv OUTCAR OUTCAR-$1
mv OSZICAR OSZICAR-$1
mv vasprun.xml vasprun.xml-$1
mv CONTCAR POSCAR
2.OSZICAR
1)整个体系的优化过程都记录下来了
2)通过OSZICAR获取体系的能量,也就是E0后面的那一项,即体系的绝对能量
可以通过命令grep E0 OSZICAR来进行查看
3.OUTCAR
K点信息:想查看K点个数:grep irreducible OUTCAR 或者 grep irre OUTCAR
费米能级的获取:grep E-fermi OUTCAR
grep reached OUTCAR 查看计算收敛与否
频率分析关键的参数:
IBRION=5
NFREE=2 决定每个离子在每个方向上需要的位移
POTIM=0.02
振动频率计算的时候,只能自动计算gamma点