本文为由小强撰写的《VASP实用教程》第58篇,全系列约60篇,将在近期陆续更新。
- 概要:计算自旋霍尔电导率(SHC)并绘制考虑自旋-轨道耦合的fcc铂的贝里曲率样项。为了更好地理解这个例子,建议阅读参考文献[1]中对理论的详细描述和用户指南的第12.5章。
- 目录:examples/example29/
- 输入文件
– Pt.nscf 在统一网格上获得Bloch状态的PWSCF输入文件
– Pt.pw2wan pw2wannier90的输入文件
– Pt.win wannier90和postw90的输入文件
【1】运行PWSCF以获得铂的基态。
pw.x < Pt.scf > scf.out
【2】运行PWSCF以获得统一k点网格上的Bloch状态
pw.x < Pt.nscf > nscf.out
【3】运行wannier90,生成所需的重叠列表(写入Pt.nnkp文件中)
wannier90.x -pp Pt
【4】运行pw2wannier90来计算Bloch状态和初猜的投影之间的重叠(写在Pt.mmn和Pt.amn文件中)。
pw2wannier90.x < Pt.pw2wan > pw2wan.out
【5】运行wannier90计算MLWF
wannier90.x Pt
【6】运行postw90
postw90.x Pt (串行执行)
mpirun -np 8 postw90.x Pt (8个MPI进程并行执行的例子)
自旋霍尔电导率
本征自旋霍尔电导率与贝里曲率类项的BZ积分成正比。为了使用25×25×25的k点网格评估SHC,需要在Pt.win中设置以下几行
berry = true
berry_task = shc
berry_kmesh = 25 25 25
在计算SHC时,可以通过注释以下两行来使用自适应‘smearing’法
#kubo_adpt_smr = false
#kubo_smr_fixed_en_width = 1
然后将费米能量εF设定为一个特定值
fermi_energy = [insert your value here]
或者通过以下设置来调用Fermi能量
fermi_energy_min = [insert here your lower range]
fermi_energy_max = [insert here your upper range]
fermi_energy_step = [insert here your step]
并重新运行postw90。SHC被写入输出文件Pt-shc-fermiscan.dat中。如果只设置了fermi_energy,输出文件将包含这个特定能量的SHC;如果设置了一个Fermi能量的列表,输出文件将包含在列表中每个能量点计算的SHC:我们称之为SHC的“Fermi能量扫描”。
绘制SHC vs εF的“Fermi能量扫描”,需要通过以下命令实现
myshell> gnuplot
gnuplot> plot ‘Pt-shc-fermiscan.dat’ u 2:3 w lp
由于贝里曲率类项在整个BZ上的强烈而快速的变化,SHC在k点采样时收敛得相当慢,25×25×25 kmesh并不能产生一个良好的收敛值。
-通过改变berry_kmesh来增加kmesh密度。
-为了加速收敛,通过在Pt.win中加入以下几行,在Berry曲率项的峰值周围自适应地细化kmesh
berry_curv_adpt_kmesh = 5
berry_curv_adpt_kmesh_thresh = 100.0
通过以上命令在超过100个berry_curv_unit的点周围添加了5×5×5的精细网格。触发自适应细化的点的百分比会写入Pt.wpout文件中。
将收敛的SHC值与参考文献[19]和[20]中得到的SHC值进行比较。
注意Pt.wpout文件中给出了一些对计算进度和时间的粗略估计(见解决方案手册的SHC部分)。如果计算时间非常长,这些可能会有帮助。
注
- 由于SHC的Kubo公式涉及到未被占用的带,我们需要包括一些未被占用的带并构建更多的MLWF。因此,应相应增加以下参数
- 通常我们计算SHC ,即α= x,β= y,γ= z。要计算其他成分,可将以下参数设置为1,2,3
贝里曲率样项图
在《用户指南》的公式(12.22)中定义了能带投影的贝里曲率样项。Pt.win文件中的以下几行命令用于计算由能带投影贝里曲率样项着色的能带(以Å2为单位),以及沿k空间高对称线的k-resolved贝里曲率样项,即k路径图。首先注释线berry = true,然后设置
kpath = true
k
path_task = bands+shc
kpath_bands_colour = shc
kpath_num_points = 400
kubo_adpt_smr = false
kubo_smr_fixed_en_width = 1
f
ermi_energy = [insert your value here]
berry_curv_unit = ang2
在执行postw90后,会产生四个文件。Pt-band.dat, Pt-path.kpt, Pt-shc.dat 和 Pt-band+shc.py。然后用运行时生成的脚本绘制能带投影的贝里曲率样项。
myshell> python Pt-bands+shc.py
并与文献[1]中的图2进行比较。请注意,为了重现文献[1]中的结果,使用了1eV的“large fixed smearing”。可以根据自己的需求调整kubo_smr_fixed_en_width的值,以画出一个有视觉吸引力的图。一个0.05 eV“smearing”的kpath图在“Solution Booklet”中显示。
此外,可以设置kpath_task = shc,只画出k-resolved项(图中的下部分),或者设置kpath_task = bands和kpath_bands_colour = shc,只画出由能带投影项着色的能带(图中的上部分)。
与AHC的情况类似,我们可以得到一个类似于贝里曲率的k-resolved项的热图,也就是kslice图。为了更进一步,设置kpath = false,并取消对Pt.win中以下几行的注释
kslice = true
kslice_task = shc+fermi_lines
kslice_corner = 0.0 0.0 0.0
kslice_b1 = 1.0 0.0 0.0
kslice_b2 = 0.3535533905932738 1.0606601717798214 0.00
kslice_2dkmesh = 200 200
注意kslice_b2实际上是(,,0.0),这导致了BZ中的一个正方形切片,使得它更容易在生成的python脚本中绘图。重新运行postw90,并发出
myshell> python Pt-kslice-shc+fermi_lines.py
将生成的图与文献[19]中的图3进行比较。或解决“Solution Booklet”。
注
自适应“smearing”依赖于均匀的kmesh,所以在运行kpath和kslice图时,不应该使用自适应“smearing”。需要使用固定“smearing”,以避免Kubo公式的分母接近零数,用户指南中的公式(12.22)。要添加一个0.05eV的固定“smearing”,请在Pt.win文件中添加以下关键词
kubo_adpt_smr = .false.
kubo_smr_fixed_en_width = 0.05
S
HC的输入参数
最后,我们提供了一个完整的输入参数列表,可用于控制SHC计算,包括在下一个教程中介绍的交流SHC的计算。
- SHC的常规控制
- kmesh
- ac SHC
- smearing
- Fermi energy
- kpath
- kslice