本文主要的目的是给大家介绍一下常见的INCAR参数,以及这些参数对于不同的计算任务和体系所适用的值。其中大部分的内容我都会参考VASP的官方手册进行整理,大家可以将本文作为平时查询和熟悉参数的工具,也推荐大家在VASP官方手册查询参数,对理解和提升有很大的帮助
全局通用参数
SYSTEM
默认值:unknown system
可取值:随意填写,但不要写中文
这个参数是VASP提供给用户用于描述自己此次计算目的、体系、方法等等,用户可以随意填写,也可以不写。
当自洽计算填写此参数(比如SYSTEM=XXX)并输出CHGCAR后,后续非自洽计算如果读取这个CHGCAR,计算刚开始会显示CHGCAR read from XXX
ISTART
参数描述:ISTART决定了VASP运行计算时是否读取WAVECAR文件
默认值:ISTART = 1(如果存在WAVECAR文件);ISTART = 0(不存在WAVECAR文件)
可取值:ISTART = 0 | 1 | 2 | 3
ISTART = 0,计算不会读取WAVECAR文件,此时VASP会根据INIWAV的值来确定初始化轨道的方法
ISTART = 1,轨道由WAVECAR文件读取,并重新读取INCAR中的截断能和POSCAR中的晶格矩阵进行计算(即使这些值与WAVECAR中的旧值不同),如果检测到不存在WAVECAR文件,则VASP按ISTART=0执行计算。如果此次计算相比于上次计算晶胞的大小/形状或截断能发生变化,并且希望读取WAVECAR开始计算,则建议将ISTART设置为1
ISTART = 2,轨道由WAVECAR文件读取,即使INCAR中的截断能或者POSCAR中的晶格矩阵与WAVECAR文件上存储的值不同,平面波也不会更改
ISTART = 3,与ISTART=2相同,但是需要额外读取TMPCAR文件,此文件内容是含时间步长的位置和轨道信息,一般不推荐设置!另外如果不存在WAVECAR或TMPCAR文件,计算会立即终止
如果此次计算POSCAR中晶胞的大小/形状或INCAR中截断能没有发生变化,则ISTART=1和ISTART=2是相同的作用
推荐:计算能带结构、态密度时,ISTART=1;其余计算ISTART=0
ICHARG
参数描述:ICHARG 决定了 VASP 如何构建初始电荷密度。
默认值:ICHARG = 2(当ISTART = 0时);ICHARG = 0(其他所有情况)
可取值:ICHARG = 0 | 1 | 2 | 4 | 5 | 10 | 11 | 12
ICHARG = 0,从初始波函数(WAVECAR)计算电荷密度。若WAVECAR文件无效或缺失,VASP会自动修正为ICHARG = 2。适用于续算场景,但若波函数文件不匹配(如截断能或晶胞尺寸改变),可能导致收敛问题!一般结构优化不推荐输出WAVECAR,因此ICHARG = 0不常用
ICHARG = 1,从CHGCAR文件读取电荷密度,并通过原子电荷密度的线性组合方法从旧位置(CHGCAR中的)外推至新位置。适用于结构微调后的续算(如弛豫或分子动力学),可加速收敛,但是一般结构优化不推荐输出CHGCAR,因此ICHARG = 1不常用
ICHARG = 2,使用原子电荷密度的叠加作为初始电荷密度,当ISTART=0(或者没有WAVECAR文件时),VASP会默认采用此模式。ICHARG = 2适用于全新计算,常用!
ICHARG = 4,从POT文件读取势场(需LVTOT=.TRUE.生成该文件),常用于优化有效势(OEP)方法
ICHARG = 5,外部电荷密度更新模式,允许在SCF过程中通过GAMMA文件修正KS占据数,用于DFT+DMFT等自洽计算,需配合vasp.lock文件控制流程
ICHARG = 10 | 11 | 12 ,通过给ICHARG值加10(也就是0、1、2变为10、11、12),在保持ICHARG=0、1、2的功能前提下可使电荷密度在整个电子最小化过程中保持恒定,用于非自洽计算。适用场景:
ICHARG=10,常用于HSE计算能带结构;
ICHARG=11,常用于基于CHGCAR给定电荷密度计算能带结构和态密度;
ICHARG=12,原子电荷密度叠加的非自洽计算(遵循Harris-Foulkes泛函原理),可正确计算应力和力,支持基于该泛函的从头算分子动力学。
推荐:绝大多数计算设置ICHARG = 2,PBE能带设置ICHARG = 11,HSE能带设置ICHARG = 10
当ICHARG=11/12时,强烈建议将LMAXMIX设为赝势中最大l量子数的两倍(s/p元素设为2,d元素设为4,f元素设为6)
LWAVE
参数描述:LWAVE 参数决定波函数是否在VASP运行结束时写入 WAVECAR 文件
默认值:LWAVE = .TRUE.
可取值:LWAVE = .TRUE. | .FALSE.
LWAVE = .TRUE.,写入 WAVECAR;LWAVE = .FALSE.,不写入 WAVECAR
WAVECAR文件常常占用大量存储空间,通常来说结构优化、分子动力学等等不需要后续读取WAVECAR计算的任务,都不需要输出WAVECAR
因此只有后续明确会用到WAVECAR的场景,再写LWAVE = .TRUE.,其余情况一律写LWAVE = .FALSE.
LCHARG
参数描述:LCHARG 参数决定波函数是否在VASP运行结束时写入 CHGCAR和CHG 文件
默认值:LCHARG = .TRUE.
可取值:LCHARG = .TRUE. | .FALSE.
LCHARG = .TRUE.,写入 CHGCAR和CHG 文件;LCHARG = .FALSE.,不写入 CHGCAR和CHG 文件
CHGCAR和CHG 文件常常占用大量存储空间,通常来说结构优化、分子动力学等等不需要后续读取CHGCAR和CHG 文件计算的任务,都不需要输出CHGCAR和CHG 文件
因此只有后续明确会用到CHGCAR和CHG 文件的场景,再写LCHARG = .TRUE.,其余情况一律写LCHARG = .FALSE.
ISMEAR
参数描述:ISMEAR是VASP计算中控制轨道部分占据数(fnk)设置方法的重要参数,它决定了如何处理费米能级附近的电子分布,对计算结果的准确性有重要影响
默认值:ISMEAR = 1
可取值:ISMEAR = -15 | -14 | -5 | -4 | -3 | -2 | -1 | 0 | [大于0的整数]
ISMEAR > 0:采用Methfessel-Paxton方法,阶数为ISMEAR值,展宽宽度由SIGMA决定。注意:这种方法可能导致绝缘体的部分占据数不物理
ISMEAR = 0:采用高斯展宽方法,展宽宽度由SIGMA决定
ISMEAR = -1:采用费米展宽方法,展宽宽度由SIGMA决定
ISMEAR = -2:从WAVECAR中读取部分占据数并在整个计算过程中保持不变。或者可以通过INCAR文件中的FERWE(和ISPIN=2时的FERDO)标签设置占据数
ISMEAR = -3:对INCAR文件中SMEARINGS参数提供的值进行循环计算
ISMEAR = -4:无展宽的四面体方法
ISMEAR = -5:带Blöchl修正的无展宽四面体方法
ISMEAR = -14:带费米-狄拉克展宽(SIGMA)的四面体方法
ISMEAR = -15:带Blöchl修正和费米-狄拉克展宽(SIGMA)的四面体方法
不同的ISMEAR值适用于不同的体系
对于孤立的分子或原子体系,ISMEAR = 0;SIGMA = 0.01
对于周期性体系,不知道是绝缘体、半导体还是金属,使用ISMEAR = 0和SIGMA = 0.03~0.05
ISMEAR = 0加上测试好的SIGMA值是一个万能的设置,不管什么体系,都可用于结构优化、频率计算和热力学校正
对于半导体和绝缘体体系,ISMEAR的值取绝对不能大于0, 一般用0;对于金属体系,ISMEAR的取值一般为 ≥ 0 的数值(0,1)
对于电子结构中DOS计算部分,ISMEAR = -5,此时K点要 ≥ 3,VASP才能正常运行
四面体方法(ISMEAR = -4, -5, -14, -15)需要配合gamma-center的K点模式使用
SIGMA
参数描述:SIGMA决定了展宽(以eV为单位)
默认值:SIGMA = 0.2
可取值:SIGMA = 实数
SIGMA的取值和ISMEAR息息相关,一般情况下SIGMA会和ISMEAR这个参数同时设定(ISMEAR = -5时,不需要写SIGMA)
对于金属: ISMEAR = 1 或者0,SIGMA = 0.1~0.2即可
对于非金属: ISMEAR= 0 的时候,一般取 SIGMA = 0.10 即可,不放心的话,用0.05。
对于孤立的气体分子,原子体系(也就是你把分子或者原子放到一个box里面):牢记ISMEAR = 0和SIGMA = 0.01
测试标准是: SIGMA的取值要保证OUTCAR 中的 entropy T*S 这一项,平均到每个原子上,要小于 1-2 meV。
检查的时候可以用这个命令:grep ‘entropy T’ OUTCAR
注意1:这里有两个单引号,不要输入的时候漏掉。
用这个命令,得出的能量除以体系中原子的数目(也就是平均到每个原子上),然后再和 0.001 eV 比较。如果小于,SIGMA取值OK,如果大于,再换个小点的SIGMA值进行测试。
注意2:这里的说的entropy,是因为ISMEAR展宽这个计算方法引入的,跟我们物理化学书里面的通过振动频率计算的entropy完全是两码事。后面我们会介绍如何通过频率分析计算物理化学里面的Entropy。千万别把这个数值当成频率所对应的entropy。
注意3: 结合上一点强调下:vasp没有内置热力学相关的计算模块,我们需要计算频率来获得。
ENCUT
参数描述:ENCUT是平面波基组的截断能(以eV为单位)
默认值:ENCUT = POTCAR文件中最大的ENMAX
可取值:ENCUT = 实数
强烈建议始终在INCAR文件中手动指定截断能ENCUT,否则,默认的ENCUT可能会在不同的计算中有所不同,从而导致总能量无法比较(例如,用于计算内聚能)。
对于截断能的选取建议自己手动做收敛性测试,实在不想测试可以按经验选择一个保守的截断能,也就是:1.3×ENMAX
通过命令:grep ENMAX POTCAR 抓取POTCAR中所有的ENMAX,然后选取最大的ENMAX,设置ENCUT = 1.3×ENMAX
下面我用一个由O、C、Co元素组成的体系为例
vasp6666@login01:~/vasp_test_2v100/slab_15_atoms$ grep ENMAX POTCAR
ENMAX = 400.000; ENMIN = 300.000 eV
ENMAX = 400.000; ENMIN = 300.000 eV
ENMAX = 267.968; ENMIN = 200.976 eV
可以看到最大的ENMAX是400eV,因此ENCUT不经过收敛性测试直接设置为1.3×400=520eV(即ENCUT = 520)较为合适
LREAL
参数描述:LREAL 用于确定投影算符是在实空间(real-space)还是倒易空间(reciprocal space)中进行计算
默认值:LREAL = .FALSE.
可取值:LREAL = .FALSE. | Auto (or A) | On (or O) | .TRUE.
LREAL=.FALSE.投影算符在倒易空间(reciprocal space)中进行计算。这是默认设置,适用于高精度计算,但计算量较大
LREAL=Auto或A投影算符在实空间(real space)中进行计算,且完全自动优化投影算符(无需用户干预,推荐使用)
LREAL=On 或 O投影算符在实空间中进行计算,但需手动优化投影算符(不推荐使用)。与.TRUE.的区别在于是否使用King-Smith算法优化
LREAL=.TRUE.投影算符在实空间中进行计算,直接使用文件中存储的投影算符(不推荐使用)。可能导致精度下降,尤其对复杂体系
超过20个原子的体系直接用LREAL = Auto即可,平衡效率与精度
原子数超过100,LREAL = Auto的计算速度会比LREAL = .FALSE.快很多倍!
ISPIN
参数描述:ISPIN用于指定是否进行自旋极化计算
默认值:ISPIN = 1
可取值:ISPIN = 1 | 2
ISPIN=1:执行非自旋极化计算(默认值),适用于非磁性体系,所有电子轨道自旋向上和向下的占据数相同。
ISPIN=2:执行自旋极化计算(共线磁性),可结合MAGMOM参数研究铁磁、反铁磁等共线磁性行为
磁性材料:如过渡金属(Fe、Co、Ni)或含d/f电子的体系,需设置ISPIN=2并合理定义MAGMOM
非磁性体系:如半导体或绝缘体,通常使用ISPIN = 1以节省计算资源
使用ISPIN = 2会比使用ISPIN = 1多使用将近一倍的内存/显存,同时也会增加计算时间,在使用显卡加速节点时尤其要注意这一点
使用非共线磁性计算时(LNONCOLLINEAR=.TRUE.),ISPIN这个参数会被忽略。但是在VASP.6.5.0版本以上的计算中,若同时设置LNONCOLLINEAR=.TRUE.和ISPIN = 2和MAGMOM,VASP会报错
MAGMOM
参数描述:MAGMOM 用于指定每个原子的初始磁矩(单位为μB)
默认值:
MAGMOM = NIONS * 1.0 (ISPIN=2)
MAGMOM = 3 * NIONS * 1.0 (非共线磁性体系LNONCOLLINEAR=.TRUE.)
可取值:MAGMOM = 实数数组
输入格式示例:
自旋极化计算(ISPIN=2)
反铁磁Cr单胞(2原子)
MAGMOM = 1.0 -1.0
多原子体系可使用换行符(” \ “)分隔
MAGMOM = 2.0 2.0 2.0 \
-2.0 -2.0 -2.0
非共线计算(LNONCOLLINEAR=.TRUE.)
16原子体系(前8原子磁性)
MAGMOM = 3.0 2.0 1.0 \
-3.0 -2.0 -1.0 \
3.0 2.0 1.0 \
-3.0 -2.0 -1.0 \
3.0 2.0 1.0 \
-3.0 -2.0 -1.0 \
3.0 2.0 1.0 \
-3.0 -2.0 -1.0 \
24*0.0
在从头计算(ISTART=0)时,MAGMOM定义每个原子的初始磁矩,并降低体系对称性(若磁矩分布破坏晶体对称性)。
对于磁性计算(自旋极化或非共线磁性),初始磁矩的合理设置可加速收敛并避免陷入局部极小值。推荐值为实验磁矩的1.2-1.5倍
ISYM
参数描述:ISYM决定了VASP处理对称性的方式
默认值:
ISYM=1:当使用超软赝势(USPPs)时默认启用。
ISYM=3:当启用Hartree-Fock杂化泛函计算(LHFCALC=.TRUE.)时默认启用。
ISYM=2:其他情况下默认启用(常规计算)。
可取值:ISYM = -1 | 0 | 1 | 2 | 3
ISYM=1 | 2 | 3:启用对称性;ISYM=0 | -1:关闭对称性
ISYM=2:采用高效电荷密度对称存储,显著降低内存需求(相比于ISYM = 1)
ISYM=3:不直接对称化电荷密度,而是通过对布里渊区不可约k点的轨道应用对称操作来构造电荷密度,此模式专为杂化泛函计算设计
ISYM=0:不启用对称性,但假设波函数满足Ψk=Ψ*-k,从而减少布里渊区采样。推荐用于分子动力学计算(IBRION=0)
ISYM=-1:完全关闭对称性,适用于自旋轨道耦合(SOC)或强对称性破缺体系,但会降低计算效率
启用对称性时,VASP会按以下步骤分析对称性(结果写入OUTCAR文件):
1. 确定晶格的点群对称性(基于POSCAR中的结构)。
2. 检测基矢是否破坏对称性,移除不满足的对称操作。
3. 检查初始速度是否破缺对称性。
4. 验证MAGMOM设置的磁矩是否破坏对称性,并确定磁对称群
常规晶体计算:推荐ISYM=2(平衡效率与精度)
分子动力学/表面计算:设为ISYM=0以充分弛豫
磁性或SOC体系:关闭对称性(ISYM=-1)
通过在INCAR中设置NWRITE = 3可在OUTCAR中输出对称操作详情
ALGO
参数描述:ALGO用于指定电子最小化算法或选择GW计算类型
默认值:ALGO = Normal
可取值:ALGO = Normal | VeryFast | Fast | Conjugate | All | Damped | Subrot | Eigenval | Exact | None | Nothing | CHI | G0W0 | GW0 | GW | scGW0 | scGW | G0W0R | GW0R | GWR | scGW0R | scGWR | ACFDT | RPA | ACFDTR | RPAR | BSE | TDHF
ALGO=Normal:相当于IALGO = 38,采用Blocked-Davidson算法,通用且稳健的算法,适用于大多数情况
ALGO=VeryFast:相当于IALGO = 48,采用RMM-DIIS算法,更快的算法,但稳定性有所降低,VASP6版本增强了这个算法的鲁棒性,HSE06计算不要选择这个算法
ALGO=Fast:混合算法,初始使用Blocked-Davidson算法(IALGO=38),后续切换至RMM-DIIS算法(IALGO=48)
ALGO=Conjugate或All:选择IALGO=58(all band simultaneous update of orbitals),推荐搭配ISEARCH=1(improved line-search算法)使用
常规计算:推荐ALGO = Normal,在实际应用中,有时会遇到某些结构优化步骤在使用ALGO = Normal时无法收敛的情况,此时可以尝试切换到Fast或VeryFast来解决问题
金属氧化物使用DFT+U遇到电子步难收敛的问题,可以使用ALGO = ALL,能够加快收敛
含f轨道电子(如镧系元素)时,必须设置LMAXMIX=6以确保收敛