er模型在哪里构建:wannier90构建紧束缚模型教程
er模型在哪里构建:wannier90构建紧束缚模型教程《graph.py程序: 石墨烯紧束缚模型》《确定Wannier90能量窗口的脚本》学术之友公众号先前也推送了数篇wannier90和紧束缚模型相关的文章。《Wannier90安装以及与VASP5.4.1接口安装》《Wannier90教程 (来源于PRL支持材料)》
首先,感谢新老朋友们。你们的支持是老王继续写作的不竭动力。
两周前,老王写了两篇VASP wannier90 构建紧束缚模型的文章。
《一文搞定VASP wannier90构建紧束缚模型》
《VASP wannier90 构建紧束缚模型(补充)》
学术之友公众号先前也推送了数篇wannier90和紧束缚模型相关的文章。
《Wannier90安装以及与VASP5.4.1接口安装》
《Wannier90教程 (来源于PRL支持材料)》
《确定Wannier90能量窗口的脚本》
《graph.py程序: 石墨烯紧束缚模型》
大家对这方面比较感兴趣,想让老王更一下QE wannier90构建紧束缚模型的文章。
今天老王就来说一说,有说的不到位的地方,还请大家文末留言多多交流和指教。另外学术之友公众号长期有偿征集理论计算入门干货教程,投稿邮箱734915365@qq.com。
1. 安装编译
以QE 6.5和wannier90 3.0 为例。
首先,下载安装包:q-e-qe-6.5.tar.gz ;wannier90-3.0.0.tar.gz
QE: https://github.com/QEF/q-e/releases/tag/qe-6.5
Wannier90: http://www.wannier.org/download/
解压:
tar -zxvf q-e-qe-6.5.tar.gz
安装QE到指定目录下
./configure --prefix=/指定目录
make all -j12 # -j12 代表12核并行编,可以视服务器情况修改
然后,将wannier90 3.0 压缩包拷贝到QE安装目录的archive下,并且命名为v3.0.0
cp wannier90-3.0.0.tar.gz QE/archive/v3.0.0
接着,进入QE安装目录
make w90
安装完毕。
2. 构建紧束缚模型
构建紧束缚模型需要四步:
-
用pw.x运行计算自洽(scf)和非自洽(nscf)
-
运行wannier90.x -pp 生成 seedname.nnkp (前提有.win文件)
-
运行pw2wannier90.x读入pw输出文件、seedname.pw2wan(接口文件seedname.win和seedname.nnkp 生成seedname.mmn seedname.amn和seedname.eig
-
运行wannier90.x得到能带(这部分和VASP是相同的)
2.1 自洽计算和非自洽计算
以wannier90 example中example11为例。
Silicon.scf:如果拷贝,请去掉#后的内容再计算
Silicon
&control
calculation = 'scf'
restart_mode = 'from_scratch'
prefix = 'si' #si.save 中的si
tprnfor = .true.
pseudo_dir = '../../pseudo/' #指定赝势
outdir = './' # si.save 的位置
iprint = 2
/
&system
ibrav = 2 #晶格类型
celldm(1) = 10.2 #晶格常数 单位bohr
nat = 2 #原子总数
ntyp = 1 #原子类型数
ecutwfc = 25.0 #截断能,单位Ry
/
&electrons
conv_thr = 1.0d-12 #电子收敛精度
diagonalization = 'cg' #电子优化算法
/
ATOMIC_SPECIES
Si 28 Si.pbe-n-van.UPF #指定赝势文件
ATOMIC_POSITIONS {crystal} # crystall 为分数坐标
Si -0.25 0.75 -0.25 # Si的位置
Si 0.00 0.00 0.00
K_POINTS {automatic} # 自动生成k点
20 20 20 0 0 0
silicon.nscf: 如果拷贝,请去掉#后的内容再计算
Silicon
&control
calculation = 'nscf' # 修改这里
prefix = 'si'
pseudo_dir = '../../pseudo/'
outdir = './'
iprint = 2
verbosity = 'high' #输出本征值
/
&system
ibrav = 2
celldm(1) = 10.2
nat = 2
ntyp = 1
ecutwfc = 25.0
nbnd = 12 #设定能带数
/
&electrons
conv_thr = 1.0d-12
diagonalization = 'cg'
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}
512
0.00000000 0.00000000 0.00000000 1.953125e-03
0.00000000 0.00000000 0.12500000 1.953125e-03
...
...
0.87500000 0.87500000 0.75000000 1.953125e-03
0.87500000 0.87500000 0.87500000 1.953125e-03
非自洽nscf文件中k点生成方法:
kmesh.pl 8 8 8 > kpoint
kmesh写出在kpoint下。kmesh.pl脚本来自wannier90软件的uitility文件夹下。
2.2 运行wannier90.x -pp seedname
文件夹下准备silicon.win文件,运行如下命令 (silicon.win 请见example11文件夹)
wannier90.x -pp silicon
生成silicon.nnkp文件。
win文件的k点同样可以用mesh.pl生成,命令为
kmesh.pl 8 8 8 wan > kpoint-wan
这里解释一下win文件的投影部分
num_bands = 12
begin projections
!! !! Bond-centred s-orbitals # f= x,y,z 指定s轨道中心位置
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
!! !! Atom-centred sp3-orbitals #原子中心的投影,直接指定原子
Si:sp3
end projections
!! (1) Valence bands #考虑价带
!! num_wann = 4
!! select_projections 1 2 3 4 #选择投影能带,这里选择了前四条,也就是四个s轨道
!! dis_froz_max = 6.5
!! dis_win_max = 6.5
!! (2) Valence conduction bands #考虑导带和价带,这里选择后8条,也就是sp3杂化的能带
num_wann = 8
select_projections 5-12
dis_froz_min = -1.5
dis_froz_max = 9.5
dis_win_max = 20.0
2.3 pw2wannier90.x
运行如下文件完成投影
&inputpp
outdir = './'
prefix = 'si' # 对应si.save
seedname = 'silicon' # 对应silicon.win
write_amn = .true.
write_mmn = .true.
/
投影后会生成silicon.amm silicon.mmn,silicon.eig三个文件.
2.4 运行wannier90.x 得到能带
.win文件中能带路径为:
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.50000 0.0000
X 0.50000 -0.50000 0.0000 G 0.00000 0.00000 0.0000
end kpoint_path
运行
wannier90.x silicon &
能带文件为silicon_band.dat
2.5 DFT能带计算
silicon.band
Silicon
&control
calculation = 'bands' # 修改这里
prefix = 'si'
pseudo_dir = '../../pseudo/'
outdir = './'
iprint = 2
verbosity = 'high' #输出本征值
/
&system
ibrav = 2
celldm(1) = 10.2
nat = 2
ntyp = 1
ecutwfc = 25.0
nbnd = 12 #设定能带数
/
&electrons
conv_thr = 1.0d-12
diagonalization = 'cg'
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} #注意这部分的修改
5
0.50000 0.50000 0.5000 50 # L
0.00000 0.00000 0.0000 50 # G
0.50000 -0.50000 0.0000 50 # X
0.00000 0.00000 0.0000 1 # G
2.6 DFT能带数据导出
band.in文件如下:
&BANDS
prefix = "si"
outdir = "./"
!filband = "band.dat"
!lsym = .true.
/
能带文件为bands.out.gnu
将两个能带文件一起绘图即可。
注意:要在example11原文件基础上修改k点密度。下面是老王将4x4x4改成8x8x8的结果。明显8x8x8会更好。
运行命令汇总:
mpirun -n 4 pw.x < silicon.scf > silicon.scf.out
mpirun -n 4 pw.x < silicon.nscf > silicon.nscf.out
wannier90.x -pp silicon
mpirun -n 4 pw2wannier90.x < silicon.pw2wan > silicon.pw2wan.out
wannier90.x silicon
mpirun -n 4 pw.x < silicon.band > silicon.band.out
mpiexec -n 4 bands.x < band.in
3. 磁性材料计算
磁性非自旋轨道耦合体系计算和之前介绍vasp中一样,自旋向上和自旋向下是分开的,需要两个win文件,具体参考wannier90里的example08。
iron_up.pw2wan : 对应 iron_up.win
&inputpp
outdir = './'
prefix = 'Fe'
seedname = 'iron_up'
spin_component = 'up'
write_mmn = .true.
write_amn = .true.
/
iron_down.pw2wan : 对应 iron_dn.win
&inputpp
outdir = './'
prefix = 'Fe'
seedname = 'iron_dn'
spin_component = 'down'
write_mmn = .true.
write_amn = .true.
/
4. 自旋轨道耦合计算
VASP中自旋轨道耦合除了INCAR文件中的LSORBIT=TRUE以外,还需要vasp_ncl执行文件。而QE中计算自旋轨道耦合除了输入文件中添加 lspinorb=.true. ;noncolin=.true. 以外,还需要相应的考虑自旋轨道耦合的赝势。
赝势文件是不是考虑了自旋轨道耦合可以打开赝势文件,查看has_so参数。
has_so="T" 加自旋轨道耦合的赝势
has_so="F" 不加自旋轨道耦合的赝势
感兴趣的可以在下面的网址找找。
http://www.quantum-espresso.org/pseudopotentials/ps-library/si
下面这个赝势库中,SR为不加自旋轨道耦合,FR为加自旋轨道耦合.
http://www.pseudo-dojo.org/
5. 如何学好
更多wannier90功能学习,请把wannier90给的案例重复一遍。多多讨论,多多思考。