VASP 入门:计算硅的态密度和能带

一、教程简介

* 视频教程:【VASP 入门教程】计算硅的态密度和能带

VASP 简介

VASP (Vienna Ab initio Simulation Package)  是一个计算机程序,用于从第一性原理进行原子尺度材料建模,例如电子结构计算和量子力学分子动力学。

VASP 能够计算多体薛定谔方程的近似解,无论是在密度泛函论 (DFT) 中求解 Kohn-Sham 方程,还是在 Hartree-Fock (HF) 近似中求解 Roothaan 方程。还实现了将 Hartree-Fock 方法与密度泛函理论混合的混合泛函。此外,VASP 中提供了格林函数方法(GW 准粒子和 ACFDT-RPA)和多体微扰理论(二阶 Møller-Plesset)。

在 VASP 中,中心物理量(如单电子轨道)、电子电荷密度和局部电位以平面波基集表示。电子和离子之间的相互作用使用范数守恒或超软赝势或投影仪增强波方法进行描述。

为了确定电子基态,VASP 利用了高效的迭代矩阵对角化技术,例如直接反转迭代子空间的残差最小化方法 (RMM-DIIS) 或分块戴维森算法。这些与高效的 Broyden 和 Pulay 密度混合方案相结合,以加快自洽循环。

教程内容

  1. 结构优化
  2. 自洽计算(态密度)
  3. 能带计算

通过本教程学习,您将了解 vasp 的 INCAR(vasp 功能控制文件)、 POSCAR(结构文件)、 POTCAR(赝势文件)和 KPOINTS(倒格矢格点)这 4 个基本输入文件的作用,并学会自行编写输入文件。

二、输入文件

首先介绍一下本教程所需的输入文件。

1. 结构优化

INCAR

ISTART =  1            (读取初始波函数 WAVECAR 文件)
ISPIN  =  1            (本次计算为不考虑自旋的 DFT 计算)
# ICHARG =  11         (非自洽计算:用于计算能带本征值)
LREAL  = .FALSE.       (不在实空间投影计算)
LWAVE  = .TRUE.        (计算完毕输出并保存 WAVECAR)
LCHARG = .TRUE.        (计算完毕输出并保存 CHGCAR)
ADDGRID= .TRUE.        (增加格点密度加速收敛)
 

NSW    =  300          (最多运行 300 步离子步)
ISMEAR =  -5           (采用 Blöchl 修正的 tetrahedron 方法) 
IBRION =  2            (采用 2-CG 算法进行收敛)
ISIF   =  3            (优化期间原胞形状、体积和内部原子位置都将发生变化)
EDIFFG = -1.5E-02      (离子步收敛条件 eV/A)

POSCAR

Si #(体系名称)
1.0 #(放大系数  下面 3 行对应 3 个晶格矢量 )
0.0 2.75 2.75
2.75 0.0 2.75
2.75 2.75 0.0
Si #(元素)
2 #(对应元素原子数)
Direct #(采用分数坐标,下列为 2 个原子的分数坐标)
0 0 0
0.25 0.25 0.25

KPOINTS

K-Spacing Value to Generate K-Mesh: 0.020 #采用 GAMMA 方法取样 
0
Gamma
  16  16  16
0.0  0.0  0.0

#取 16x16x16 个格点

POTCAR

系统对应元素的赝势组合,这里为 Si 的赝势

2. 自洽计算(态密度计算)

INCAR

ISTART =  1            (读取初始波函数 WAVECAR 文件)
ISPIN  =  1            (本次计算为不考虑自旋的 DFT 计算)
# ICHARG =  11         (非自洽计算:用于计算能带本征值)
LREAL  = .FALSE.       (不在实空间投影计算)
LWAVE  = .TRUE.        (计算完毕输出并保存 WAVECAR)
LCHARG = .TRUE.        (计算完毕输出并保存 CHGCAR)
ADDGRID= .TRUE.        (增加格点密度加速收敛)
 

ISMEAR =  -5           (采用 Blöchl 修正的 tetrahedron 方法)
NELM   =  60           (SCF 自洽步数最多为 60 步)
EDIFF  =  1E-08        (SCF 能量收敛条件)

POSCAR

采用上一步「1. 结构优化」中的输出的 CONTCAR,并将其改名为 POSCAR

KPOINTS

同「1. 结构优化」

POTCAR

同「1. 结构优化」

3. 能带计算

INCAR

