
本文转载自 VASPKIT 微信公众号
一句话提要 :用VASPKIT是计算能带结构图最简单的方式,计算结果可以用Origin画图,也可以用Pymatgen画图。本文讲解用Origin画图方法。
使用vaspkit 21功能得到的PBAND_.dat文件可以直接用origin画图得到投影能带,PBAND_.dat的文件格式如下:
#K-Path Energy s py ... tot #Band-index 1 0.000 -14.278 0.275 0.000 0.005 ... 0.281 0.060 -14.268 0.276 0.000 0.005 ... 0.281 0.120 -14.239 0.276 0.000 0.005 ... 0.281 0.180 -14.190 0.277 0.000 0.005 ... 0.282 0.240 -14.123 0.278 0.000 0.005 ... 0.284 0.300 -14.039 0.280 0.000 0.005 ... 0.285 0.360 -13.938 0.281 0.000 0.005 ... 0.288 0.420 -13.823 0.283 0.000 0.005 ... 0.290 ... #Band-index 2 3.114 -13.063 0.315 0.000 0.000 ... 0.316 3.045 -13.056 0.315 0.000 0.000 ... 0.316 ... #Band-index 3 0.000 -5.798 0.018 0.000 0.125 ... 0.143 0.060 -5.787 0.018 0.000 0.125 ... 0.143 ...
第一列是K-path走过的距离,即能带图的横坐标,有几条能带(NBANDS)就会有几套数据。
第二列是能带的能量。
第三列 - 倒数第二列是,每个轨道在能带上的投影。
最后一列是原子/元素在能带上的投影。VASPKIT(211)是原子的投影,(212)是元素的投影,相当于体系中该元素的所有原子,(213)可以按照自己的需求指定几个原子或几种元素的集合。
这个文件可以直接导入到origin里:

选中前两行画线模型就能得到标准的能带图:

在能带图上找到高对称点的位置,可以在 VASPKIT 自动生成的 KLABELS 文件中得到,
K-Label K-Coordinate in band-structure plots GAMMA 0.000 M 1.139 K 1.797 GAMMA 3.113
1.139是M点,1.797是K点,3.113是Gamma点。单位都是埃 -1,在Origin前两列里添加如下几行,标记出高对称点位置。
1.14 -20 1.14 10 1.798 -20 1.798 10
也可以通过数line-mode的点的个数标记高对称点的位置,比如KPOINTS的第二行50,代表每两个高对称点之间插入50个点。在origin里每50行就有一个对应的高对称点。
K-Path Generated by VASPKIT 50 Line-Mode Reciprocal 0.0000000000 0.0000000000 0.0000000000 GAMMA 0.5000000000 0.0000000000 0.0000000000 M 0.5000000000 0.0000000000 0.0000000000 M 0.3333333333 0.3333333333 0.0000000000 K 0.3333333333 0.3333333333 0.0000000000 K 0.0000000000 0.0000000000 0.0000000000 GAMMA

调整坐标范围,一般我们关心的是费米能级附近的态。 得到能带图效果如下:

右键点击Origin左上角的“1”,在plot setup里可以加入指定的 轨道成分/原子/元素 的投影到能带图上,俗称projected band structure或fat band structure.

选中 Bubble,然后 A 列和 B 列数据作为 x 轴和 y 轴的数据,并指定一列轨道或最后一列(tot) 作为投影的权重,点击 add->ok。然后调整bubble点的scaling和颜色即可。


这张图是 MoS2的Mo的投影能带,可见在VBM和CBM处,Mo元素所占权重很大,相应的S占的权重就少。 注意这里的能带是没考虑自旋轨道耦合(SOC)的,如果考虑SOC,能带结构会发生改变。
如果想要看在VBM和CBM处的轨道图形,可以用VASP自带的parital charge功能,也可直接运行VASPKIT 511功能得到这两个位置的实空间波函数。
我们需要输入的信息是这两个位置的K点序号和band序号,这两个信息可以从 IBZKPT 文件和 EIGENVAL 文件中读取,从能带图上可以读出这个点正好是 ‘K’ ,前面有两条线的路径Gamma -> M -> K,每条线上有20个点(KPOINTS文件的第二行),所以VBM和CBM处在第41个点的位置。Band的序号要根据占据数来读取,EIGENVAL 文件中该点的最高占据能带是13号,最低非占据能带是14号。在运行VASPKIT的时候依次选择 511 -> 41 -> 13 和 511 -> 41 -> 14 即可。
0.3333333E+00 0.3333333E+00 0.0000000E+00 0.1666667E-01 1 -62.527256 1.000000 2 -36.782055 1.000000 3 -36.739875 1.000000 4 -36.624610 1.000000 5 -13.641115 1.000000 6 -13.567346 1.000000 7 -7.084097 1.000000 8 -6.272123 1.000000 9 -5.748132 1.000000 10 -5.251686 1.000000 11 -4.558188 1.000000 12 -3.850084 1.000000 13 -1.714496 1.000000 14 -0.037148 0.000000 15 1.372039 0.000000 16 1.842932 0.000000 17 3.168293 0.000000 18 5.547570 0.000000 19 5.927476 0.000000 20 7.925026 0.000000
511 +-------------------------- Warm Tips --------------------------+ Open Real-Space WaveFunction Files with VESTA/VMD Package. +---------------------------------------------------------------+ Which K-POINT do you want to plot? (1<= ikpt <=60) ------------>> 41 Which BAND do you want to plot? (1<= iband <=20) ------------>> 13 +-------------------------- 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 = 60 NBANDS = 20 ENCUT = 500.00 Coefficients Precision: Complex*8 Maximum number of G values: GX = 6, GY = 6, GZ = 34 Estimated maximum number of plane-waves: 5127 +---------------------------------------------------------------+ -->> (02) Start to Post-Process Wavefunctions... -->> (03) Reading Structural Parameters from POSCAR File... -->> (04) Written WF_REAL_B0013_K0041.vasp File! -->> (05) Written WF_IMAG_B0013_K0041.vasp File!
得到的文件WF_REAL_B0013_K0041.vasp,WF_REAL_B0014_K0041.vasp 拖入VESTA里作图。这里看到CBM主要是横向分布的,而VBM波函数是横向和纵向分布都有的。

综上,可见用 Origin 绘制能带图是比较繁琐的事情,如果我们想要一下次绘制100 种材料的能带图就难以完成了。 这就需要借助一些高通量计算的程序,比如 Pymatgen 绘制能带结构图。 之后的文章种会讲解如何用 pymatgen 绘制各种的能带图和布里渊区。
学习更多固体与表面理论计算相关内容,欢迎参加第四届研之成理固体与表面理论计算初级培训班(杭州,20190805-20190808); 详情请见:
研之成理固体与表面理论计算「青年学者」论坛暨理论计算初级培训班开始注册
。咨询请联系陈老师,手机:18969084992(微信同号)
