计算Band Structure
预处理过程:需要准备一个单胞以及对应的K点路径(在不可约Brillouin区)。K点路径不是唯一的,所以不是必须选择所有高对称点,选择有代表性和重要的线即可。对于大尺度与高通量计算,存在着通过结构信息定义路径的规则。pymatgen和seeK-path提供了三维体系的解决方案。vaspkit包含1D,2D,3D材料生成K点路径的方案。
pymatgen(https://pymatgen.org/)Computational Materials Science 49 (2010) 299–312. seeK-path(https://www.materialscloud.org/work/tools/seekpath)Computational Materials Science 128 (2017) 140–184.
vaspkit通过301、302、303生成1D,2D,3D材料的K点路径
例如:$\ce{MoS2}$的K点路径生成
准备$\ce{MoS2}$的POSCAR,由于vaspkit生成该K点路径需要基于一个标准单胞,所以必须先标准化POSCAR。对于2D材料,需要控制二维材料z轴坐标的中心在$|c|/2$。这一步可以通过vaspkit的921或923的功能实现。其流程(923)为先在Z轴上加上真空层,然后将2D材料放置在z坐标的中心。
对于3D材料使用602功能生成标准的单胞
之后做几何优化,再做单点的自洽计算获得CHGCAR
在新的文件夹里面运行vaspkit302获得2D的K点路径(确认空间群)
KPATH.in包括了线模式的K点路径,将其直接复制成KPOINTS即可(默认插20个点)
HIGH_SYMMETRY_POINTS包含了所有高对称点的信息,vaspkit不能确保生成的路径一定对,需要对照seeK-path网站进行验证(https://www.materialscloud.org/work/tools/seekpath)
读取前一步的CHGCAR做单点计算
案例文件如下:
##### initial I/O ##### SYSTEM = MoS2 ICHARG = 11 LWAVE = .TRUE. LCHARG = .TRUE. LVTOT = .FALSE. LVHAR = .FALSE. LELF = .FALSE. LORBIT = 11 NEDOS = 1000 ##### SCF ##### ENCUT = 500 ISMEAR = 0 SIGMA = 0.05 EDIFF = 1E-6 NELMIN = 5 NELM = 300 GGA = PE LREAL = .FALSE. PREC = Accurate
后处理过程:
计算后使用vaspkit的21功能
使用211获得基本的Band Structure。如果有python和matplotlib库则可以自动输出band.png图像。(默认中Fermi能级被移到0 eV)
共输出以下文件:BAND.dat,BAND_REFORMATTED.dat,KLINES.dat,KLABELS,BAND_GAP
BAND.dat`,`BAND_REFORMATTED.dat
包含band的基本信息,可用origin打开
BAND_REFORMATTED.dat 第一列为K-Path信息,单位A.其余的列为每个band的能量
KLABELS储存每个高对称点的位置
BAND_GAP储存band gap 的信息
对于212,213,214功能可以获得投影band structure。(Note:需要确保在INCAR中LORBIT = 10
or
LORBIT = 11使其输出投影band structure)- 212输出选定原子的band structure(此处可按元素名指定,如:C Fe 或 按元素编号指定,如:1-2)。vaspkit会输出这样两个文件:
PBAND_A1.dat
andPBAND_A2.dat
.每列分别为每个轨道的能量,最后为total。 - 213输出每个原子的band structure
- 214输出选定原子投影band structure的总和(一般用于调查层状band和比较表面键与内部键)
- 212输出选定原子的band structure(此处可按元素名指定,如:C Fe 或 按元素编号指定,如:1-2)。vaspkit会输出这样两个文件:
预处理过程(杂化泛函特化)
除了line-mode的K点路径,vaspkit也生成K点间均匀取样的用于杂化泛函计算。这样的KPOINTS包含两个部分,一个和不可约布里渊区的K点一样,另一个是独立于K-PAth外的无权重的K点。
步骤相似:
几何优化:302/303生成标准化单胞,线状k-path,分数坐标的高对称点
使用251功能生成杂化泛函用KPOINTS,输入KPT的绝对值决定SCF计算的k点采样密度以及band structure计算的k-path。读入上一步生成的KPATH.in自动生成KPOINTS。
(可选)基于新的KPOINTS做一个PBE SCF计算得到波函数,可被下一步读入,这样可以减少下一步杂化泛函计算时间
做杂化泛函计算
案例:
- 优化后,运行302,将旧的POSCAR用新的PRIMCELL.vasp代替
- 运行251,选择 (1) Monkhorst-Pack Scheme or (2) Gamma Scheme生成SCF所需的KPOINTS
251 -->> (1) Reading Structural Parameters from POSCAR File... ======================= 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.03-0.04 is Generally Precise Enough) ------------>> 0.05 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.05 +---------------------------------------------------------------+ -->> (2) Reading K-Paths From KPATH.in File... +-------------------------- Summary ----------------------------+ K-Mesh for SCF Calculation: 7 7 1 The Number of K-Point along K-Path 1: 22 The Number of K-Point along K-Path 2: 13 The Number of K-Point along K-Path 3: 26 +---------------------------------------------------------------+ -->> (3) Written KPOINTS File!
Here, the resolution value of normal weighted K-Mesh and 0-weighted K-path is set to be 0.05. Output K-mesh for SCF Calculation: 7 7 1. And the number of k-points along each line of k-path: ΓΓ-> M : 22, M -> K : 13, K -> ΓΓ : 26.
做PBE计算
做杂化泛函计算:INCAR设置如下(细节参考http://blog.wangruixing.cn/2019/05/20/hse/)
##### initial I/O ##### SYSTEM = Hybird Functional ISTART = 1 ICHARG = 1 LWAVE = .TRUE. LCHARG = .TRUE. LVTOT = .FALSE. LVHAR = .FALSE. LELF = .FALSE. LORBIT = 11 NEDOS = 1000 ##### SCF ##### ENCUT = 500 ISMEAR = 0 SIGMA = 0.05 EDIFF = 1E-6 NELMIN = 5 NELM = 300 GGA = PE LREAL = .FALSE. # PREC = Accurate # ISYM = 3 ##### Geo opt ##### EDIFFG = -0.01 IBRION = 2 POTIM = 0.2 NSW = 0 # no Geo_opt ISIF = 3 # 2 not optimize cell #### HSE #### LHFCALC = .TRUE. AEXX = 0.25 HFSCREEN = 0.2 ALGO = ALL # or Damped TIME = 0.4
后处理(对杂化泛函):
- 使用252命令导出键数据BAND.dat
and
BAND-REFORMATTED.dat文件,高对称点的位置存在KLABELS。 - 投影band structure和前面一样
- 使用252命令导出键数据BAND.dat
有效质量计算:
band structure近似:$E(\mathbf{k})=E{0}+\frac{\hbar^{2} \mathbf{k}^{2}}{2 m^{}}$于是可以得到$\frac{1}{m^{}}=\frac{1}{\hbar^{2}} \frac{\partial^{2} E}{\partial k{i} \partial k_{j}}$ 。vaspkit可以自动生成KPOINTS并计算有效质量(但目前只适用于不带电荷以及不含磁性的半导体体系)
案例:$\ce{MoS2}$计算
从band structure中找到带边,CBM和VBM均在K点
选择位置做二阶导数:这里选择K -> M, K -> Γ计算电子与空穴的有效质量
准备POSCAR和VPKIT.in:
1 # "1" for pre-process (generate KPOINTS), "2" for post-process(calculate m*) 6 # number of points for quadratic function fitting. 0.015 # k-cutoff, unit Å-1. 2 # number of tasks for effective mass calculation 0.333333 0.3333333 0.000 0.000 0.000 0.000 K->Γ # Specified two K-points and direction 0.333333 0.3333333 0.000 0.500 0.000 0.000 K->M # Specified two K-points and direction
vaspkit中运行912,输入K-mesh的参数,vaspkit会自动生成KPOINTS文件基于VPKIT.in文件(2-Gamma,0.04)
提交vasp任务
改变VPKIT文件第一行为2(post-process)重新运行913
能带解折叠(band-unfolding)
合金和缺陷材料经常需要用超胞计算,为了比较单胞与超胞的键计算,能带需要被解折叠为有效band structure
例如:Graphene
准备POSCAR
准备KPATH.in(对于2D材料可用301/302/303)
使用401创建2*2超胞,改SC221.vasp为POSCAR,创建一个新的VPKIT.in文件,在第一行输入超胞尺寸数据
2 2 1
运行281生成KPOINTS用于超胞计算(2,0.03)
运行vasp
运行282导出EBS.dat
绘制图像
3D Band Structure:
- 选择一个面上的K点,计算这些K点上的能带能量
- 例子:Graphene
- 准备POSCAR(relaxed)和INCAR用于SCF计算(如第一节)
- 运行231生成KPOINTS (0.015)
- 提交vasp
- 计算完后,运行232或233
- 运行python VASPKITdir/examples/3D_band/how_to_visual.py得到图
Fermi面:
- 其对应的物理含义为0K下,区分占据band与未占据band的面
- 例子:Cu Fermi surface
- 优化Cu结构,必须是单胞
- 运行vaspkit输入261生成K点与POTCAR用于计算Fermi面(kPT~0.008)
- 提交vasp任务
- 运行262,生成FERMISURFACE.bxsf
- XcrySDen