0.前言
画能带结构图有三种方法,VASP,QE,Wannier90。注意,后两者的开始两步是一样的,不要混淆。本文使用Wannier90画能带结构。
1.Wannier90教程01 Si的价带
这个教程前四步是qe的流程,上图黄色。1,5加后头的是Wannier90教程。
QE画的能带图是完整能带图,wannier90在教程01中只画了价带,所以看上去不太一样。PS。他们的单位应该也不一样。
01_自洽
&control
calculation = 'scf'
restart_mode = 'from_scratch'
prefix = 'si'
pseudo_dir = 'pseudo/'
outdir = 'out/'
/
&system
ibrav = 0
nat = 2
ntyp = 1
ecutwfc = 25.0
ecutrho = 200.0
/
&electrons
conv_thr = 1.0d-10
/
ATOMIC_SPECIES
Si 28. Si.pbe-n-van.UPF
ATOMIC_POSITIONS crystal
Si -0.25 0.75 -0.25
Si 0.00 0.00 0.00
K_POINTS automatic
10 10 10 0 0 0
CELL_PARAMETERS bohr
-5.1 0.0 5.1
0.0 5.1 5.1
-5.1 5.1 0.0
02_bands.in
&control
calculation = 'bands' !能带计算
restart_mode = 'from_scratch'
prefix = 'si'
pseudo_dir = 'pseudo/'
outdir = 'out/'
/
&system
nbnd=12 !要计算多少个带,有8个电子,4个占据价带,这个数是依据他俩选的,但应该不是相加
ibrav = 0
nat = 2
ntyp = 1
ecutwfc = 25.0
ecutrho = 200.0
/
&electrons
conv_thr = 1.0d-10
diago_full_acc = .true. !空带也和占据态用一样的精度对角化
/
ATOMIC_SPECIES
Si 28. Si.pbe-n-van.UPF
ATOMIC_POSITIONS crystal
Si -0.25 0.75 -0.25
Si 0.00 0.00 0.00
K_POINTS crystal_b
3
0.5 0.5 0.5 50
0. 0. 0. 50
0.5 0. 0.5 50
CELL_PARAMETERS bohr
-5.1 0.0 5.1
0.0 5.1 5.1
-5.1 5.1 0.0
pw.x -nk 2 -in bands.in > bands.out
03_bandsx
&bands
prefix = ’si’
outdir = ’out/’
filband = ’bands.dat’
lsym = .false.
/
bands.x < bandsx.in > bandsx.out
生成bands.dat文件
04_plotband.x
执行 plotband.x 代码(以交互方式)并回答其问题。
[user@ln01 exm01]$ q-e-qe-6.8/bin/plotband.x
Input file > bands.dat
Reading 12 bands at 101 k-points
Range: -5.6990 20.5850eV Emin, Emax, [firstk, lastk] > -6.0 10
!#Emin, Emax
high-symmetry point: -0.3536 0.3536 0.3536 x coordinate 0.0000
high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.6124
high-symmetry point: -0.7071 0.0000 0.0000 x coordinate 1.3195
output file (gnuplot/xmgr) > bands.xmgr!输入你想要的生成文件名和格式
bands in gnuplot/xmgr format written to file bands.xmgr
output file (ps) > bands.ps !输入你想要的生成文件名
Efermi > 6.3865
!费米能,见scf.out"highest occupied level (ev): 6.3865"
deltaE, reference E (for tics) 1.0 6.3865
bands in PostScript format written to file bands.ps
最后得到一张简单的能带结构图,直接打开.ps文件,或者用.xmgr文件自己画是一样的。
05_nscf.in
&control
calculation = 'nscf'
restart_mode = 'from_scratch'
prefix = 'si'
pseudo_dir = 'pseudo/'
outdir = 'out/'
/
&system
nbnd= 4 !将带数改为价带数4,价电子数,这个值可以在赝势里找到
ibrav = 0
nat = 2
ntyp = 1
ecutwfc = 25.0
ecutrho = 200.0
/
&electrons
conv_thr = 1.0d-10
diago_full_acc = .true.
/
ATOMIC_SPECIES
Si 28. Si.pbe-n-van.UPF
ATOMIC_POSITIONS crystal
Si -0.25 0.75 -0.25
Si 0.00 0.00 0.00
CELL_PARAMETERS bohr
-5.1 0.0 5.1
0.0 5.1 5.1
-5.1 5.1 0.0
!在输入文件最后加K点坐标
/q-e/wannier90-3.1.0-par/utility/kmesh.pl 4 4 4 >> nscf.in
pw.x < nscf.in > nscf.out
06_ex1.win
设置wanniar90的输入文件ex1.win
use_ws_distance = .true.
num_bands = 4 !和nscf中用的一样
num_wann = 4 !没有解纠缠的话和上一个值一样
num_iter = 100
iprint = 2
num_dump_cycles = 10
num_print_cycles = 10
!! To plot the WFs
! restart = plot
wannier_plot = true
wannier_plot_supercell = 3
! wannier_plot_list = 1,5
!! To plot the WF interpolated bandstructure
bands_plot = true
begin kpoint_path
L 0.50000 0.50000 0.5000 G 0.00000 0.00000 0.0000
G 0.00000 0.00000 0.0000 X 0.50000 0.00000 0.5000
end kpoint_path
!! !! Bond-centred s-orbitals
begin projections
f=-0.125,-0.125, 0.375:s
f= 0.375,-0.125,-0.125:s
f=-0.125, 0.375,-0.125:s
f=-0.125,-0.125,-0.125:s
end projections
begin atoms_frac
Si -0.25 0.75 -0.25
Si 0.00 0.00 0.00
end atoms_frac
begin unit_cell_cart
bohr
-5.10 0.00 5.10
0.00 5.10 5.10
-5.10 5.10 0.00
end unit_cell_cart
mp_grid = 4 4 4 !nscf用的那个网格
begin kpoints
XXX
end kpoints
其他参数含义参见
https://github.com/wannier-developers/wannier90/raw/v3.1.0/doc/compiled_docs/user_guide.pdf
/kmesh.pl 4 4 4 >> ex1.win
注意!这里会生成四列数据,但是我们只要前三列,填在XXX位置
begin kpoints
XXX
end kpoints
07_完成wannier计算
1.预处理
wannier90.x -pp ex1
这会产生一个 ex1.wout 文件和 ex1.nnkp 文件,包含来自 Wannier90 输入文件的相关信息
/pw2wannier90.x < pw2wan.in > pw2wan.out
!注意,这一步不能加nk
由于我们想在真实空间中绘制 Wannier 函数,因此我们还需要真实空间网格上的 unk® 波函数。因此,我们还在 06_pw2wan.in 中设置了 write_unk 标志,这将生成一组名称为 UNK00001.1、UNK00002.1 的文件……
最后,代码还将生成一个 ex1.eig 文件,其特征值位于初始 4×4×4 k 网格上。(注意:这不是获得绝缘子的 MLWF (最大局部化 Wannier 函数/maximally-localised Wannier functions)所必需的,而仅用于插值和能带绘图例程)。
请注意,运行pw2wannier90.x 要有 ex1.nnkp 文件。
计算重叠矩阵 Mmn(将写入 ex1.mmn 文件)和 Amn 矩阵(文件 ex1.amn)
08_获得 MLWFs
wannier90.x ex1
结束后输出文件ex1.wout
输出文件中比较特别的信息
:<-- DLTA 收敛性
:Final State 您会找到最大局部化 Wannier 函数的中心和扩展
要检查获得的 MLWF 是否正确,通常需要:将 Wannier 插值能带结构与从头算进行比较: 您可以尝试将在前面的步骤中获得的 ab-initio 能带结构图(qebands.agr)与wannier插值能带结构图(文件 ex1_band.dat 和 ex1_band.gnu)进行比较
画图脚本:punplot
set xtics nomirr
set x2tics
set xrange [*:*] noextend
set x2range [*:*] noextend
plot 'qebands.agr' w l, 'ex1_band.dat' axes x2y1 w l
注意!自己画图的画要注意横坐标的坐标单位转换。
请注意,Wannier90 代码还在 ex1_band.kpt 文件中输出用于插值的 k 点列表,可用于在同一网格上绘制能带结构。
因为这个例子只做了价带,所以这个图里只有三条价带
wannier画出来的
QE最开始画出来的
绘制实空间 Wannier 函数并检查它们是否为实数:如果您要求 Wannier90 绘制 Wannier 函数,它还会在 ex1.wout 文件的末尾打印它们中每个函数的虚部和实部的比率: 检查该值是否很小。
可视化 Wannier 函数,这些函数在文件 ex1_00001.xsf、…中输出。直接将文件拖进 VESTA。
2.Wannier90教程01 Si的价带和导带
01_改nsc.in
前面都是一样的,05要改一下
&control
calculation = 'nscf'
restart_mode = 'from_scratch'
prefix = 'si'
pseudo_dir = 'pseudo/'
outdir = 'out/'
/
&system
nbnd= 12 !原来只有价带数,是4,现在改为12
ibrav = 0
nat = 2
ntyp = 1
ecutwfc = 25.0
ecutrho = 200.0
/
&electrons
conv_thr = 1.0d-10
diago_full_acc = .true.
/
ATOMIC_SPECIES
Si 28. Si.pbe-n-van.UPF
ATOMIC_POSITIONS crystal
Si -0.25 0.75 -0.25
Si 0.00 0.00 0.00
CELL_PARAMETERS bohr
-5.1 0.0 5.1
0.0 5.1 5.1
-5.1 5.1 0.0
02_改ex2.win
ex1.win改成ex2.win
需要改的量:
- num_bands = 12
- num_wann = 12 !CHANGE!更改为正确数量的 Wannier 函数数量
- dis_froz_max = 6.5 !CHANGE!原来没有这个量,能隙内的冻结窗口,设置最大能量,使用练习 1 中获得的能带图来获取这个值。具体选择方法看https://blog.csdn.net/lielie12138/article/details/125006013 第七部分
- dis_win_max = 17 !CHANGE!原来没有这个量,将解缠结的最大能量(标志 dis_win_max)设置为足够大的能量,以便为每个 k 点包含足够的带; 17.0 eV 应该是一个合理的值(检查该值在能带图中的位置)。(说实话我没找到,大概是图画的不对,凑合吧)
- !! !! Bond-centred s-orbitals
!CHANGE!
!!将晶胞中每个 Si 原子的投影更改为 4 sp3 轨道
begin projections
Si:sp3
end projections
这些量的具体选择方法看https://blog.csdn.net/lielie12138/article/details/125006013 第七部分
use_ws_distance = .true.
num_bands = 12 !CHANGE!这里改了,改成了12
num_wann = 12 !CHANGE!更改为正确数量的 Wannier 函数
num_iter = 100
iprint = 2
num_dump_cycles = 10
num_print_cycles = 10
dis_froz_max = 1 !CHANGE!原来没有这个量,能隙内的冻结窗口,设置最大能量,使用练习 1 中获得的能带图来获取这个值。
dis_win_max = 17 !CHANGE!原来没有这个量,将解缠结的最大能量(标志 dis_win_max)设置为足够大的能量,以便为每个 k 点包含足够的带; 17.0 eV 应该是一个合理的值(检查该值在能带图中的位置)。
!! To plot the WFs
! restart = plot
wannier_plot = true
wannier_plot_supercell = 3
! wannier_plot_list = 1,5
!! To plot the WF interpolated bandstructure
bands_plot = true
begin kpoint_path
L 0.50000 0.50000 0.5000 G 0.00000 0.00000 0.0000
G 0.00000 0.00000 0.0000 X 0.50000 0.00000 0.5000
end kpoint_path
!! !! Bond-centred s-orbitals
!CHANGE!
!!将晶胞中每个 Si 原子的投影更改为 4 sp3 轨道
begin projections
Si:sp3
end projections
begin atoms_frac
Si -0.25 0.75 -0.25
Si 0.00 0.00 0.00
end atoms_frac
begin unit_cell_cart
bohr
-5.10 0.00 5.10
0.00 5.10 5.10
-5.10 5.10 0.00
end unit_cell_cart
mp_grid = 4 4 4 !nscf用的那个网格
begin kpoints
XXX
end kpoints
剩下的正常运行
03_输出检查
1.收敛标志
<<< Disentanglement convergence criteria satisfied >>>
2.