脚本文件下载:
金是较重的元素之一。体相的金,其电子结构受到相对论效应,包括自旋轨道耦合(SOC)的显著影响。
金的相对论能带结构从头计算首次发表于70年代早期1)2)3) 这些研究,以及后来的研究都表明,相对论效应导致金的电子能带发生了明显的重构。特别是标准GGA计算的深价带的能带交叉,大部分被相对论效应消除了。本例将示范ATK-DFT使用标准的标量相对论GGA计算和旋轨耦合相对论计算金的能带结构。
使用VNL中Builder创建金块体结构:通过Add ‣ From Database导入。保持晶格常数为实验值4.078Å。
进入Script Generator,设置标准的GGA-PBE能带计算,使用OMX赝势: 首先,双击添加一个New Calculator,以及一个Bandstructure,并且设置输出文件名为gold_gga.nc,如下图所示:
编辑New Calculator设置:
在Basis set/exchange correlation菜单选择GGA-PBE交换相关泛函,以及OMX赝势,Medium精度基组,如下图所示:
在Basis菜单选择Density mesh-cutoff到300Hartree,k-point采样增加到9x9x9:
编辑Bandstructure设置:
设置Points per segment为101,这样高对称点之间的能带很光滑;Brillouin zone route设置为G, X, W, L,
保存脚本的名为gold_gga.py,通过Job Manager运行。如果是单线程计算的话,耗时约一分钟左右。
结果:
在VNL LabFloor中找到输出文件的Bandstructure项,并使用Bandstructure Analyzer作图。结果如下图所示:
与文献2)和文献3)的结果非常相似。金显然不是绝缘体,有很多能带穿越费米线。同样值得注意的是,费米能以下更深的价带(-2eV到-5eV之间)区域存在大量的能带交叉。我们可以看到,这些交叉在考虑自旋轨道耦合之后,大部分会消失。
下面演示使用GGA泛函计算包含自旋轨道耦合的能带结构。电子的自旋必须设置为非共线。这样比标准的GGA计算耗时更大,并且不容易收敛。可以使用两个方法来解决:a) 从自旋极化的计算结果(SGGA)开始计算;b)使用电子密度混合的方法。
注意: 我们知道金是没有磁性的,因此对金进行自旋极化的计算实际上看起来有些傻瓜。这样得到的结果和共线、自旋补偿计算的到的结果是一致的。 实际上,和自旋补偿态的结果相比,收敛的自旋极化的计算结果,能够给非共线旋轨耦合态提供一个好得多的初始猜测。如果从自旋极化电子态出发,非共线的自洽迭代只需要少量几步就能收敛,从而能够大大节省计算时间。
SGGA初始态:
需要设置两个选项,来进行SGGA计算: a.使用Scripter:和上一节的设置完全一致,但Basic菜单中Spin项改为Polarized,删除Scripter栏的Bandstructure项,输出文件名字设置为gold_sgga.nc,保存脚本名为gold_sgga.py。
b.使用Editor:拷贝gold_gga.py到gold_sgga.py,并在Editor中打开gold_sgga.py,做少量的修改:设置交换相关泛函为SGGA.PBE,删除最后面,计算能带结构的几行,修改输出文件名字为gold_sgga.nc。修改后的脚本如下:
# ------------------------------------------------------------- # Bulk Configuration # ------------------------------------------------------------- # Set up lattice lattice = FaceCenteredCubic(4.07825*Angstrom) # Define elements elements = [Gold] # Define coordinates fractional_coordinates = [[ 0., 0., 0.]] # Set up configuration bulk_configuration = BulkConfiguration( bravais_lattice=lattice, elements=elements, fractional_coordinates=fractional_coordinates ) # ------------------------------------------------------------- # Calculator # ------------------------------------------------------------- #---------------------------------------- # Basis Set #---------------------------------------- GoldBasis = OpenMXBasisSet( element=PeriodicTable.Gold, filename="openmx/pao/Au7.0.pao.zip", atomic_species="s2p2d2f1", pseudopotential=NormConservingPseudoPotential("normconserving/upf2/Au_PBE13.upf.zip"), ) basis_set = [ GoldBasis, ] #---------------------------------------- # Exchange-Correlation #---------------------------------------- exchange_correlation = SGGA.PBE numerical_accuracy_parameters = NumericalAccuracyParameters( k_point_sampling=(9, 9, 9), density_mesh_cutoff=300.0*Hartree, ) calculator = LCAOCalculator( basis_set=basis_set, exchange_correlation=exchange_correlation, numerical_accuracy_parameters=numerical_accuracy_parameters, ) bulk_configuration.setCalculator(calculator) nlprint(bulk_configuration) bulk_configuration.update() nlsave('gold_sgga.nc', bulk_configuration)
运行该脚本,速度应该非常快。注意将生成新的输出文件gold_sgga.nc,它只包含一个项目,也就是金的晶体结构,以及自洽的SGGA电子态,用于后面的计算。
SOGGA能带结构计算:
使用下面的脚本,完成工作流:
脚本如下:
# ------------------------------------------------------------- # Bulk Configuration # ------------------------------------------------------------- bulk_configuration = nlread('gold_sgga.nc', BulkConfiguration)[0] # ------------------------------------------------------------- # Calculator # ------------------------------------------------------------- # Use the special noncollinear mixing scheme iteration_control_parameters = IterationControlParameters( algorithm=PulayMixer(noncollinear_mixing=True) ) # Get the calculator and modify it for spin-orbit GGA calculator = bulk_configuration.calculator() calculator = calculator( exchange_correlation = SOGGA.PBE, iteration_control_parameters = iteration_control_parameters ) # Setup the initial state from the GGA calculation bulk_configuration.setCalculator( calculator, initial_state = bulk_configuration ) nlprint(bulk_configuration) bulk_configuration.update() nlsave('gold_sogga.nc', bulk_configuration) # ------------------------------------------------------------- # Bandstructure # ------------------------------------------------------------- bandstructure = Bandstructure( configuration=bulk_configuration, route=['G', 'X', 'W', 'L', 'G', 'K'], points_per_segment=101, bands_above_fermi_level=All ) nlsave('gold_sogga.nc', bandstructure)
保存该脚本名为gold_sogga.py,并运行计算。使用4核进行并行化计算,大约需要6分钟。注意QuantumATK并行计算需要使用MPI库,具体参考安装配置MPI并行环境。
结果:
下图为SOGGA计算得到的能带结构。与文献2)和文献3)的结果非常接近。实际上与文献4)的SOGGA能带结构是一致的。注意GGA计算中价带的大部分的能带交叉是如何解除的。
你可以使用Compare Data插件更直接的对比这两个能带(如下图所示)。同时高亮显示GGA能带和SOGGA能带,可以看到相对论效应对金的价带有显著影响。下图与文献4)中图6一致: