VASP 使用
VASP 使用
介绍
- VASP 全称:Vienna Ab-initio Simulation Package
多粒子体系的复杂性主要体现在交换关联能 $E_{xc}$ 项上,对交换关联能 $E_{xc}$ 的精确描述是求解 KS 方程的关键所在。
引入关于电子密度函数的近似泛函,如 LDA、GGA、杂化泛函等
LDA 忽略了非均匀效应,认为在具有同等电子密度的前提下,空间任意点的 $E_{xc}$ 相同与均匀电子云的相同
GGA 对 LDA 中忽略的电子密度的非均匀效应进行了修正,即加入电子密度梯度的作用
Perdew-Burke-Ernzerhof (PBE) 形式的 generalized gradient approximation (GGA) 泛函(表达电子间的交换关联作用)
全电子势描述电子 - 原子核相互作用,如 EMTO(The Exact Muffin-Tin Orbitals)
投影缀加平面波赝势(PAW)方法(描述离子 - 电子相互作用)
PAW (Projected Augmented Wave) 投影缀加波,是基于密度泛函理论(DFT)开发的描述电子、原子核行为的全电子方法
APW 是增广平面波方法(Augmented Plane Wave),也是一种全电子方法,将电子分为软、硬两部分,前者用 PW 描述,后者用 LCAO 描述(Linear Combination of Atomic Orbitals,原子轨道的线性组合)
PBE 是泛函,描述电子的交换 - 相关能的拟合函数,以 Perdew-Burke-Ernzerhof 三位开发者的名字缩写命名
PW 是指平面波基组,用于展开波函数或者说原子、分子轨道
PAW 是独立于 PBE 的理论方法,但是我们常常会见到 POTCAR 中称为 PAW-PBE 赝势,把三个概念放在一起了,意思实际上是针对不同的的泛函利用 PAW 方法相应调参优化得到的一致性赝势文件
PAW (Projected Augmented Wave) 全电子理论计算方法
含各种类型计算的通用 INCAR 文件: GitHub - WMD-group/INCAR: A generic INCAR file for the density functional theory package VASP
计算一致性:K 点密度、截断能、SMEAR
平面波数量也应一致(对于空位形成能计算)
DFT-D3:vdW 相互作用修正
Heyd–Scuseria–Ernzerhof 泛函 (HSE06):更精确,处理电子和光学性质
METAGGA
SCAN (Strongly constrained and appropriately normed)
参考资料
VASP INCAR 参数:Category:INCAR tag - Vaspwiki
VASP POSCAR:POSCAR - Vaspwiki
VASP KPOINTS:KPOINTS - Vaspwiki
VASP 赝势推荐:Available PAW potentials - Vaspwiki
VASP 输出文件:Category:Output files - Vaspwiki
VASP Manual:The VASP Manual - Vaspwiki
VASP Categories:Categories - Vaspwiki
VASP Tutorial:Category:Tutorials - Vaspwiki、Tutorials
VASP Examples:Category:Examples - Vaspwiki
VASP 计算流程:VASP的计算流程 - Jun’s Blog
输入文件参数介绍:GitHub - bzkarimi/VASP: Practical guide on how to use VASP
VASP 中计算电子基态的算法
Algorithms used in VASP to calculate the electronic groundstate - Vaspwiki
k 点积分
phonon dispersion 计算
原子计算
分子动力学计算
GW 计算
内含 VASP 计算相关的案例
GitHub - hello-arun/tutorials: Tutorials of codes such as VASP, Quantum Espresso and Lammps
使用
工具
- VASPMO:用于显示 VASP 计算的波函(或分子轨道)。它能够读取 VASP 的输出文件 PROCAR 和 CONTCAR,并产生 Gaussian 输出格式的输出文件,用于其它显示工具,如 Molekel、Chemcraft、Gabedit、Molden 和 JMol 等)读取,进而绘制和观看体系的分子轨道
算例
内含表面能、层间距变化计算公式:Ni 100 surface relaxation - VASP Wiki
石墨堆叠方向层间距确定:
- GGA level 的半局域(semilocal)DFT 低估了长程色散相互作用,导致石墨晶格在堆叠方向上的错误高估:8.84Å(PBE)对 6.71Å(exp)。
- 使用 Tchatchenko and Scheffler 方法(添加 IVDW 和 LVDW_EWALD 参数)考虑范德华力相互作用(van der Waals interactions)进行纠正
Ni(111) 表面高精度单点能计算(截断能提高;用以计算吸附能、功函数(添加 LVHAR 参数)):Ni 111 surface high precision - VASP Wiki
功函数相关
振动频率计算的意义?NFREE 参数,振动 mode?
1 | # 用的是哪个泛函? |
- K 点网格某方向数值为奇数,$\Gamma$ 中心?
AIMD 相关
- Si 熔化 AIMD 计算:Liquid Si - Standard MD - VASP Wiki
- Si 结晶 AIMD 计算(扩散系数及 PCF):Liquid Si - Freezing - VASP Wiki
- 只有 1 个 K 点,可以用 vasp_gam 来运行,加快运行速度
- 利用分子动力学轨迹计算粒子运动的均方位移和扩散系数 - 知乎
注意事项:
- VASP 官网计算示例
- VASP 官网算例中的部分 POSCAR 文件格式非 VASP5 版本
- VASP Wiki 中的示例 POSCAR 格式和 POTCAR 文件(PAW 格式)较老?
- FCC Ni 及 Ni(100) 表面的 DOS 计算,没有先进行自洽计算
- Ni(100) 表面的能带结构计算,K-path 是 reziprok 方式,非 Line-Mode,vaspkit 和 pymatgen 无法获取数据,只能使用 p4vasp?
- NiO:反铁磁
- DOS 计算过程中 ISMEAR=0 和 -5 的差别是什么:Part 2: More silicon
示例
1 | # 能带结构、DOS 计算 |
静态计算
- INCAR 参数示例:
1 | IBRION = -1 |
孤立原子计算
- 建立一个简单立方胞(SC),将原子置于中心;K 点密度为 1*1*1,Gamma-centered MP
1 |
收敛性测试
自洽计算的K点选取 和 KPOINTS 文件生成方法 - 第一性原理 (First Principle) - 计算化学公社
对 K 点和 ENCUT 进行收敛性测试,同一构型采用超胞和单胞得到的结果类似,单胞的 ENCUT 值可直接用于超胞计算,单胞的 K 点密度等比例缩小用于超胞计算
个人收敛性测试步骤(先 K 点后 KPOINTS):
- 先粗结构优化(ENCUT 为 1.3ENMAX,K 点密度稍密)
- 之后进行 K 点测试(ENCUT 为 1.3ENMAX)
- 之后进行 ENCUT 测试(K 点密度选择达到收敛性标准的)
- 采用达到收敛性标准的 K 点密度 + ENCUT 进行细结构优化
- 个人经验:计算体系含 C 时,可不进行 ENCUT 测试,直接使其为 520(C 赝势中的 ENMAX=400)
1 |
弛豫计算
- INCAR 参数示例:
1 | Global Parameters |
确定晶格常数
- EOS 拟合方法(扫描法)
在晶格常数的实验值附近取 10 个点,分别进行单点计算;用能量最小值作为判据
- 直接(弛豫)优化方法
用力弛豫时,若存在内变量的体系,如固溶体,溶质原子几乎不会待在在平衡位置(有可能),近邻的溶剂原子偏离其理想位置,因此需要对它们的位置进行弛豫,用扫描的方法,不做弛豫,得不到准确的位置,因此需要用到弛豫的方法;对于计算胞对称性不太好,用扫描法,一般适合只有一个变量变化,变量多,需要用弛豫的方法(hcp 结构)
表面能
- 表面能计算收敛性测试:slab 层数、真空层层数
点缺陷形成能
- 空位、间隙原子形成能
超胞尽可能是立方体
要做原子数 n(不能太大)和空位形成能的收敛性测试
态密度、能带计算
参考:
计算流程:
- 弛豫计算(或结构优化;初始构型很好,可忽略此步)
- 静态自洽计算(可不用拷贝自洽计算生成的 WAVECAR)
- 态密度计算:拷贝自洽计算生成的 CHGCAR,非自洽计算(ICHARG=11,增加 K 点密度;
K*a=45
可满足要求) - 能带计算:拷贝自洽计算生成的 CHGCAR,非自洽计算(ICHARG=11,K-path)
自洽与非自洽计算的区别:电子密度是否匹配;不是静态与弛豫计算的区别!
开启自旋极化,DOS 会有上下两条线(自旋向上、向下;上下对称、不对称的含义是什么)
建议 NEDOS 数值稍微取密一些(NEDOS=2000/3000 足够好)
DOS、能带计算耗时相对较少
DOS 计算相比弛豫对截断能没有那么敏感,截断能值可以设小一些(?)
态密度相关输出文件:DOSCAR、PROCAR
1 | # 能带计算 |
Bader 电荷计算
参考:
Bader 电荷:
- DFT 计算中常见的一种电荷分析方法,通过其对电荷的定义计算出每个原子在体系中得失电子的情况,即净电荷
- 又称为 atom-in-molecule (AIM) charge,是一种将空间中的电子密度的零通量分界面作为划分电荷所属相应原子的方法
- 通过处理 VASP 得到的 CHGCAR 或 Gaussian 格式的 cube 文件计算体系的 Bader 电荷
- 电荷的定义或者说划分方法会明显影响计算数值,所以不同的分析方法得到的绝对数值没有太大的意义,而是应该在不同体系之间横向比较
- 电荷布居分析:统计每个原子带多少电荷的办法;Bader 电荷布居(Bader charge analysis);还有 Mulliken 布居,Lodwin 布居,Hirshfield 布居等
差分电荷密度:charge density difference;原子相互作用后(成键前后)的电荷密度与初始原子电荷密度之差;可分析在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质
计算:与静态计算类似;添加
LAECHG
参数(计算内层电荷密度和价电子层电荷密度,将两个文件叠加求得总电荷,再求解 Bader 电荷)
1 | # INCAR 参数设置 |
ELF
电子局域化函数 (electron localization function, ELF)
在自洽计算中添加/修改以下参数;计算结束后,得到 ELFCAR 文件;使用 VESTA 进行可视化;可将 ELF 图与构型视图叠放在一起,对照效果更好
1 | PREC = Accurate |
弹性常数计算
可以用原胞计算弹性常数
VASP 计算弹性常数,其 ENCUT 数值要比弛豫计算的更高,通常 1.5 倍 ENMAX
计算得到的弹性常数值不是很准确
kBar=0.1GPa
Nb 计算得到的弹性常数 C44 < 0,为什么?
1 | IBRION = 6 |
功函数计算
步骤:结构弛豫;静态计算(修改以下 INCAR 参数)
1 | NSW = 0 |
AIMD 计算
参考:
参数设置
1 | # INCAR 参数设置 |
基于分子动力学模拟,可以通过对速度自关联函数(velocity autocorrelation function,VACF)进行傅里叶变换得到材料的振动态密度(vibrational density of states, VDOS)。VACF 是根据动力学模拟出来的轨迹文件和速度文件,求算系统在某一时刻的速度与另一时刻速度的关联程度的函数,直接看 VACF 并不能很直观的得到一些信息,而 VDOS 直接对应实验红外光谱,可以直观的对高温或高压下的振动变化情况等进行分析。
其他
- VASP 拉伸模拟
- SOC:自旋轨道耦合、旋轨耦合
- VASP INCAR 参数
LSORBIT = T
开启 SOC 时,需使用vasp_ncl
,使用vasp_std
会出现以下报错
- VASP INCAR 参数
1 | ERROR: non collinear calculations require that VASP is compiled |
1 | # pymatgen 解析 SOC 的 Vasprun 文件出现以下 Warning(实际不影响) |
红外光谱(Infrared Spectroscopy,IR):VASP快速计算红外光谱(IR) 后处理软件vasprun推荐
静电势能计算: 在 INCAR 中添加 LVHAR=.TRUE. 参数
表面吸附位点:
- Top 顶位(T)
- Bridge 桥位(B)
- Hollow 洞位(H)