跳转至

VASP 使用

约 2864 个字 99 行代码 预计阅读时间 11 分钟

介绍

  • 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

VASP 计算问题小结 - chempeng

计算一致性:K 点密度、截断能、SMEAR 平面波数量也应一致(对于空位形成能计算)


DFT-D3:vdW 相互作用修正

Heyd–Scuseria–Ernzerhof 泛函 (HSE06):更精确,处理电子和光学性质

METAGGA

SCAN (Strongly constrained and appropriately normed)

METAGGA - VASP Wiki


参考资料

VASP 中计算电子基态的算法

Algorithms used in VASP to calculate the electronic groundstate - Vaspwiki

k 点积分

K-point integration - Vaspwiki

phonon dispersion 计算

Computing the phonon dispersion - Vaspwiki

原子计算

Calculation of atoms - Vaspwiki

分子动力学计算

Molecular dynamics calculations - Vaspwiki

Molecular dynamics - Tutorial - Vaspwiki

GW 计算

Practical guide to GW calculations - Vaspwiki

GW approximation

内含 VASP 计算相关的案例

GitHub - hello-arun/tutorials: Tutorials of codes such as VASP, Quantum Espresso and Lammps

DFT磁性的计算(本例为用VASP计算FCC Ni的磁矩)

VASP教学 - 计算材料学


使用

工具

  • VASPMO:用于显示 VASP 计算的波函(或分子轨道)。它能够读取 VASP 的输出文件 PROCAR 和 CONTCAR,并产生 Gaussian 输出格式的输出文件,用于其它显示工具,如 Molekel、Chemcraft、Gabedit、Molden 和 JMol 等)读取,进而绘制和观看体系的分子轨道

算例

# 用的是哪个泛函?
   TITEL  = PAW Ni
   TITEL  = PAW C
   TITEL  = PAW O

晶体高对称点 - 知乎


示例

# 能带结构、DOS 计算
ISTART = 1
ICHARG = 11

# 其余计算
ISTART = 0
ICHARG = 2

# 断点后续算;其他参数值不改变
ISTART = 1
ICHARG = 1

静态计算

  • INCAR 参数示例:
IBRION = -1
NSW    = 0
ISIF   = 2

孤立原子计算

  • 建立一个简单立方胞(SC),将原子置于中心;K 点密度为 1*1*1,Gamma-centered MP


收敛性测试



弛豫计算

  • INCAR 参数示例:
Global Parameters
ISTART =  0
ICHARG =  2
ISPIN  =  1
ENCUT  =  400
PREC   =  Accurate

Electronic Relaxation
ISMEAR = 0
SIGMA  = 0.05
NELMIN = 6
NELM   = 90
EDIFF  = 1E-06

Ionic Relaxation
NSW    = 100
IBRION = 2
ISIF   = 3
EDIFFG = -1E-02

确定晶格常数

  • 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

# 能带计算
ISMEAR = 0

Bader 电荷计算

# INCAR 参数设置
IBRION      = -1
NSW         = 0
LCHARG      = .TRUE.
LAECHG      = .TRUE.      # Bader 计算


# 后处理
chgsum.pl AECCAR0 AECCAR2     # 得到 CHGCAR_sum,包含了 VASP 中定义的原子总电荷密度
bader CHGCAR -ref CHGCAR_sum  # 得到 BCF.dat、ACF.dat、AVF.dat
cat ACF.dat                   # 查看 CHARGE 列

# BCF.dat
# TODO: 待确认
# 电荷极大值序号和坐标;体积内的bader电荷积分;距离极大值最近的原子和距离

# ACF.dat;包含了所有原子的价电子数信息
# TODO: 待确认
# 原子序号和坐标;价电荷数;到零通量面最小距离;原子体积)
# 示例
#         X           Y           Z       CHARGE      MIN DIST  ATOMIC VOL
--------------------------------------------------------------------------------
1    3.164973    3.164973   3.164973    8.129202     2.022066   50.790052
2    0.000000    0.000000   0.000000   13.223566     1.494570   30.667423
3    0.000000    0.000000   3.164973    7.549077     1.582486   57.390231
4    3.164973    0.000000   0.000000    7.549079     1.582486   57.390910
5    0.000000    3.164973   0.000000    7.549079     1.582486   57.390910
--------------------------------------------------------------------------------
VACUUM CHARGE:              0.0000
VACUUM VOLUME:              0.0000
 NUMBER OF ELECTRONS:        44.0000

ELF

  • 参考:VASP视频教程-电荷局域分析_哔哩哔哩_bilibili

  • 电子局域化函数 (electron localization function, ELF)

  • 在自洽计算中添加/修改以下参数;计算结束后,得到 ELFCAR 文件;使用 VESTA 进行可视化;可将 ELF 图与构型视图叠放在一起,对照效果更好

PREC        = Accurate
LELF        = .TRUE.

弹性常数计算

  • 可以用原胞计算弹性常数

  • VASP 计算弹性常数,其 ENCUT 数值要比弛豫计算的更高,通常 1.5 倍 ENMAX

GitHub - haidi-ustc/VASP-Elastic: Extracts full elastic tensor from VASP OUTCAR and calculates some useful quantities

计算得到的弹性常数值不是很准确

  • kBar=0.1GPa

  • Nb 计算得到的弹性常数 C44 < 0,为什么?

IBRION = 6
NFREE  = 4  # 4 或 2
ISIF   = 3

# NSW 的设置,非 0 即可,与其具体值关系不大

功函数计算

  • VASP:功函数

  • 步骤:结构弛豫;静态计算(修改以下 INCAR 参数)

NSW    = 0
LVHAR  = .TRUE.

AIMD 计算

# INCAR 参数设置
MDALGO      = 2
SMASS       = 0

TEBEG       = 300
TEEND       = 300


# 数据获取
# 压强
grep "external pressure" OUTCAR | awk '{print $4}'

基于分子动力学模拟,可以通过对速度自关联函数(velocity autocorrelation function,VACF)进行傅里叶变换得到材料的振动态密度(vibrational density of states, VDOS)。VACF 是根据动力学模拟出来的轨迹文件和速度文件,求算系统在某一时刻的速度与另一时刻速度的关联程度的函数,直接看 VACF 并不能很直观的得到一些信息,而 VDOS 直接对应实验红外光谱,可以直观的对高温或高压下的振动变化情况等进行分析。

AIMD结合vaspkit计算振动态密度


其他

  • VASP 拉伸模拟

  • SOC:自旋轨道耦合、旋轨耦合
    • VASP INCAR 参数 LSORBIT = T 开启 SOC 时,需使用 vasp_ncl,使用 vasp_std 会出现以下报错
ERROR: non collinear calculations require that VASP is compiled
 without the flag -DNGXhalf and -DNGZhalf
ERROR: non collinear calculations require that VASP is compiled
 without the flag -DNGXhalf and -DNGZhalf
# pymatgen 解析 SOC 的 Vasprun 文件出现以下 Warning(实际不影响)
pymatgen/io/vasp/outputs.py:161: UserWarning: Float overflow (*******) encountered in vasprun
warnings.warn("Float overflow (*******) encountered in vasprun")