目录

石墨烯中自旋分辨的Bloch态

石墨烯纳米带(GNRs)对于新奇电子学应用是很有意思的体系。根据带边的形状,纳米带可以具有金属特性或者半导体特性。我们在本实例中将看到(正如从文献[SCL06]中所被大家熟知),自旋也对GNRs的输运性质起到一个很重要的作用。

您将使用VNL和QuantumATK的功能来研究一个锯齿形GNR的自旋分辨能带结构。如果执行计算不考虑自旋这些纳米带是金属的,但当考虑自旋时会打开一个能隙。通过绘出不同k点的导带和价带的Bloch态,您将看到两个自旋分量如何定域于纳米带的两侧。

提示

本实例包括的计算在普通笔记本电脑上最多花费5-10分钟,所以没有必要使用独立的服务器或者使用并行计算来运行任务。

这里假定您对软件中的基本操作熟悉到对应于完成基础VNL和QuantumATK实例中得到的经验水平。没必要精通编程。

锯齿形纳米带的能带结构

我们将以构造一个石墨烯zigzag纳米带和计算能带结构作为开始。自旋将在下一个部分添加。

构造石墨烯纳米带

开启VNL,创建一个新的项目并命名,然后选择它并点击Open。点击工具栏上的Builder按钮 来启动Builder。

在Builder中,点击Add ‣ From Plugin ‣ Nanoribbon。这启动石墨烯带构建工具。

保留所有参数为默认值并点击Build。

重复被自动地设置为最小值。这减少了计算时间并使得能带结构的分析更容易。

垂直纳米带方向有周期性边界条件,单胞的填充距离自动设置为10Å,以减少纳米带周期构象的剩余静电相互作用。

计算石墨烯能带结构

现在通过点击窗口右手边下角落的“发送”按钮 将结构送至Script Generator,并从弹出菜单中选择Script Generator(默认选项,粗体高亮)。 在Script Generator中,

Script Generator现在看起来应像这样:

双击打开New Calculator

多数默认参数是足够好的,但其中一些需要调整。

在C方向选择50个k点。 这是计算时间和精度的一个很好的权衡。沿着横向A和B方向您只需要一个k点,因为系统在这些方向不是周期性的。

计算器对话应该有如下的设置

为了指定能带结构计算,双击Bandstructure模块。

提示!

当设置脚本时,标签“G”在QuantumATK(和VNL)中被用来指定$\Gamma$点。在能带结构绘图中,正确的希腊标签将会被显示(见下)。

现在通过点击按钮 并在弹出菜单选择Job Manager来运行计算。将Python脚本以一个合适的名字保存,比如gnr_bandstructure.py并点击OK。

在Job Manager中,点击开始按钮 来运行任务;完成计算仅需花费几秒。

分析结果

返回VNL主窗口。文件gnr_bandstructure.nc现在应在左列“Project Files”中可见。在中间列,叫做LabFloor,选择Group by Item Type

在LabFloor上,您可以看到文件包含两项:计算的Bandstructure和BulkConfiguration本身。后一项不仅包括了几何构型,也包括了计算的完整状态。我们将在下一章使用这个来计算Bloch函数,而并不必须要重新运行自洽计算。对此,您将需要知道BulkConfiguration的Id,它显示于文件名后;在这里它是gID000。 现在,为了绘出能带结构,选择Bandstructure项(gID001),并点击在右侧插件面板上的Bandstructure Analyzer按钮。

结果绘图如下图所示。注意对于高kz值的导带和价带是如何粘在一起的。这是锯齿形纳米带(在我们的模型中)一个典型特征并明显地使我们的纳米带呈现金属性。

图89 一个锯齿形石墨烯纳米带的能带结构。在$\Gamma$点的带隙约为5eV,但在Z点完全关闭。

Bloch态

在QuantumATK中一个非常有用的特点是它计算和绘出Bloch态的能力,这可被用来研究特定能带的对称性和如何与输运性质相联系。您现在将使用这个性能来看接近$\Gamma$点的Bloch态如何非定域化地穿过纳米带,与此同时具有高kz的态向边界更加局域化。

纳米带在每个单胞中包括8个碳原子和2个氢原子。一个碳原子贡献4个价电子(2s22p22)而氢原子只贡献一个(1s)。所以在体系中有34个电子。每条能带是双重简并(由于自旋)所以将会有17条价带。从0开始数,最高价带的能带指数是16而最低导带的指数将为17。

设置计算

您现在将设置一个脚本来计算这两条能带在三个不同k点的Bloch函数。纳米带的自洽态被保存于gnr_bandstructure.nc文件中,您可以为这个分析恢复它,而不是再度运行自洽循环。这是一个非常便捷的方法来分开实际的自洽计算-对此您也许喜欢在一个集群上运行(至少对于一个更大的体系),和通常需要更少资源并可以通过在VNL中的Job Manager直接运行的后续分析。

现在,我们需要设置Bloch态的计算。

Script Generator窗口现在看起来如下:

分别双击前三个Bloch state按钮,在Quantum number中键入16(也就是能带指数),但分别给它们不同的k点:

在第二个实例中,BlochState窗口看起来应如下图:

对剩下的三个Bloch state按钮重复此过程,但这次键入17作为Quantum number的值。 最后,像之前,将任务送至Job Manager并开始任务的执行。

提示!

这个计算非常快,但产生的NetCDF文件将会非常大(大约120Mb),这就是为什么数据被保存在一个分开的文件中。通过这种方法,我们避免包含自洽计算的初始文件过大(如果您想做一些其他的分析,过大会使得对它的读取变慢)。

分析结果

当任务完成时,返回主VNL窗口。gnr_bloch.nc的结果应自动地被包含在LabFloor中(看到gnr_bloch.nc在Project Files中是被选中的)。选择按照Item Type来分组并展开BlochState模块。

点击六个当中的最后一个BlochState项(gnr_bloch.nc gID005)并选择Viewer,在点击OK前确保Plot type为Isosurface。为其它项做同样的操作,继续做gID004,直到全部6项在Viewer窗口中显示。现在,在Viewer窗口顶部的菜单中选择Scenes ‣ Tile,以便整齐地排列这些绘图。注意到这些绘图现在以在左上角最新的窗口排列出,意味着我们使价带在顶排而使导带在底排,伴随着gamma点在左边和Z点在右边。

提示!

您也可以通过拖放来添加随后的Bloch state项到Viewer窗口。然而,在本例中您需要确保不要将项放到已存的绘图上,因为这将添加到已存绘图上而不是创建出一个分开的绘图。

为了调整每幅图的性能,点击菜单右边的Properties。这必须对每个窗口分别地完成。

下面是在viewer中显示的6个不同Bloch态的可视化。上面三个的quantum number是16而下面三个是17,从左到右的k点坐标为: (0,0,0),(0,0,0.35)和(0,0,0.5)。

图90 从左到右:$\Gamma$点,k=0.35,和Z点。上下两排分别展示了价带和导带。(您可能在您的图片中得到与此图像相差\pi的一个相差;当然,这没有物理相关性)

观察各自的Bloch函数,首先注意在G和Z点的波函数是实数(正如预期),其次在价带和导带Bloch函数之间有一个明显的不同。占据的价带态显现为在纳米带方向“连接”,而非占据的导带态更导向于穿越纳米带。在Z点, 态逐渐朝向纳米带边缘局域化。

在下一个部分,您将看到在Z点附近自旋如何劈裂简并,和两个自旋态如何在相对边缘变得局域化。

提示!

为了纳米带的几何构型叠加在绘图上,从文件gnr_bandstructure.nc将BulkConfiguration项拖到打开的Viewer窗口中的一个BlochState窗口上。

引入自旋

设置计算

您现在将包含自旋极化重做整个计算。工作流程非常相似,这次仅概述各个步骤。

  1. 像您做能带结构计算一样设置计算:去往builder并将石墨烯纳米带送到Script Generator(builder的stash中应仍然包含上次的石墨烯纳米带)。
  2. 添加一个New Calculator并如之前一样设置参数(SingleZetaPolarized基组和(1,1,50)的k点)。此外,在New Calculator对话窗口中,设置自旋为Polarized并检查交换关联函数被自动变为LSDA。
  3. QuantumATK中默认伴随一个对称的初始自旋密度来开始一个自旋极化计算。然而,在本例中,这将导致对应于一个对称(铁磁)态的一个局部最小值。为了得到真实的石墨烯纳米带的反铁磁基态我们必须为纳米带两个边缘的初始自旋构型设置为相反的极化(中间的碳原子和氢原子可以被保留“非极化”)。

设置系统的初始自旋态:

提示!

如果您对系统的自旋态一无所知,您可以选择Random spin。它在每个原子上设置一个随机自旋,依据这些随机值,系统可能收敛于不同的系统自旋态。具有最低总能量的自旋态是基态。

4.为自旋极化计算添加一个Bandstructrue计算并再次设置Points pr.segment为200。

