首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VASP实用教程:铂-自旋霍尔电导率

本文为由小强撰写的《VASP实用教程》第58篇,全系列约60篇,将在近期陆续更新。

概要:计算自旋霍尔电导率(SHC)并绘制考虑自旋-轨道耦合的fcc铂的贝里曲率样项。为了更好地理解这个例子,建议阅读参考文献[1]中对理论的详细描述和用户指南的第12.5章。

目录:examples/example29/

输入文件

– Pt.scf 用于基态计算的PWSCF输入文件

– 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计算MLWFwannier90.x Pt

【6】运行postw90postw90.x Pt (串行执行)mpirun -np 8 postw90.x Pt (8个MPI进程并行执行的例子)

自旋霍尔电导率

本征自旋霍尔电导率与贝里曲率类项的BZ积分成正比。为了使用25×25×25的k点网格评估SHC,需要在Pt.win中设置以下几行berry = trueberry_task = shcberry_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> gnuplotgnuplot> plot ‘Pt-shc-fermiscan.dat’ u 2:3 w lp由于贝里曲率类项在整个BZ上的强烈而快速的变化,SHC在k点采样时收敛得相当慢,25×25×25 kmesh并不能产生一个良好的收敛值。-通过改变berry_kmesh来增加kmesh密度。-为了加速收敛,通过在Pt.win中加入以下几行,在Berry曲率项的峰值周围自适应地细化kmeshberry_curv_adpt_kmesh = 5berry_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。因此,应相应增加以下参数

dis_froz_maxdis_win_maxprojections

通常我们计算SHC ,即α= x,β= y,γ= z。要计算其他成分,可将以下参数设置为1,2,3

shc_alpha = [insert here the direction]shc_beta = [insert here the direction]shc_gamma = [insert here the direction]1,2,3分别代表x,y,z。

贝里曲率样项图

在《用户指南》的公式(12.22)中定义了能带投影的贝里曲率样项。Pt.win文件中的以下几行命令用于计算由能带投影贝里曲率样项着色的能带(以Å2为单位),以及沿k空间高对称线的k-resolved贝里曲率样项,即k路径图。首先注释线berry = true,然后设置kpath = truekpath_task = bands+shckpath_bands_colour = shckpath_num_points = 400kubo_adpt_smr = falsekubo_smr_fixed_en_width = 1fermi_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 = truekslice_task = shc+fermi_lineskslice_corner = 0.0 0.0 0.0kslice_b1 = 1.0 0.0 0.0kslice_b2 = 0.3535533905932738 1.0606601717798214 0.00kslice_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

SHC的输入参数

最后,我们提供了一个完整的输入参数列表,可用于控制SHC计算,包括在下一个教程中介绍的交流SHC的计算。

SHC的常规控制

shc_freq_scan, shc_alpha, shc_beta, shc_gamma,kubo_eigval_max, exclude_bands, berry_curv_unit

kmesh

berry_task, berry_kmesh,berry_curv_adpt_kmesh, berry_curv_adpt_kmesh_thresh

ac SHC

kubo_freq_min, kubo_freq_max, kubo_freq_step,shc_bandshift, shc_bandshift_firstband, shc_bandshift_energyshift,scissors_shift, num_valence_bands

smearing

[kubo_]adpt_smr, [kubo_]adpt_smr_fac, [kubo_]adpt_smr_max,[kubo_]smr_fixed_en_width

Fermi energy

fermi_energy, fermi_energy_min, fermi_energy_max, fermi_energy_step

kpath

kpath, kpath_task, kpath_num_points, kpath_bands_colour

kslice

kslice, kslice_task, kslice_corner, kslice_b1, kslice_b2, kslice_2dkmesh,kslice_fermi_level, kslice_fermi_lines_colour它们的含义和用法可以在《用户指南》第11.5章中找到。参考文献[1] J. Qiao, J. Zhou, Z. Yuan, and W. Zhao, Phys. Rev. B 98, 214402 (2018).

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OpGoPpRtLms3W0v83ROCDmxg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券