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 密度混合方案相结合,以加快自洽循环。
通过本教程学习,您将了解 vasp 的 INCAR(vasp 功能控制文件)、 POSCAR(结构文件)、 POTCAR(赝势文件)和 KPOINTS(倒格矢格点)这 4 个基本输入文件的作用,并学会自行编写输入文件。
首先介绍一下本教程所需的输入文件。
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)
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
K-Spacing Value to Generate K-Mesh: 0.020 #采用 GAMMA 方法取样
0
Gamma
16 16 16
0.0 0.0 0.0
#取 16x16x16 个格点
系统对应元素的赝势组合,这里为 Si 的赝势
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 能量收敛条件)
采用上一步「1. 结构优化」中的输出的 CONTCAR,并将其改名为 POSCAR
同「1. 结构优化」
同「1. 结构优化」
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 能量收敛条件)
同「2. 自洽计算(态密度计算)」
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
同「1. 结构优化」
下面我们开始进行实操。该教程已将所需开源包 (tutorials.zip) 准备好,直接克隆容器即可。其他赝势文件由于版权原因需根据教程自行下载上传。
等待容器加载完毕后点击打开工作空间
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 中。
设置 openmp 参数
export OMP_NUM_THREADS=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
输入以下代码运行:
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
输入以下代码运行:
mpirun -n 2 --allow-run-as-root vasp_std
这时 vasp 会读取第 3.2 步复制过来的 WAVECAR 、 CHGCAR 和 CHG,进行本征值计算。
回到输入文件主目录
cd ..
pip install numpy scipy matplotlib
chmod 777 setupvk.sh
./setupvk.sh
source ~/.bashrc
cd tutorials
进入 2_scf
cd 2_scf
使用 vaspkit 处理数据并绘图
vaspkit
111
1
态密度图就会生成在 2_scf 里
返回目录
cd ..
进入 3_band
cd 3_band
使用 vaspkit 处理数据并绘图
vaspkit
211
1
可以看到能带图就会生成在 3_band 里