本文主要的目的是给大家介绍一下常见的INCAR参数,以及这些参数对于不同的计算任务和体系所适用的值。其中大部分的内容我都会参考VASP的官方手册进行整理,大家可以将本文作为平时查询和熟悉参数的工具,也推荐大家在VASP官方手册查询参数,对理解和提升有很大的帮助
VASP官方手册地址:https://vasp.at/wiki/Main_page (直接在搜索栏搜索参数名称)
一、全局通用
1. SYSTEM
默认值:unknown system
可取值:随意填写,但不要写中文
这个参数是VASP提供给用户用于描述自己此次计算目的、体系、方法等等,用户可以随意填写,也可以不写。
当自洽计算填写此参数(比如SYSTEM=XXX)并输出CHGCAR后,后续非自洽计算如果读取这个CHGCAR,计算刚开始会显示CHGCAR read from XXX
2. 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
3. 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)
4. 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.快很多倍!
5. 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)较为合适
6. 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点模式使用
7. 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没有内置热力学相关的计算模块,我们需要计算频率来获得。
8. PREC
参数描述:用于指定计算的 “精度模式”
默认值:
PREC = Medium(VASP.4.X)
PREC = Normal(VASP.5.X)
可取值:PREC = Normal | Single | SingleN | Accurate | Low | Medium | High
PREC会为以下各项设置默认值:
1. 能量截断能 ENCUT
2. FFT 网格大小 (NGX, NGY, NGZ) 和 (NGXF, NGYF, NGZF)
3. 实空间投影算子的精度 ROPT(仅在 LREAL=.TRUE. 时生效)。
由 PREC 设定的参数值(例如 ENCUT),可以通过在 INCAR 中显式指定该参数来覆盖,具体的默认值设置详见下方表格
| PREC | ENCUT | NGX,Y,Z | NGXF,YF,ZF | ROPT (LREAL=A) | ROPT (LREAL=O) |
| Low | max(ENMIN) | 3/2×Gcut | 3×Gaug | -1×10-2 | 2/3 |
| Medium | max(ENMAX) | 3/2×Gcut | 4×Gaug | -2×10-3 | 1.0 |
| Normal | max(ENMAX) | 3/2×Gcut | 2×NGX | -5×10-4 | 1.0 |
| Accurate | max(ENMAX) | 2×Gcut | 2×NGX | -2.5×10-4 | 1.0 |
| High | 1.3×max(ENMAX) | 2×Gcut | 16/3×Gaug | -4×10-4 | 1.5 |
| Single (VASP.5) | max(ENMAX) | 3/2×Gcut | NGX | -5×10-4 | 1.0 |
| Single (VASP.6) | max(ENMAX) | 2×Gcut | NGX | -5×10-4 | 1.0 |
| SingleN (VASP.6) | max(ENMAX) | 3/2×Gcut | NGX | -5×10-4 | 1.0 |
max(ENMAX) 和 max(ENMIN) 是指 POTCAR 文件中所有元素的 ENMAX 和 ENMIN 的最大值。
推荐使用 PREC=Normal 或 PREC=Accurate。Normal 和 Accurate 模式均采用双网格技术:表示增强电荷的精细网格 (NGXF, NGYF, NGZF) 大小是表示赝势轨道的主网格 (NGX, NGY, NGZ) 的两倍。PREC=Accurate 会略微增加内存需求,但在需要高精度结果时(例如:高精度力计算、声子谱、应力张量,或广义上的二阶导数计算),建议结合增大的ENCUT一起使用。有时,通过设置ADDGRID=.TRUE.可以进一步提高力的精度
重要提示!
1. 强烈建议始终在 INCAR 中手动指定能量截断能 ENCUT,以确保不同计算之间的精度一致。否则,不同任务(例如计算内聚能时)的默认 ENCUT 可能不同,导致总能量等结果无法进行对比。
2. 设置 PREC=Accurate 并不意味着计算结果已经完全收敛。关于能量截断能 ENCUT 的收敛性,必须单独进行测试和验证。
8. 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以确保收敛
9. EDIFF
参数描述:EDIFF 用于指定电子自洽迭代的全局收敛判据,单位为 eV
默认值:EDIFF = 1×10⁻⁴
可取值:EDIFF = 实数
当两步迭代之间的总能(自由能)变化以及能带能量变化(本征值变化)都小于 EDIFF(单位 eV)时,电子自由度的弛豫会停止。
如果设置 EDIFF = 0,则会严格执行 NELM 步电子自洽迭代,不提前收敛。
在大多数情况下,电子收敛是二次收敛,因此额外迭代的计算成本很小。
为了得到充分收敛的计算结果,强烈建议将 EDIFF 设置为1×10⁻⁶。
对于有限差分计算(如声子谱),为获得精确结果,甚至可能需要设置EDIFF = 1×10⁻⁷。
可以通过设置 NWRITE = 2, 3 查看每一步电子迭代的详细信息。
10. NELM&NELMIN
参数描述:NELM和NELMIN分别用于设定电子自洽迭代的最大步数和最小步数。
默认值:
NELM = 60
NELMIN = 2
可取值:NELM / NELMIN = 实数
1. 通常无需修改NELM默认值,如果自洽循环在 40 步内仍未收敛,那么大概率也无法收敛,若你想手动设置,必须将其设为大于 100,否则 VASP 会忽略该输入值并采用默认设置
2. NELMIN通常也无需修改,在某些计算中,例如分子动力学(MD)计算或离子弛豫 / 结构优化时,建议将 NELMIN 增大到 4~8 之间
11. 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中输出对称操作详情
二、控制输出
1. LWAVE
参数描述:LWAVE 参数决定波函数是否在VASP运行结束时写入 WAVECAR 文件
默认值:LWAVE = .TRUE.
可取值:LWAVE = .TRUE. | .FALSE.
LWAVE = .TRUE.,写入 WAVECAR;LWAVE = .FALSE.,不写入 WAVECAR
WAVECAR文件常常占用大量存储空间,通常来说结构优化、分子动力学等等不需要后续读取WAVECAR计算的任务,都不需要输出WAVECAR
因此只有后续明确会用到WAVECAR的场景,再写LWAVE = .TRUE.,其余情况一律写LWAVE = .FALSE.
2. 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.
3. LORBIT
参数描述:LORBIT 用于选择将 Kohn–Sham 轨道投影到局域量子数(l,m)的方法,并输出 PROCAR / PROOUT 文件
默认值:LORBIT = 0
可取值:LORBIT = 0 | 1 | 2 | 5 | 10 | 11 | 12 | 13 | 14
设置 LORBIT 后,VASP 会对 Kohn–Sham 轨道进行后处理:将轨道分解到局域量子数,得到局域投影性质,例如:
1. 原子局域电荷密度
2. 自旋极化带来的原子磁矩
| LORBIT | RWIGS | 输出文件 | 说明 |
| 0 | 需要 | DOSCAR、PROCAR | 简单投影 |
| 1 | 需要 | DOSCAR、lm 分解的 PROCAR | 按 l,m 分轨道 |
| 2 | 需要 | 同上 + 相位因子 | 带相位 |
| 5 | 需要 | DOSCAR、PROOUT | 老格式输出 |
| 10 | 忽略 | DOSCAR、PROCAR | PAW 投影 |
| 11 | 忽略 | DOSCAR、lm 分解的 PROCAR | 最常用:PAW + 分轨道 |
| 12 | 忽略 | 同上 + 相位因子 | 带相位(不推荐) |
| 13 | 忽略 | 同上,逐能带选最优投影 | 仅定性 |
| 14 | 忽略 | 同上,能量区间统一最优投影 | VASP6 推荐 |
设置 LORBIT 后,OUTCAR 会输出总电荷(s/p/d 分轨道)
total charge
# of ion s p d tot
------------------------------------------
1 1.514 0.000 0.000 1.514
4. LAECHG
参数描述:LAECHG参数控制VASP是否显式重构全电子电荷密度并写入文件
默认值:LAECHG = .FALSE.
可取值:LAECHG = .TRUE. | .FALSE.
当 LAECHG=.TRUE. 时,VASP 会重构三种不同的全电子密度:
1. 芯密度(core density)
2. 类原子价密度(proto-atomic valence density,重叠的原子电荷密度)
3. 自洽价密度(self-consistent valence density)
它们分别被写入文件:AECCAR0、AECCAR1、AECCAR2。
前两个文件在计算开始时写入,最后一个文件在计算达到自洽后于结束时写入
5. LELF
参数描述:LELF 用于控制是否生成 ELFCAR 文件
默认值:LELF = .FALSE.
可取值:LELF = .TRUE. | .FALSE.
LELF 用于控制是否生成 ELFCAR 文件。
该文件包含电子定域化函数(ELF,electron localization function)。
注意:如果设置 LELF=.TRUE.,必须在 INCAR 中同时显式设置 NPAR=1
6. LVTOT
参数描述:控制是否将总局域势(单位:eV)写入 LOCPOT 文件
默认值:LVTOT = .FALSE.
可取值:LVTOT = .TRUE. | .FALSE.
若设置 LVTOT=.TRUE.
总局域势Vtot会写入 LOCPOT 文件,同时写入 POT 文件,POT 文件会额外包含 augmentation(增强)部分
7. NWRITE
参数描述:NWRITE控制输出到 OUTCAR 文件的详细程度
默认值:NWRITE = 2
可取值:NWRITE = 0 | 1 | 2 | 3 | 4
| 输出内容 | NWRITE=0 | NWRITE=1 | NWRITE=2 | NWRITE=3 |
| 每步电子迭代的电子能量贡献 | 仅在第一个离子步输出 | 仅在第一个离子步输出 | 每个电子步都输出 | 每个电子步都输出 |
| 收敛信息 | 仅在第一个离子步输出 | 仅在第一个离子步输出 | 每个电子步都输出 | 每个电子步都输出 |
| 本征值 | 仅在第一个和最后一个离子步输出 | 每个离子步都输出 | 每个离子步都输出 | 每个电子步都输出 |
| 态密度(DOS)+ 电荷密度 | 仅在第一个和最后一个离子步输出 | 每个离子步都输出 | 每个离子步都输出 | 每个电子步都输出 |
| 总能量与电子能量贡献 | 每个离子步都输出 | 每个离子步都输出 | 每个离子步都输出 | 每个离子步都输出 |
| 应力 | 每个离子步都输出 | 每个离子步都输出 | 每个离子步都输出 | 每个离子步都输出 |
| 基矢 | 仅在第一个和最后一个离子步输出 | 每个离子步都输出 | 每个离子步都输出 | 每个离子步都输出 |
| 受力 | 仅在第一个和最后一个离子步输出 | 每个离子步都输出 | 每个离子步都输出 | 每个离子步都输出 |
| 晶格与空间群信息(ISYM>0) | 仅在第一个离子步输出 | 仅在第一个离子步输出 | 仅在第一个离子步输出 | 仅在第一个离子步输出 |
| 对称性操作(ISYM>0) | — | — | — | 仅在第一个离子步输出 |
| 耗时信息 | — | X | X | X |
提示:
1. 长时分子动力学(MD)计算,建议使用 NWRITE = 0 或 1
2. 短时间计算,使用 NWRITE = 2
3. 计算出错排查时,可使用 NWRITE = 3 获取更多信息
注意!NWRITE = 4 仅用于调试!
三、结构优化
1. IBRION
参数描述:IBRION决定计算是做结构优化、分子动力学、声子、过渡态,还是静态计算。
默认值:
IBRION=-1:当 NSW=−1 或 0 时。
IBRION=0:其他情况。
可取值:IBRION = -1 | 0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 11 | 12 | 40 | 44
IBRION=-1:不进行结构更新(避免在 NSW>0 时设置 IBRION=-1,否则会重复计算同一结构 NSW 次)
IBRION=0:分子动力学模拟
IBRION=1:结构优化(RMM‑DIIS 算法),收敛快,适合大体系
IBRION=2:结构优化(共轭梯度法),最稳健、最常用默认
IBRION=3:结构优化(阻尼分子动力学),适合结构烂、离基态很远的体系
IBRION=5:声子谱计算(有限差分法,不利用对称性)
IBRION=6:声子谱计算(有限差分法,利用对称性)
IBRION=7:声子谱计算(微扰理论,不利用对称性)
IBRION=8:声子谱计算(微扰理论,利用对称性)
IBRION=40:过渡态搜索,内禀反应坐标(IRC)计算
IBRION=44:过渡态搜索,改进二聚体方法
IBRION=11:用户交互式修改结构,从标准输入读取结构
IBRION=12:用户交互式修改结构,通过 Python 插件修改结构
只算能量,不动原子IBRION=-1 ;结构弛豫、找最稳定结构IBRION=2 或 1 ;跑分子动力学IBRION=0
2. ISIF
参数描述:ISIF 决定是否计算应力张量,以及结构优化中允许改变哪些自由度
默认值:
ISIF=0:当 IBRION=0(分子动力学)或 LHFCALC=.TRUE.(杂化泛函)时
ISIF=2:其他情况
可取值:ISIF = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
| ISIF | 计算受力 | 计算应力 | 原子位置 | 晶胞形状 | 晶胞体积 |
| 0 | 是 | 否 | 是 | 否 | 否 |
| 1 | 是 | trace only | 是 | 否 | 否 |
| 2 | 是 | 是 | 是 | 否 | 否 |
| 3 | 是 | 是 | 是 | 是 | 是 |
| 4 | 是 | 是 | 是 | 是 | 否 |
| 5 | 是 | 是 | 否 | 是 | 否 |
| 6 | 是 | 是 | 否 | 是 | 是 |
| 7 | 是 | 是 | 否 | 否 | 是 |
| 8 | 是 | 是 | 是 | 否 | 是 |
原子位置:原子坐标是否弛豫
晶胞形状:晶格向量夹角、边长比例是否改变
晶胞体积:总体积是否改变
涉及体积变化的计算,必须提高截断能,ENCUT = 1.3 × max(ENMAX),并设置 PREC = High
ISIF=8 仅从 VASP.6.4.1 版本开始支持
3. NSW
参数描述:NSW设置最大离子步数
默认值:NSW = 0
可取值:NSW = 整数
1. 当 IBRION = 0 时(分子动力学)
NSW 表示分子动力学的总步数。该参数必须设置,否则 VASP 启动后会立即退出。
对于含从头算的长时 MD 任务,建议拆分成多个任务,每个任务的 NSW 不超过约 20000 步。如果使用机器学习力场(ML_MODE=run),可以设置更大的 NSW,但建议同时设置 ML_OUTBLOCK 控制输出。
2. 当 IBRION ≠ 0 时(结构优化等)
在所有极小化算法中(准牛顿、共轭梯度、阻尼分子动力学),NSW 定义最大离子弛豫步数。
每个离子步内最多执行 NELM 步电子步迭代;如果提前满足 EDIFF 收敛判据,则电子步会提前结束。每个离子步都会根据 ISIF 的设置计算力和应力。
4. EDIFFG
参数描述:EDIFFG 用于定义离子弛豫循环的收敛判据
默认值:EDIFFG = EDIFF × 10
可取值:EDIFFG = 实数
当 EDIFFG 为正值时:相邻两步离子步之间的总能量变化小于 EDIFFG 时,弛豫停止。
当 EDIFFG 为负值时:所有原子的受力的模均小于 |EDIFFG| 时,弛豫停止。这是更常用、更推荐的设置方式。
若 EDIFFG = 0:离子弛豫在运行 NSW 步后强制停止。
警告:EDIFFG 不适用于分子动力学(MD)模拟。
提示:可以通过 NWRITE = 2、3 在每步电子步输出详细信息。
5. POTIM
参数描述:POTIM 在分子动力学中设置时间步长,在离子弛豫中设置迭代步长
默认值:
POTIM = 0.5:当 IBRION=1、2、3(离子弛豫)及 5(VASP.4.6 及以前)
POTIM = 0.015:当 IBRION=5、6(VASP.5.1 及以后)
如果 IBRION=0(分子动力学),无默认值,必须手动设置
可取值:POTIM = 实数
POTIM 在分子动力学中设置时间步长,在离子弛豫中设置迭代步长。
1. 当 IBRION=0(从头算分子动力学 MD)POTIM 为时间步长,单位是 fs(飞秒)。必须手动设置,否则 VASP 启动后会直接崩溃。
2. 当 IBRION=1、2、3(准牛顿、共轭梯度、阻尼 MD 弛豫)POTIM 作为步长缩放系数,控制每一步离子移动的幅度。其中准牛顿法对该参数特别敏感。
3. 当 IBRION=5、6(有限位移法计算声子)POTIM 是原子位移幅度,用于计算 Hessian 矩阵。
四、磁性、强关联体系计算
1. 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会报错
2. 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倍
3. LDAU
参数描述:LDAU用于指定是否进行DFT+U计算
默认值:LDAU = .FALSE.
可取值:LDAU = .TRUE. | .FALSE.
能带结构计算注意事项
CHGCAR 文件中仅保存角量子数 l≤LMAXMIX 范围内的单中心 PAW 占据矩阵信息。若计算中读取 CHGCAR 并固定电荷密度(ICHARG=11),计算结果必然与自洽计算不一致;这种偏差在 DFT+U 计算中通常会很大。
因此,使用 DFT+U 计算能带结构时,必须严格按以下规则在INCAR中设置 LMAXMIX:
d 区元素(l=2):LMAXMIX = 4
f 区元素(l=3):LMAXMIX = 6
4. LDAUTYPE
参数描述:LDAUTYPE 用于指定所使用的 DFT+U 具体形式
默认值:LDAUTYPE = 2
可取值:LDAUTYPE = 1 | 2 | 3 | 4
LDAUTYPE=1:Liechtenstein 等人提出的旋转不变性 DFT+U。
LDAUTYPE=2:Dudarev 等人提出的简化旋转不变性 DFT+U(即用 U-J 形式的 DFT+U,最常用)
LDAUTYPE=3:Cococcioni 等人提出的线性响应方法,用于自动计算U值
注意:对于 LDAUTYPE=3,参数 LDAUU 和 LDAUJ 分别表示作用在自旋向上、自旋向下子空间的球对称势强度
LDAUTYPE=4:与 LDAUTYPE=1 相同,但不包含交换劈裂
LDAUTYPE=1、2、3 可用于非自旋极化计算(ISPIN=1)
5. LDAUL
参数描述:LDAUL 用于指定需要施加局域相互作用(DFT+U)的角量子数 l
默认值:LDAUL = 原子类型数 × 2(即 NTYP×2)
可取值:LDAUL = 整数数组
| LDAUL 值 | 轨道类型 | 适用元素 |
| -1 | 无 | 不需要加 U 的元素(如 O、S 等) |
| 0 | s轨道 | 氢、碱金属等主族元素 |
| 1 | p轨道 | 氧、氮、卤素等主族元素 |
| 2 | d轨道 | 过渡金属(Fe、Mn、Ni 等) |
| 3 | f轨道 | 稀土 / 锕系元素(La、Ce、U 等) |
示例:
若体系包含 2 种原子:Fe(过渡金属,d 轨道)+ O(不加 U)
LDAUL = 2 -1 # 第一个数(2)给 Fe(d 轨道加 U),第二个数(-1)给 O(不加 U)
6. LDAUU&LDAUJ
参数描述:LDAUU和LDAUJ分别用于设置有效局域库仑相互作用强度和有效局域交换相互作用强度
默认值:原子类型数 × 0.0(即 NTYP×0.0)
可取值:实数数组(必须为体系中的每一种原子类型指定一个数值)
总能量依赖于 U(LDAUU)和 J(LDAUJ)参数,因此不同 U、J 参数下的总能量无直接可比性
对于 Dudarev 方法(LDAUTYPE=2),不同 U−J 值对应的总能量不能直接比较
当使用 LDAUTYPE=3(线性响应方法)时:
LDAUU 表示作用在自旋向上子空间的球对称势强度(单位:eV)
LDAUJ 表示作用在自旋向下子空间的球对称势强度(单位:eV)
新手必看示例(一看就会)
若体系包含 2 种原子:Fe(d 轨道加 U)+ O(不加 U),且给 Fe 设置 U=4.0 eV、J=0.0 eV,O 无相互作用,则:
LDAUU = 4.0 0.0 # 第一个值(4.0)给 Fe,第二个值(0.0)给 O
LDAUJ = 0.0 0.0 # 第一个值(0.0)给 Fe,第二个值(0.0)给 O
注:LDAUTYPE=2 时,实际生效的是 U−J=4.0,这也是最常用的设置方式
7. LMAXMIX
参数描述:LMAXMIX 控制单中心PAW 电荷密度参与电荷密度混合并写入 CHGCAR 文件的最高角量子数 l
默认值:LMAXMIX = 2
可取值:LMAXMIX = [整数]
使用 DFT+U 计算能带结构时,必须严格设置:
d 区元素:LMAXMIX = 4
f 区元素:LMAXMIX = 6
考虑非共线磁性的 SDFT 计算通常也需要将自旋密度混合阶数提高到:
d 元素:4
f 元素:6
以实现快速收敛。
分子动力学相关参数
ISIF
参数描述: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以确保收敛
