一、VASP介绍
维也纳全始计算模拟包(Vienna Ab initio Simulation Package),简称VASP,是用于执行从头计算量子力学的分子动力学(MD)使用Vanderbilt泛函,或投增强波的方法和一个平面波基组的程序包。[1]理论基础是密度泛函理论(DFT),但该程序还允许使用后-DFT更正,如混合函数混合密度泛函理论和哈特里–福克交换,多体扰动理论(GW近似)和随机相位近似方法内的动态电子相关。网站资源详见VASP README文件
完整手册链接:
链接:https://pan.baidu.com/s/1q3V2g6sesm3dU2xOAvRBHA
提取码:nmzh
计算流程:
(1)编写输入文件INCAR、POSCAR、POTCAR、KPOINTS
(2)编写提交脚本
(3)执行指令 [所用集群规定的提交脚本指令] + [提交脚本文件名]
(4)获取输出文件
二、前置知识
1.DFT离散傅里叶变换
离散傅里叶变换( DFT ) 将函数的有限等距样本序列转换为离散时间傅里叶变换 (DTFT) 的等距样本的相同长度序列,离散时间傅里叶变换(DTFT) 是频率的复值函数。
待补充
三、输入文件
①INCAR:控制参数,包括精度,计算采用的函数等;VASP 将其对INCAR文件中数据的解释写入OUTCAR文件。
INCAR文件中部分参数说明(需要用到的):
EDIFF:如果两个步骤之间的总(自由)能量变化和能带结构能量变化(“特征值变化”)都小于EDIFF(单位为 eV),则电子自由度的松弛将停止。当EDIFF =0 时,将严格执行NELM电子自洽步骤。在大多数情况下,收敛速度是二次的,因此额外迭代的成本通常很小。因此,对于收敛良好的计算,我们强烈建议将EDIFF降低到 1E-6。对于有限差分计算(例如声子),甚至可能需要EDIFF = 1E-7 才能获得精确的结果。另一方面,对于具有许多原子的大型系统和/或使用元 GGA 函数时,实现 1E-8 甚至 1E-7 的能量收敛可能很困难。因此,总体而言,EDIFF = 1E-6 可能是最佳折衷方案。
EDIFFG:EDIFFG定义离子松弛环的中断条件。当EDIFFG为正时,若两个离子步骤之间总能量的变化小于EDIFFG,则弛豫停止;当EDIFFG为负时,当所有力的范数小于 | EDIFFG | 时,松弛停止,这通常是一个更方便的设置;如果EDIFFG = 0,则离子弛豫在NSW步骤后停止。
警告: EDIFFG不适用于分子动力学模拟。 |
ENCUT:指定平面波基组的能量截止值(单位为 eV),截断能大小决定平面波展开的数量,因此选得越大计算越慢。
截断能:降低计算开销,截断能大小决定平面波展开的数量,因此选得越大计算越慢==>精度与速度平衡
赝势:如果波函数的能量非常高的话,我们就需要用比较大的截断能,这样就显著增大的计算量。事实上,我们知道,原子内核的电子(core electrons)是符合这个条件的,它们的能量都大于外层成键电子。但是计算内层电子的波函数是一个吃力不讨论好的事情,因为它们对于化学成键以及材料的物理性质的影响并不是很大。所以我们不如不去算它们,把它们连带原子核一起看成离子整体,在实际计算中,我们直接用一个势场来描述这个离子造成的势场,然后研究外层电子在这个离子势场中的运动特点。那么用来描述这个离子势场的函数我们就叫做赝势。
ENCUT的值为POTCAR文件中最大的ENMAX,-MIN<~<MIN值。进行计算前应测试材料的合适的ENCUT值,流程如下:
(1)根据上述设定一定数值区间(步长可设为50)
(2)分别提交脚本进行计算
(3)查看log.out文件最后一行收敛能量,当前后ENCUT值的该值大小插值<1(单位:)时,视为收敛。
IBRION:决定原子如何移动和弛豫,即弛豫计算的方式,求解策略
-1 | 0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 40 | 44
默认值 | 适用情况 |
-1 | NSW=-1/0 |
0 | 其他 |
取值 | 适用情况 | 说明 |
-1 | NSW =−1 或 0 | 离子没有移动,但执行了NSW外循环。在每个外循环中,电子自由度都会重新优化(对于NSW >0,这显然没有多大意义,除非用于测试目的)。如果不需要离子更新,则改用NSW =0。 |
0 | 标准从头算分子动力学 | 执行分子动力学;所有其他算法旨在松弛到局部能量最小值 积分牛顿运动方程 |
1 | RMM-DIIS准牛顿方法 | 接近局部最小值,计算速度较快,适合于初始结构和平衡结构较为接近的情况 |
2 | CG共轭梯度法 | 将离子松弛到其瞬时基态,速度慢一些,找到群居最小的可能性也要大一下 |
3 | 离子弛豫-阻尼分子动力学 | POTIM参数必须提供合理的时间步长。时间步长过大会导致发散,时间步长过小会减慢收敛速度。稳定的时间步长通常是共轭梯度算法中最小线最小化步长的两倍 |
5/6 | 有限差分 | 使用有限差分确定二阶导数(Hessian 矩阵和声子频率) EDIFF设置为小于或等于 1E-6 的值 |
7/8 | 密度泛函微扰理论 | 使用密度泛函微扰理论来计算导数 EDIFF设置为 1E-6 |
ISIF:确定是否计算应力张量以及哪些离子自由度(离子位置、晶胞体积及形状)可以改变
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
默认值 | 适用情况 |
0 | IBRION = 0 (分子动力学)或LHFCALC = .TRUE. = 2别的 |
2 | 其他 |
ISIF取值 | 计算 | 自由度 | 适用情况 | |||
力 | 应力张量 | 离子位置 | 晶胞形状 | 晶胞体积 | ||
0 | 1 | 0 | 1 | 0 | 0 | |
1 | 1 | 仅跟踪 | 1 | 0 | 0 | |
2 | 1 | 1 | 1 | 0 | 0 | 二维结构、已明确计算材料的晶格常数和加压或加应变的情况下 |
3 | 1 | 1 | 1 | 1 | 1 | 对于体材料,需要弛豫所有方向晶格和原子的话 |
4 | 1 | 1 | 1 | 1 | 0 | 对于某些需要保留原子间的特殊排列或者有部分原子存在固定(在需要固定的原子坐标最后添加T或F来设置)的情况,用4/6 |
5 | 1 | 1 | 0 | 1 | 0 | |
6 | 1 | 1 | 0 | 1 | 1 | |
7 | 1 | 1 | 0 | 0 | 1 | |
8 | 1 | 1 | 1 | 0 | 1 |
单点能计算: 对一个给定的固定不变的结构(包括原子、分子、表面或体材料)能够计算其总能,即静态计算功能。
单点能计算:对一个给定的固定不变的结构(包括原子、分子、表面或体材料)能够计算其总能,即静态计算功能。
NSW:设置离子弛豫的最大步数
原子弛豫最大步数,当计算在最大步数之内收敛时计算自动中断,否则在达到最大步数时强制终止
同时在每一步原子弛豫内电子进行自洽计算
每一步内精确计算原子所受的H-F力和应力
默认值:0
IBRION取值 | 应用 | 说明 |
0 | 分子动力学 | NSW给出了所有分子动力学运行中的步数 |
!0 | 其他所有最小化算法(准牛顿、共轭梯度和阻尼分子动力学) | 定义了离子弛豫的最大步数 |
在每个离子弛豫步骤中,最多执行NELM电子步骤。如果之前满足了EDIFF设置的收敛标准,则执行的次数会更少。根据每个离子弛豫步骤的 ISIF设置(求解策略)计算力和应力。
POTIM:设置分子动力学中的时间步长 或 离子弛豫中的步长。
IBRION取值 | POTIM设置 | 说明 |
0 | 必须设置 | 分子动力学 POTIM在所有从头算分子动力学运行中给出时间步长(以 fs 为单位),因此必须提供它,否则 VASP 会在启动后立即崩溃。 |
1/2/3(离子弛豫) | 0.5 | 分别对应于使用拟牛顿算法、共轭梯度算法和阻尼分子动力学的离子弛豫,POTIM标签用作步长缩放常数。拟牛顿算法对此参数的选择特别敏感。 |
=5, 6 | 0.015 | 使用有限差分方法进行声子计算,其中POTIM是用于计算 Hessian 矩阵的每个离子位移的宽度。 |
②POSCAR:包含晶格几何形状和离子位置
部分 | 行数 | 内容 |
---|---|---|
评论 | 1 | 第一行保留用于自由用户注释,例如系统描述。每行的最大长度为 40 个字符,超出的字符将被截断。 |
缩放因子 | 1 | 此行可能包含一个或三个数字。如果提供一个数字,则指定通用晶格缩放因子s。它与下一节中的三个向量相乘,以获得晶胞的晶格向量。 此外,如果选择“笛卡尔”模式,离子位置将使用此因子缩放(参见“离子位置”部分)。如果数字为负数,则将其解释为所需的细胞体积。然后,缩放因子s自动计算以获得所需体积。 如果此行提供了三个数字,则它们将作为晶格矢量(和“笛卡尔”模式离子位置)的 x、y 和 z 笛卡尔分量的单独缩放因子。在这种情况下,所有三个数字都必须为正数。 |
格子 | 3 | 此部分包含三行定义晶格向量。每行包含一个晶格向量的未缩放笛卡尔分量。实际的晶格向量是给定数字与晶格缩放因子 的乘积s 。如果要直接输入晶格向量并避免任何额外缩放,请将通用缩放因子设置为 1。 |
元素名称 | 1 | 此行列出了当前离子的种类。给定的顺序应与POTCAR文件中出现的种类顺序相匹配。此行是可选的,如果省略,则种类名称取自POTCAR文件。 |
原子个数 | 1 | 此必填行列出了每种物质的离子数量。给定的顺序应与POTCAR文件中物质出现的顺序相匹配。 |
离子坐标位置 | 这里,离子位置列出。第一行选择坐标系的两种可能模式之一,给出的解释如下: 1.Direct分数坐标: 2.Cartesian笛卡尔坐标:但是,实际离子位置也会乘以通用缩放因子 |
③POTCAR:它包含每个原子种类的赝势。赝势选择-设定一个假的势,提高计算效率
赝势:
如果波函数的能量非常高的话,我们就需要用比较大的截断能,这样就显著增大的计算量。事实上,我们知道,原子内核的电子(core electrons)是符合这个条件的,它们的能量都大于外层成键电子。但是计算内层电子的波函数是一个吃力不讨论好的事情,因为它们对于化学成键以及材料的物理性质的影响并不是很大。
所以我们不如不去算它们,把它们连带原子核一起看成离子整体,在实际计算中,我们直接用一个势场来描述这个离子造成的势场,然后研究外层电子在这个离子势场中的运动特点。那么用来描述这个离子势场的函数我们就叫做赝势。
生成方式:
①vapskit=>104(当赝势文件夹路径内存在该元素/物质的势函数)
②获取含多个元素的结构的赝势:
cat ~/pot/Al/POTCAR ~/pot/C/POTCAR ~/pot/H/POTCAR > POTCAR
该顺序必须与POSCAR文件中定义的顺序相同,每个元素的赝势均需以行 End of Dataset 结尾
赝势类型:
④KPOINTS:指定用于对布里渊区进行采样的布洛赫矢量(k点),一般来说,k点的密度越高,计算结果越准确,因为更多的k点可以更好地表示布里渊区的特征。收敛此采样是许多与电子最小化有关的计算中的基本任务之一。规则网格是选择k点的最常见选择:
规则K点网络:此模式将自动生成一个网格,其中每个晶格向量被细分为明确定义的细分数。它提供了足够的灵活性和稳定性,应该是大多数生产计算的首选。选择细分数在KPOINTS文件中像这样
文件格式:
- 第一行是注释行。
- 第二行中,将k点数设置为0,表示自动网格生成。
- 第三行的第一个非空字符决定了网格的中心。可能的选择是 Γ 中心(G,g)或 Monkhorst-Pack 方案(M,m)。
- 指定所需的细分数在第四行,每个基矢方向的k点数,取点越多,计算量越大
- 可选择添加第五行来移动网格(s1,s2,s3)对于默认值。
网格中心类型选择:
Gamma:
Monkhorst-Pack:
两个网格的点间距相同。唯一的区别是偏移在 Monkhorst-Pack 网格的分子中。对于奇数个细分,该项为整数,因此两个网格由于周期性边界而一致。当细分数为偶数时,Γ 中心网格会偏移与 Monkhorst-Pack 相比。
生成方式:
vaspkit=>102=>1=>0.02
K点数取法:
k点数*晶格矢量长度=35,从这个数开始取
待补充