5.这次,您也需要在开始就包含Bloch态以使所有内容在一个脚本中完成。对于接下来的分析,只计算Z点的Bloch函数就已经足够了。添加两个Bloch state按钮都定义在Z点(0,0,1/2)。使其中一个的Quantum number为16,另一个为17。

6.之后我们也需要电荷密度,所以也添加一个Analysis‣ElectronDensity项。

7.另一个查看自旋密度的方法是通过密立根布居,所以也添加一个Analysis‣MullikenPopulation项。

8.然后为在Script Generator窗口中的计算的输出文件设置名字为gnr_spin.nc。Script Generator窗口现在应该看起来如下图所示。

9.将脚本送至Job Manager并运行计算。

分析结果

通过检查计算日志的“DD”列您将看到,通过求和条目,这个系统没有总自旋极化(总自旋向上和向下都为17),这非常合理;碳不是磁性的。

通过绘图,您也可以观察到在能带结构中没有自旋相关;上下态是完全简并的(否则您会在能带结构绘图中看到蓝色曲线和红色曲线)。

然而,包含了自旋的确对能带结构有一个极大的影响。之前在kz=0.5的导带和价带的简并被破坏,一个带隙被打开。

绘出在Z点对应的Bloch态并对这两个BlochState项分别选择绘出自旋向上和向下。如果您像之前章节一样调整视图性能,您会清楚地看到两个自旋价态局域在纳米带的两侧边缘。导带态表现完全类似,但是相比于价带态局域在相反的边缘。

图91 Z点最高价带(底部)和最低导带(顶部)的自旋向上(右)和自旋向下(左)态。

电荷密度和密立根布居

由于向上和向下Bloch态局域在相反的侧边,总自旋向上和向下电荷密度必然有所不同。

密立根布居是初看这个性能的最简单的方法,通过选择LabFloor上的MullikenPopulation项并选择右边的Text Representation…,查看起来最便利。结果窗口显示如下。在“Total”列,两个自旋通道被显示在分开的行,并且我们发现两个边缘碳原子(序号0和1)对要么自旋向上要么自旋向下有一个0.25的盈余布居。

您也可以选择绘出自旋差分密度,$\rho_{\uparrow} - \rho_{\downarrow}$或者自旋向上和自旋向下归一化差分密度,$\rho_{\uparrow} - \rho_{\downarrow}) / (\rho_{\uparrow} + \rho_{\downarrow}$。

您需要的所有信息都包含在保存于文件gnr_spin.nc中的ElectronDensity项。

绘出自旋密度

首先我们绘出直接的自旋差分密度。选择在LabFloor上的ElectronDensity项并点击Viewer。去往properties并选择Isovalue为0.01,Color map为BlueRed,并打钩底部的±Isovalue。窗口现在看起来应如下图所示。

如果您也想之前所述的那样将块体构型重叠上,您应得到如下所示的绘图。

为了绘出归一化自旋差分密度,去往LabFloor并在gnr_spin.nc文件中选择ElectronDensity并点击Grid Operations。这里,您可以看到元素包含于ElectronDensity项中并被标记为一个别名。在f(x)区域您现在可以写入任何数学表达式。在这个例子中写入 (A3-A4) / A1。最后,将结果保存到一个新文件叫normalized_spin_difference.nc

注意!

您可以通过按住Ctrl键并点击Grid Operations来选择多于一个项展示于LabFloor中。通过这种方法您将可以在不同的计算所设置的不同的数据上进行操作。然而,注意网格的维度必须相同而且网格单位的表达必须一致。

新的文件将会出现在LabFloor中。选中它并使用Viewer绘出该内容。为了得到一个更好的视图,打开右手侧菜单的Properties。再一次,打钩底部的±Isovalue,改变右上角的Isovalue为0.02,改变color map为BlueRed。

您也可以对沿着x轴(垂直石墨烯片)的自旋极化求平均值。接下来的脚本将产生如下绘图(比较[eal06]中的Fig.2b),使用QuantumATK中整合的matplotlib模块。

density_average.py

将脚本送到Job Manager,它将产生绘图。绘图将被保存在文件av.png中。

图92 平均自旋极化密度。填充的圆表示原子的位置。

参考文献

[eal06] Y. W. Son et al. Nature, 444():347, 2006. doi:.

[SCL06] Y. W. Son, M. L. Cohen, and S. G. Louie. Physical Review Letters, 97():216803, 2006. doi:.

本文翻译:王吉章