能带反折叠计算

本文章为原创,版权归作者王伟、刘锦程所有,文章转载请先取得作者的同意,非常欢迎转发文章链接!严禁以任何方式挪用本文内容,用于以盈利为目的各种活动。

一句话提要:能带反折叠(Band unfolding)是计算缺陷材料常用方法,可以将含有低浓度缺陷的超胞和原胞的能带进行对比。即将发布的VASPKIT v1.00版本实现了直接提取分析WAVECAR,得到有效能带(effective band structure, EBS)的功能。

相关内容

深入分析能带结构(一) 能带的形成

深入分析能带结构(二) VASPKIT能带图计算

深入分析能带结构(三)-Origin画能带图

pymatgen画能带图方法-高通量计算初探

深入分析能带结构(一)中我们详细讲解了一维H原子链的能带结构。如果我们设定其重复周期是两个氢原子(建立超胞supercell),那么此时实空间的晶胞边长就是原来的两倍 (a -> 2a),相应的其倒格子的晶胞矢量就是原来的一半(π/a -> π/2a),能带数量也是原来的两倍。所以想要直接对比超胞和原胞的能带并不方便。如果想要进行对比,需要先将超胞的能带结构反折叠到原胞的大小,像把一张对折的A4纸打开。

一维H原子链能带折叠

对于没有缺陷的系统,对超胞能带反折叠以后和原胞的能带结构是完全一样的。(如图a)但是,如果超胞含有缺陷,反折叠得到的能带被称为有效能带(effective band structure, EBS),其结构和无缺陷的原胞不同,反应了缺陷的性质。(如图 b)

原胞和超胞能带

​ 真实材料中的本征缺陷及杂质浓度非常低,在利用第一性原理计算研究材料中的缺陷性质时必须采用超胞模型。然而,由于超胞的能带结构无法直接与完美体系的能带做比较,因此讨论缺陷及杂质如何影响基质材料的电学性质具有一定的难度。幸运的是,Zunger等人[见PRL 104, 236403 (2010)和PRB 85, 085201 (2012)文献]提出的有效能带理论(Effective Band Structure)可以实现把超胞的能带结构变换到原胞的布里渊区,从而使包含缺陷的超胞能带结构与完美原胞能带结构做比较成为可能。接下来,我们给出利用VASPKIT程序计算能带反折叠的主要步骤。必须注意以下步骤仅针对于VASPKIT.1.00及以上版本

不同的超胞可以反折叠成相同的能带

接下来我们已研究包含一个S空位的MoS2矩形超胞为例计算其EBS。

第一步:准备以下文件:
  1. POSCAR文件,必须是原胞结构(primitive cell)。以下是MoS2单层结构文件
1
2
3
4
5
6
7
8
9
10
11
MoS2-H.POSCAR
1.00000000000000000
3.1904063769892548 0.0000000000000000 0.0000000000000000
-1.5952031884946274 2.7629729709066906 0.0000000000000000
0.0000000000000000 0.0000000000000000 17.6585355706663840
Mo S
1 2
Direct
0.3333333429999996 0.6666666870000029 0.5000000000000000
0.6666666870000029 0.3333333429999996 0.4117002781430051
0.6666666870000029 0.3333333429999996 0.5882996918569924
  1. 包含原胞能带路径的KPATH.in文件,可通过VASPKIT 302或303产生,也可手动调整能带路径。这里我们选择的MoS$_2$能带路径是从M-K-$\Gamma$。
1
2
3
4
5
6
7
8
9
KPATH for MoS2
20
Line mode
Rec
0.00000000000 0.50000000000 0.00000000000 # M
0.33333333333 0.33333333333 0.00000000000 # K

0.33333333333 0.33333333333 0.00000000000 # K
0.00000000000 0.00000000000 0.00000000000 # GAMMA
  1. 用于静态计算的INCAR文件,并设置LWAVE =.TRUE.,为了避免读取WAVECAR时出现’ERROR! Computed NPLANE= * != input NPLANE= *‘错误,可选择较低的截断能或令PREC=N。INCAR的典型参数为
1
2
3
4
5
6
7
8
9
10
11
SYSTEM = MoS2
ISTART = 1
LREAL = F
PREC = N
LWAVE = .TRUE.
LCHARG = F
ISMEAR = 0
SIGMA = 0.05
NELM = 60
NELMIN = 6
EDIFF = 1E-08
  1. 用于产生超胞的变化矩阵TRANSMAT.in文件(可选文件)。我们先看看TRANSMAT.in的格式
1
2
3
4
Read transformation matrix from the TRANSMAT.in file if it exists.  第一行是注释行
2 0 0 # must be three integers
0 3 0 # must be three integers
0 0 3 # must be three integers

第二行至第四行的整数构成3$\times$3变换矩阵$M$,超胞晶格基矢$\vec{A}$和原胞晶格基矢$\vec{a}$满足以下的变换关系:

如果$M$中非对角元素都为0,则产生的超胞晶格基矢与原胞的平行,这种超胞也是最常见的,也可通过VASPKIT-401命令产生。

第二步: 运行VASPKIT -task 400生成SUPERCELL.vasp和TRANSMAT(当TRANSMAT.in文件不存在时)文件;如果需要引入缺陷或者杂质,这时可编辑SUPERCELL.vasp建立缺陷超胞模型(见下图);
带有S空位的MoS2超胞模型

MoS2原胞属于六角结构,这里我们想产生一个矩形超胞,我们可以通过VASPKIT-400命令实现。注意如果TRANSMAT.in不存在时,运行VASPKIT-400后变换矩阵$M$每个元素通过对话框输入,如下图命令所示。否则,直接从TRANSMAT.in文件中读取换矩阵$M$,这样更方便快捷。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
VASPKIT -task 400
+---------------------------------------------------------------+
| VASPKIT Version: 1.00.RC (17 Jun. 2019) |
| A Pre- and Post-Processing Program for VASP Code |
| Running VASPKIT Under Command-Line Mode |
+---------------------------------------------------------------+
-->> (01) Reading Structural Parameters from POSCAR File...
Enter the new lattice verctor a in terms of old:
(MUST be three integers, e.g., 1 2 3)
4 0 0
Enter the new lattice verctor b in terms of old:
2 4 0
Enter the new lattice verctor c in terms of old:
0 0 1
+-------------------------- Summary ----------------------------+
The Transformation Matrix P is:
4 0 0
2 4 0
0 0 1
Lattice Constants in New Cell: 12.762 11.052 17.659
Lattice Angles in New Cell: 90.00 90.00 90.00
Total Atoms in New Cell: 48
Volume of New Cell is 16 times of the Old Cell
+---------------------------------------------------------------+
-->> (02) Written SUPERCELL.vasp File
第三步: cp SUPERCELL.vasp POSCAR和cp TRANSMAT TRANSMAT.in(当TRANSMAT.in文件不存在时), 并运行VASPKIT-281生成KPOINTS文件;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 ------------>>
28
+-------------------------- Warm Tips --------------------------+
See some examples in VASPKIT/examples/band_unfolding.
Only Support KPOINTS file Generated by VASPKIT.
Please Set LWAVE= .TRUE. in the INCAR file.
+---------------------------------------------------------------+
================== Band-Unfolding ==============================
281) Generate KPOINTS File for Band-Unfolding Calculation
282) Calculate Effective Band Structure

0) Quit
9) Back
------------>>
281

-->> (01) Reading Structural Parameters from POSCAR File...
+---------------------------------------------------------------+
| Selective Dynamics is Activated! |
+---------------------------------------------------------------+
======================= K-Mesh Scheme ==========================
1) Monkhorst-Pack Scheme
2) Gamma Scheme

0) Quit
9) Back
------------->>
2
+-------------------------- Warm Tips --------------------------+
Input Resolution Value to Determine K-Mesh for SCF Calculation:
(Typical Value: 0.02-0.03 is Generally Precise Enough)
------------>>
0.03
Input Resolution Value along K-Path for Band Calculation:
(Typical Value: 0.02-0.04 for DFT and 0.04-0.06 for hybrid DFT)
------------>>
0.03
+---------------------------------------------------------------+
-->> (02) Readin Transformation Matrix from TRANSMAT.in file...
-->> (03) Reading K-Paths From KPATH.in File...
+-------------------------- Summary ----------------------------+
K-Mesh for SCF Calculation: 3 3 1 # 注意这部分根据超胞的倒格矢长度产生
The Number of K-Point along K-Path 1: 21 # 注意这部分根据原胞的倒格矢长度产生
The Number of K-Point along K-Path 2: 43 # 注意这部分根据原胞的倒格矢长度产生
+---------------------------------------------------------------+
第四步: 提交vasp作业;
第五步: 运行VASPKIT-282;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 ------------>>
282
+-------------------------- Warm Tips --------------------------+
Current Version Only Support the Stardard Version of VASP code.
+---------------------------------------------------------------+
-->> (01) Reading the header information in WAVECAR file...
+--------------------- WAVECAR Header --------------------------+
SPIN = 1
NKPTS = 68
NBANDS = 252
ENCUT = 280.00
Coefficients Precision: Complex*8
Maximum number of G values: GX = 18, GY = 16, GZ = 25
Estimated maximum number of plane-waves: 30159
+---------------------------------------------------------------+
-->> (02) Start to read WAVECAR file, take your time ^.^
Percentage complete: 25.0%
Percentage complete: 50.0%
Percentage complete: 75.0%
Percentage complete: 100.0%
-->> (03) Readin Transformation Matrix from TRANSMAT.in file...
-->> (04) Reading Fermi-Energy from DOSCAR File...
ooooooooo The Fermi Energy will be set to zero eV ooooooooooooooo
-->> (05) Reading KPOINTS_MAPPING_TABLE.in file...
-->> (06) Reading K-Paths From KPATH.in File...
-->> (07) Start to Calculate Effective Band Structure...
Percentage complete: 25.0%
Percentage complete: 50.0%
Percentage complete: 75.0%
Percentage complete: 100.0%
-->> (08) Written EBS.dat File!
-->> (09) Written KLABELS File!
第六步: 最后,可以利用VASPKIT/examples/band_unfolding/eps_plot.py脚本画图:
完美晶胞和缺陷晶胞EBS对比
欢迎在评论区讨论问题、补充内容、指出错误。请勿发送占楼、沙发、点赞等无意义的回复。
目录