VASP计算单层黑磷能带(PBE)
摘要
以单层黑磷为例记录一下用vasp使用PBE计算二维材料的方法
预备工具
- 装有Linux系统的的电脑(本文使用wsl2下的ubuntu1804版本,使用vscode编辑)
- VASP 5.4.4
- vaspkit 1.3.5
结构优化
这一步是为了得到原子的最优位置,所以POSCAR给的稍微有些偏差问题是不大的,因为后面VASP会优化。
新建文件夹BP_1L
,在当前目录创建名为opt
的文件夹。
POSCAR
POSCAR可以去下载cif通过VESTA转换,也可以通过MS或VESTA画出来
导入写好的POSCAR,这里为了实现单层y方向给了20埃的长度
1 | BP_1L |
INCAR
1 | # Global Parameters |
POTCAR和KPOINT
使用vaspkit生成
输入vaspkit
- 选 1) VASP Input-Files Kit
- 选 103) Generate POTCAR File with Default Setting
即可生成POTCAR
输入vaspkit
- 选 1) VASP Input-Files Kit
- 选 102) Generate KPOINTS File for SCF Calculation
- 选 1) Monkhorst-Pack Scheme
- 输入0.01
- 在生成的KPOINTS中第四行修改为
14 1 10
得到KPOINTS
OPTCELL
二维材料还需要一个optcell文件来让VASP不要优化真空层方向
里面写101
即可,0表示不优化第二个方向
运行vasp
自洽
将上一步骤完成的文件复制一份并重命名为scf
在该目录下输入cp CONTCAR POSCAR
将上一步优化好的结果赋给POSCAR
修改INCARD
1 | # Global Parameters |
运行vasp
能带计算
将文件复制到一个band文件夹,修改INCAR
1 | # Global Parameters |
使用vaspkit生成新的k路径
输入vaspkit
- 选 3) K-Path for Band-Structure
- 选 302) 2D Structure
cp KPATH.in KPOINTS
提交运行
输出文件中的DOSCAR内的费米能级是不准确的,所以这里进行一个修改,
使用grep fermi ../scf/OUTCAR
从自洽中找到准确的费米能级
1
2ISMEAR = 0; SIGMA = 0.05 broadening in eV -4-tet -1-fermi 0-gaus
E-fermi : -1.8123 XC(G=0): -3.0926 alpha+bet : -3.0343
将该数值复制到band文件夹下输出文件DOSCAR的第六行的第4个数,两个数的值一般会比较接近。
参看数据及绘制能带图
通过vaspkit计算能带
输入vaspkit
- 选 21) Band-Structure
- 选 211) Band-Structure
输出文件中有BAND_GAP
可以看见 Band Gap (eV)
绘制能带图可以使用 python 的 pymatgen 或 origin(把band.dat拖进去)
下面给出pymatgen的绘制能带图代码,代码节选自刘锦城老师的文章
1
2
3
4
5
6
7
8
9
10
11import matplotlib.pyplot as plt
from pymatgen.io.vasp.outputs import Vasprun
from pymatgen.electronic_structure.plotter import BSDOSPlotter,BSPlotter,BSPlotterProjected,DosPlotter
bs_vasprun = Vasprun("./vasprun.xml",parse_projected_eigen=True)
bs_data = bs_vasprun.get_band_structure(line_mode=True)
band_fig = BSPlotter(bs=bs_data)
band_fig.get_plot()
plt.savefig('band_fig.png', img_format='png')