“通常的”(共线)自旋极化计算为电子态添加自旋量子数(上或下),除此之外,非共线自旋引入一些更多的概念-和可能性!-它可能不为每个人所熟悉。本实例由此为这些新概念提供了一个简单的介绍来解释它们,而此过程并不需要执行冗长的模拟运行。
您将在一个原子链上计算非共线透射谱,分析就密立根布居而言的电子结构,并最终计算自旋转移矩。
注意!
本实例假定您已完成实例Transmission spectrum of a spin-polarized atomic chain的计算。
提示!
非共线磁性指的是依赖于位置的自旋方向没有特别的方向所有的自旋是(反)平行的。
非共线自旋体系是相当普遍存在的,并包含螺旋自旋(比如铬),螺旋体,斜交自旋(比如锰氧化物),和最通常的铁磁材料中的畴壁。QuantumATK可以让您通过第一性原理来研究具有非线性自旋的体系,但它与熟悉的共线自旋的例子在技术上和概念上有很大差异。
认识到自旋非上即下这一熟知的概念-和所有导出量也被这个量子数标记-在一个非共线计算中并不起作用是很重要的。相反,一个原子的本征态是一个具有自旋向上和向下通道特定混合的自旋量,并且许多量-像透射谱-变为一个2×2矩阵而不是两个分开的数字(自旋向上和向下透射)。这也将在下面涉及。
提示!
更多细节请参考此专题的Technical Notes:TechNotes_Noncollinear.pdf
在实际中非共线计算另一个重要方面是它们比对应的自旋极化或非极化计算在总体上需要更多的时间和内存。SCF自洽也可能更难达到,由于电子态有更多的自由度。为了提高非共线计算的自洽速率,两个重要特性被执行于QuantumATK中:
使用这些技术,自洽循环所需的步数可以被大幅削减。
如上所述,对于非共线计算好的收敛的推荐近似是使用一个共线铁磁计算作为初始态。本实例由此使用实例Transmission spectrum of a spin-polarized atomic chain作为出发点。
打开VNL并创建一个新项目来开始。如果您没有做这个,完成之前提到的实例,或者至少共线(铁磁)计算,来产生文件 carbon_para.nc
。
实际计算耗时少于5分钟。
现在您将使用在这个文件中存储的自洽计算作为对于相同的共线一维碳链原子的一个非共线计算的出发点。然而这次,不仅可以研究反平行自旋构型(左电极上,右电极下),而且可以考虑两个电极之间任意角度旋转的自旋。
打开VNL Editor (或者您自己喜欢的编辑器)并将下列行的Python代码拷贝/粘贴在上面:
# Read in the collinear calculation device_configuration = nlread('carbon_para.nc', DeviceConfiguration)[0] # Use the special noncollinear mixing scheme iteration_control_parameters = IterationControlParameters( algorithm=PulayMixer(noncollinear_mixing=True) ) # Get the calculator and modify it for noncollinear LDA calculator = device_configuration.calculator() calculator = calculator( exchange_correlation = NCLDA.PZ, iteration_control_parameters = iteration_control_parameters ) # Define the spin rotation theta = 120*Degrees left_spins = [(i, 1, 0*Degrees, 0*Degrees) for i in range(3)] center_spins = [(i+3, 1, theta*i/5, 0*Degrees) for i in range(6)] right_spins = [(i+9, 1, theta, 0*Degrees) for i in range(3)] spin_list = left_spins+center_spins+right_spins initial_spin = InitialSpin(scaled_spins=spin_list) # Setup the initial state as a rotated collinear state device_configuration.setCalculator( calculator, initial_spin=initial_spin, initial_state = device_configuration ) # Calculate and save device_configuration.update() nlsave("carbon_nc120.nc", device_configuration)
对应左电极原子的自旋极化自旋设置指向沿着输运Z轴,而在右电极极化被旋转了120度(极角在一个XY面为赤道的坐标系中)。在中心区域,角度在这两个值之间被内插。注意这只是初始自旋构型-实际的自旋极化矢量将会被自洽地计算并可能由此改变(您可以在下面看到结果)。
注意!
电极自旋被隐含地设置在中心区域“电极拷贝”原子上,在本例中是前三个和末三个原子。
密立根布居可以通过Job Manager中的log窗口来进行查看:
您会立刻注意到与共线情形的差异:现在每个原子上的密立根布居被4个变量描述;“up”, “down”, “theta”和“phi”。上和下布居的总和依然对应密立根电荷(电子数),它们的差异-结合两个角度-形成一个自旋极化矢量,可以在VNL Viewer 中被可视化:
很显然自旋极化方向在电极两个数值之间平滑地变化。
观察log文件中的透射谱输出,您再一次看到它有四个分量;“up”, “down”, “real-up-down”和“imag-up-down”: 很显然最后一个自旋分量(“imag-up-down”)在这个简单体系中非常小,但它在自旋有其它方向的例子中通常是重要的。
为了绘出透射谱,打开Transmission Analyzer插件。所有4个透射分量都已经包含在图中:
很显然最后一个自旋分量(“imag-up-down”)在这个简单体系中非常小,但它在自旋有其它方向的例子中通常是重要的。
为了绘出透射谱,打开Transmission Analyzer插件。所有4个透射分量都已经包含在图中:
提示!
在窗口左上角的下拉菜单“Curves”使您选择包含哪条透射曲线(默认选项为Sum, X, Y, Z-您也可以添加Up/Down),而下面的“Active curve”选项是用来选择在右手边“Coefficients”图中显示哪条k点分辨谱(对于这个1D体系只有一个透射系数,在(kA,kB)=(0,0),所以对应的图是相对乏味的)。通过点击对应的透射曲线也可以进行选择。
这个透射谱与平行共线情况的很相似,与反平行共线情况的很不同。这也许很令人惊奇,因为电极的自旋构型是反平行的而非平行的。然而,由于非共线自由度,电子从左移动到右可以以一个螺旋态传播,而且这允许一个高的透射。实际上,如果您设置旋转角度为180度,对应电极的反平行排列,结果将会几乎相同。
下图比较了共线自旋平行态和非共线态的透射谱,使用了Compare Data插件。
我们接下来通过线性响应原理来计算自旋转移矩(STT)。计算遵循technical notes(TechNotes_Noncollinear.pdf)中的Eq. (6)。
注意!
自旋转移矩(STT)是一个电子效应,通过在磁性隧道结或自旋阀上施加一个自旋极化电流,可以利用该效应改变磁性层取向。 在上图中,通过在一个厚磁层(“固定层”)通入一个电流来产生一个自旋极化电流,然后这个自旋极化电流随后指向第二个薄一些的磁层(“自由层”)。这使在自由层中的电子极化从而使它们的自旋方向与固定层的自旋方向对齐。固定层对自由层电子施加了一个扭矩以旋转它们的自旋角动量。然而,由于角动量守恒,“转动”电子对固定层施加一个相等但反向的扭矩-自旋转移矩。注意为了研究这个效应我们需要一个电子自旋的非共线表述!
自旋转移矩可被用来翻转磁性随机存取存储器(MRAM)中的活性元素。这样的STT-MRAM具有低功耗和相比传统磁阻MRAM(使用磁场来翻转活性元素)更好的可扩展性的优势。 在原子尺度模型下计算STT主要有两种不同的方法:
接下来您将使用方法2,它基于线性响应和推迟/高级格林函数。
使用Viewer您现在可以可视化STT的空间分量。下图所示是Z分量的一个等值面(为了绘出构型放在等值面顶部,只需拖拽构型项到绘图上)。
使用1D Projector也可以很方便地将不同分量一起绘出。选择Vector component“x”, “y”, “z”,并点击Add line:
自旋轨道(SO)耦合在电子结构计算中通常被忽略,但它实际上可以被包含在一个非共线计算中,只要使用合适的赝势。您可以从这个实例中找到更多细节Spin-orbit splitting of semiconductor band structures。
这里考虑的碳链具有一个很小的SO耦合,所以包含自旋轨道相互作用的电子结构其结果与上面部分得到的结果基本相同。即使这样,如果您希望在如上概述的计算中包含SO相互作用,只需将初始LSDA计算赝势变为OMX,并选择SOLDA作为交换关联代替在Spin rotation of 120°部分计算中的NCLDA。
当设置初始LSDA计算,保存为carbon_para.nc
,打开New Calculator ‣ Basis set/exchange correlation并选择一个OMX赝势。您将通常有Medium和High精度基组选项可供选择(有时也有Low精度):
OMX赝势总的来说需要大于默认75 Hartree的一个mesh cut-off。将其增加到比如150 Hartree:
在脚本中使用SOLDA代替NCLDA来读取carbon_para.nc
并执行一个自旋旋转120°的计算:
# Get the calculator and modify it for noncollinear LDA with spin-orbit (SOLDA) calculator = device_configuration.calculator() calculator = calculator( exchange_correlation = SOLDA.PZ, iteration_control_parameters = iteration_control_parameters )