ISTART =  1            (读取初始波函数 WAVECAR 文件)
ISPIN  =  1            (本次计算为不考虑自旋的 DFT 计算)
ICHARG =  11         (非自洽计算:用于计算能带本征值)
LREAL  = .FALSE.       (不在实空间投影计算)
LWAVE  = .TRUE.        (计算完毕输出并保存 WAVECAR)
LCHARG = .TRUE.        (计算完毕输出并保存 CHGCAR)
 

ISMEAR =  0            (能带计算需要使用高斯方法)
SIGMA  =  0.05         (高斯展宽)
NELM   =  60           (SCF 自洽步数最多为 60 步)
EDIFF  =  1E-08        (SCF 能量收敛条件)

POSCAR

同「2. 自洽计算(态密度计算)」

KPOINTS

K-Path Generated by VASPKIT.
   20   #k 点之间的间隔
Line-Mode
Reciprocal
   0.0000000000   0.0000000000   0.0000000000     GAMMA          
   0.5000000000   0.0000000000   0.5000000000     X              
 
   0.5000000000   0.0000000000   0.5000000000     X              
   0.6250000000   0.2500000000   0.6250000000     U              
 
   0.3750000000   0.3750000000   0.7500000000     K              
   0.0000000000   0.0000000000   0.0000000000     GAMMA          
 
   0.0000000000   0.0000000000   0.0000000000     GAMMA          
   0.5000000000   0.5000000000   0.5000000000     L              
 
   0.5000000000   0.5000000000   0.5000000000     L              
   0.5000000000   0.2500000000   0.7500000000     W              
 
   0.5000000000   0.2500000000   0.7500000000     W              
   0.5000000000   0.0000000000   0.5000000000     X    

POTCAR

同「1. 结构优化」

三、实操运行步骤

下面我们开始进行实操。该教程已将所需开源包 (tutorials.zip) 准备好,直接克隆容器即可。其他赝势文件由于版权原因需根据教程自行下载上传。

1. 克隆并启动容器

等待容器加载完毕后点击打开工作空间

2. 上传输入文件

2.1 打开终端

2.2 解压包

unzip tutorials.zip

2.3 进入目录

cd tutorials

2.4 上传准备好的硅赝势

这里可以使用「官网示例:https://www.vasp.at/wiki/images/d/d1/5_4_Si_bandstructure.tgz 」里的赝势 POTCAR

将赝势放到 1_str 中。

3. 运行 vasp

设置 openmp 参数

export OMP_NUM_THREADS=1

3.1 结构优化

进入 1_str

cd 1_str
mpirun -n 2 --allow-run-as-root vasp_std 

运行完毕将 POTCAR 、 WAVECAR 、 CHGCAR 和 CHG 复制到 2_scf 中

并把 CONTCAR 也复制到 2_scf 中并更改为 POSCAR

cp POTCAR WAVECAR CHG* ../2_scf
cp CONTCAR ../2_scf/POSCAR

进入 ../2_scf 目录

cd ../2_scf

3.2 自洽计算(态密度计算)

输入以下代码运行:

mpirun -n 2 --allow-run-as-root vasp_std 

这时 vasp 会读取第 3.1 步复制过来的 WAVECAR 和 CHGCAR 。

运行完毕将 POSCAR 、 POTCAR 、 WAVECAR 、 CHGCAR 和 CHG 复制到 3_band 中

cp POSCAR POTCAR WAVECAR CHG*  ../3_band

进入 ../3_band 目录

cd ../3_band

3.3 能带计算

输入以下代码运行:

mpirun -n 2 --allow-run-as-root vasp_std 

这时 vasp 会读取第 3.2 步复制过来的 WAVECAR 、 CHGCAR 和 CHG,进行本征值计算。

回到输入文件主目录

cd ..

4. 安装 vaspkit

4.1 安装 python 依赖

pip install numpy scipy matplotlib

4.2 配置 vaspkit

chmod 777 setupvk.sh
./setupvk.sh
source ~/.bashrc 
cd tutorials

5. 使用 vaspkit 处理数据

5.1 绘制态密度

进入 2_scf

cd 2_scf

使用 vaspkit 处理数据并绘图

vaspkit
111
1

态密度图就会生成在 2_scf 里

TDOS

返回目录

cd ..

5.2 绘制能带图

进入 3_band

cd 3_band

使用 vaspkit 处理数据并绘图

vaspkit
211
1

可以看到能带图就会生成在 3_band 里

BAND