这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
atk:meta-gga和二维受限的砷化铟 [2019/01/02 22:40] – [在 QuantumATK 里的 Meta-GGA] xie.congwei | atk:meta-gga和二维受限的砷化铟 [2019/06/29 15:59] (当前版本) – [在 QuantumATK 里的 Meta-GGA] dong.dong | ||
---|---|---|---|
行 71: | 行 71: | ||
对于受限系统,必须首先为相应的块体系统确定适当的 c值。可以通过自洽或通过将 c 参数拟合到例如实验带隙(参见 | 对于受限系统,必须首先为相应的块体系统确定适当的 c值。可以通过自洽或通过将 c 参数拟合到例如实验带隙(参见 | ||
</ | </ | ||
+ | |||
+ | <WRAP center info 100%> | ||
+ | === 提示 === | ||
+ | **本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。** | ||
+ | * 不同版本的QuantumATK的py脚本可能不兼容; | ||
+ | * 较新的版本输出的数据文件默认为hdf5; | ||
+ | * 老版本的数据文件为nc文件,可以被新版本读取。 | ||
+ | </ | ||
+ | |||
===== 采用 meta-GGA 计算块体 InAs 的能带结构 ===== | ===== 采用 meta-GGA 计算块体 InAs 的能带结构 ===== | ||
行 76: | 行 85: | ||
==== 设置块体 InAs ==== | ==== 设置块体 InAs ==== | ||
| | ||
- | | + | 现在您应该设置一个 InAs 块状晶体。在 **Builder**,点击 **Add {{: |
+ | |||
+ | 下一步是更改晶格常数到实验上室温时的晶格常数 $a=6.0583 Å$ < | ||
+ | |||
+ | * 在控制板的右侧,打开 **Bulk tools {{: | ||
+ | * 重要的是,您必须选择保持 **fractional** 坐标不变(如下图所示),否则晶体的对称性将在晶格常数改变时会被破坏。 | ||
+ | * 设置 $a=6.0583 Å$。 | ||
+ | |||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 接下来,将结构发送到 **Script Generator**。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
=== 设置脚本 === | === 设置脚本 === | ||
+ | |||
+ | 在下文中,您将使用 meta-GGA 泛函和自洽及非自洽计算得到的 c参数计算 InAs 块体的能带结构。 | ||
+ | |||
+ | 为实现此目的: | ||
+ | |||
+ | * 添加 **New Calculator** 和 **Bandstructure** 模块。 | ||
+ | |||
+ | 打开 **New Calculator** 模块,做出如下更改: | ||
+ | |||
+ | * 设置 Exchange correlation 为 meta-GGA。 | ||
+ | * 设置 k 点取样为 7,7,7。 | ||
+ | * 在 **Basis set/ | ||
+ | * 最后设置输出文件名为 // | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 保存脚本,然后使用 “Send To” 按钮将其发送到 **Job Manager**,运行作业。该计算将会花费 1 或 2 分钟。 | ||
+ | |||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | 对于 c 参数的自洽计算,为得到更精确的能带结构通常使用包含半芯态的 HGH 赝势。这是针对铟 HGH [Z = 13] 的情况,它包括 10个 4d 电子,而 HGH [Z = 3] 仅包括 3 个价电子(5s 态和 5p 态)。然而,在 **ATK** 中仅提供一些元素的半芯态赝势;对于砷,只有一个 HGH [Z = 5] 赝势,没有伪芯态。 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
=== 自洽确定 c 参数的能带结构 === | === 自洽确定 c 参数的能带结构 === | ||
+ | |||
+ | 当计算结束后,找到 LabFloor 上的能带结构数据块,点击 **Bandstructure Analyzer** 画出如下图的能带结构。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 您会发现计算的带隙非常接近实验值 0.354 eV。当使用 HGH 赝势时,这实际上是一个相当普遍的趋势。下图显示了一系列半导体和绝缘体的计算带隙与实验带隙。图中展示了 LDA 和 meta-GGA 两种的计算结果(其他实例可参见 Ref< | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 图 75 计算带隙与实验带隙。采用 LDA(蓝色方块)和 meta-GGA(红色圆圈)XC 泛函进行的计算。对于 meta-GGA 的计算,HGH 赝势常与 Tier 4 基组一起使用,并且 c 参数是自洽计算得到的。 | ||
+ | |||
+ | |||
+ | |||
==== 拟合 meta-GGA c 参数 ==== | ==== 拟合 meta-GGA c 参数 ==== | ||
+ | |||
+ | 虽然 HGH 赝势通过结合自洽计算的 c 参数通常能给出相当准确的带隙,但我们想要得到能够与实验值更加一致的结果。为了实现这一点,可以手动设置 meta-GGA 的 c参数使得计算的带隙与实验带隙一致。这也可以作为如本节所示补偿稍微不准确的赝势或基组的方法。 | ||
=== 设置脚本 === | === 设置脚本 === | ||
+ | 返回到 **Script Generator**,打开 **New Calculator** 模块并做如下设置: | ||
+ | |||
+ | * 在菜单选项下:**Basis set {{: | ||
+ | * 给两种元素都设置基组为 DoubleZetaPolarized。 | ||
+ | * 更改输出文件名称为“InAs_c_fit.nc”。 | ||
+ | |||
+ | 点击 “Send To” 按钮将脚本发送到 **Editor**。 | ||
+ | |||
+ | 在 **Editor** 里,找到指定 XC 函数的所在行,将 c 参数这个自变量添加到 MGGA.TB09LDA 泛函。 | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # Exchange-Correlation | ||
+ | # | ||
+ | exchange_correlation = MGGA.TB09LDA(c=1.0) | ||
+ | </ | ||
+ | |||
+ | 然后将脚本发送到 **Job Manager**(再次使用 “Send To” 按钮) | ||
+ | |||
+ | 计算结束后,画出能带结构图,测量带隙值。如果带隙比实验值(0.354 eV)大,就返回到 **Editor** 将 c 值降低一点,再次运行计算。如果带隙值较小,就必须增大 c 值。可以尝试一些迭代观察是否能得到与实验值一致的结果。 | ||
+ | |||
+ | 下图展示了在 4 个不同 c 值(0.9,0.95,1.0,1.05)下计算得到的带隙(左图)。由于特有的线性行为,我们可以安全地在计算带隙的插值线和实验带隙的交点处找到最佳 c 参数。于是就产生了我们将在接下来使用的 c 值 0.936。 | ||
+ | |||
+ | 右图为同样这 4 个 c 参数下计算得到的导带有效质量。还显示了实验的导带有效质量值(0.023 $m_e$)。线之间的交点在 c = 0.9356 处,所以非常重要的是,近似相同的 c 值可以优化带隙和有效质量,因此至少可以给 InAs 的最低 $\Gamma$ 凹谷提供一个非常好的描述。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 图 76 计算的带隙(左)和导带有效质量(右)与meta-GGA c 参数的关系图。增加 c 值将始终导致带隙逐渐变大。带隙和有效质量都通过近似相同的 c 参数(0.936)得到优化。 | ||
=== 采用优化后 c 参数的能带结构 === | === 采用优化后 c 参数的能带结构 === | ||
+ | |||
+ | 在继续研究受限 InAs 结构之前,您将首先使用优化的 c 参数更详细地计算和分析块体能带结构。 | ||
+ | |||
+ | 返回到 **Script Generator**,作如下调整: | ||
+ | |||
+ | * 删除 **Bandstructure** 数据块。 | ||
+ | * 插入一个 **LocalBandstructure** 模块,打开它(如下所示)。 | ||
+ | * 设置“Bands below Fermi level”为 0。 | ||
+ | * 设置“Points per segment”为 50。 | ||
+ | * 增加第二个方向:0.5,0.5,0。 | ||
+ | * 其他保持为默认值。 | ||
+ | * 更改输出文件名称为 “InAs_bulk_c_optimized.nc”。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 将脚本转移到 **Editor**,插入优化的 c 参数值: | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # Exchange-Correlation | ||
+ | # | ||
+ | exchange_correlation = MGGA.TB09LDA(c=0.936) | ||
+ | </ | ||
+ | |||
+ | 最后,发送脚本到 **Job Manager**,运行计算。 | ||
+ | |||
+ | 为了分析结果,可以采用 **Local Bandstructure Analyzer**。 | ||
+ | |||
+ | **LocalBandstructure** 数据块计算有效质量 $m^*$,并由函数 $E(1+\alpha E)=\frac{\hbar^2 k^2}{2m^*}$ 进一步拟合能带结构,该式中 $\alpha$ 是要拟合的参数。您可以使用适合的点的数量来控制拟合的范围。如下图所示,这种非抛物线色散关系比通常的抛物线模型 $E=\frac{\hbar^2 k^2}{2m^*}$ 能更好地拟合 DFT-meta-GGA 能带结构。红色的点表示用于拟合 $\alpha$ 的范围。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 图 77局部能带结构分析。黑点显示计算的能带结构数据,而蓝色和红色曲线分别显示抛物线和非抛物线模型的结果。拟合的 $\alpha$ 值和有效质量在图下方显示。 | ||
+ | |||
+ | 从 LocalBandstructure Analyzer,我们可以看出 InAs 在 [1,0,0] 方向上的导带可由 $m^*=0.028\, | ||
+ | |||
+ | 尝试更改方向为 $(0.5, 0.5, 0)\, | ||
+ | |||
+ | |||
行 98: | 行 241: | ||
==== 平板结构 ==== | ==== 平板结构 ==== | ||
+ | |||
+ | 现在您将设置一个在 [100] 方向上受限的 InAs 平板结构。 | ||
+ | |||
+ | 返回至 **Builder** 窗口,假设您仍拥有之前的块状 InAs 晶体。 | ||
+ | |||
+ | 下一步,点击 **Builders {{: | ||
+ | |||
+ | * 保持默认的密勒指数 (100),按下“Next”。 | ||
+ | * 保持默认的表面晶格矢量,按下“Next”。 | ||
+ | * 保持默认的超胞——这将确保线的方向垂直于表面。 | ||
+ | * 选择“Non-periodic and normal (Slab)”,厚度为 8 层,顶部和底部的真空为 5 Å 的构型为最终结构。 | ||
+ | * 按下“Finish”将切割后得结构添加到 Stash。 | ||
==== 加氢 ==== | ==== 加氢 ==== | ||
+ | 由于未配对的 In 原子和 As 原子,所谓裸露的 InAs 平板表面会有悬空键。这将导致在带隙中带有能量的金属表面态。为了钝化表面,您将现在添加氢原子。 | ||
+ | |||
+ | 打开 **Coordinate Tools {{: | ||
+ | 设置 Hybridization(杂化)为“4 (SP3)”。 | ||
+ | 更改键长为 1.3 Å(否则相邻的氢原子会距离太近)。 | ||
+ | 按下“Passivate”按钮。 | ||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | **Custom Passivator** 为添加的氢原子加了标签 —— 这对本教程至关重要,因此请勿更改或删除它们。您可以通过打开 **Select {{: | ||
+ | </ | ||
+ | |||
+ | |||
+ | 该结构现在应该类似于下图。 | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | 发送结构到 | ||
===== 采用默认氢原子的能带结构 ===== | ===== 采用默认氢原子的能带结构 ===== | ||
+ | |||
+ | 在下文中,您将对钝化氢原子采用默认设置计能算带结构。为实现此目的: | ||
+ | |||
+ | * 添加一个 New Calculator。 | ||
+ | * 添加 Analysis/ | ||
+ | |||
+ | 打开 **New Calculator** 模块,设置交换关联为 meta-GGA,k 点取样为 7,7,1。注意 FHI 赝势是默认的选项。 | ||
+ | |||
+ | 最后,打开 **Bandstructure** 模块,设置布里渊区路径为“Y,G,X”,增加每段的点数至 100。 | ||
+ | |||
+ | 正如在 meta-GGA 的简介里所讨论的,c 参数的自洽计算仅适用于没有真空区域的块体系统。然而对于平板结构的计算,我们应该采用一个固定值。因此将脚本发送到 **Editor**,然后指定您在优化 c 参数的能带结构中找到的 c 参数使 FHI 赝势重现实验带隙。 | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # Exchange-Correlation | ||
+ | # | ||
+ | exchange_correlation = MGGA.TB09LDA(c=0.936) | ||
+ | </ | ||
+ | |||
+ | 保存脚本,将其发送到 **Job Manager**(再次使用 “Send To” 按钮)并运行计算。本次耗时略长,约 5 分钟。 | ||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | 运行脚本时,您可以能会在 log 文件中发现一个警告: | ||
+ | |||
+ | <code python> | ||
+ | ################################################################################ | ||
+ | # WARNING | ||
+ | # # | ||
+ | # The computed TB09 meta-GGA XC potential | ||
+ | # diverged in 0.01 % of the simulation volume, and was # | ||
+ | # truncated to be in the range [-10.0000, | ||
+ | # # | ||
+ | ################################################################################ | ||
+ | </ | ||
+ | |||
+ | 您无需为此担心,因为您已将 c 参数设置为了固定值。另一方面,如果您试图通过自洽计算它,则警告将是相关的。然而,如在 meta-GGA 的简介中所解释的,c 参数的自洽评估涉及包括真空区域的整个计算单胞的积分,其中 meta-GGA XC 势可以分离。因此,对于平板和纳米线等受限系统,您始终需要手动指定 c 参数。 | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
===== 分析结果 ===== | ===== 分析结果 ===== | ||
+ | 如果您现在使用 Bandstructure Analyzer 绘制此计算结果,您会发现没有带隙,而是在费米能量周围区域中有很多或多或少平缓的能带。这是由表面钝化不充分引起的表面态造成的。 | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | 为了摆脱表面状态(或者更确切地说将它们排除在费米能级处),我们需要对氢原子进行不同的处理。接下来的两节说明了消除表面态的两种可行方法,以为您的 InAs 平板生成合适的能带结构。 | ||
===== 利用伪氢钝化 ===== | ===== 利用伪氢钝化 ===== | ||
+ | |||
+ | 在下文中,您将使用包含分数电荷的所谓伪氢原子计算能带结构和有效质量。伪氢的用法是文献中众所周知的钝化 III-V 和 II-VI 表面的方法< | ||
+ | |||
+ | 返回到 **Script Generator** 窗口,打开 **New Calculator** 模块。采用以下设置分别为与氢原子键合的铟原子和砷原子选择不同的基组: | ||
+ | |||
+ | * 在 **Basis set/ | ||
+ | |||
+ | 这种技术,也就是使用标签,允许您为同一元素的原子分配不同的基组,在其他情况下也会是一个有用的技巧。 | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | * 更改 H_As 原子的赝势为“FHI Fractional LDA.PZ”,设置基组为“DoubleZetaPolarized, | ||
+ | * 更改 H_In 的赝势为“FHI Fractional LDA.PZ”,基组为“DoubleZetaPolarized, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | 请注意以下要点。 | ||
+ | |||
+ | * 定义了两个独立的氢基组:一个用于与铟原子键合的氢,另一个用于与砷原子键合的氢。两个基组使用不同的赝势,电荷分别为 1.25 个电子和 0.75 个电子。(从小程序它们看似用法相同,但分数赝势会自动地被选择去匹配基组电荷。) | ||
+ | |||
+ | * 这些赝势电荷的使用可以按照如下理解 < | ||
+ | |||
+ | * 两种类型的氢原子都仍是电荷中性的,即有 1.25 个电子和带有 1.25 电荷的核心,0.75 的情况类似。 | ||
+ | |||
+ | 通过点击 **Analysis {{: | ||
+ | |||
+ | * 设置“bands below Fermi level”为 0。 | ||
+ | * 增大“Points per segment”到 50。 | ||
+ | |||
+ | 设置输出文件名称为“InAs_slab_pseudohydrogen.nc”,发送脚本到 **Editor**,通常还要做 c 参数的调整。 | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # Exchange-Correlation | ||
+ | # | ||
+ | exchange_correlation = MGGA.TB09LDA(c=0.936) | ||
+ | </ | ||
+ | |||
+ | 最后,保存脚本并发送到 **Job Manager** 以运行计算。 | ||
+ | |||
+ | |||
+ | |||
===== 结果 ===== | ===== 结果 ===== | ||
+ | 采用 Bandstructure Analyzer 绘制计算的能带结构,您可以观察到带隙已经打开。伪氢原子确实如预期的那样使表面态远离费米能量。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 通过检查能带结构,您可以看到带隙值已经增加到 0.1 eV,而体积值为 0.354 eV,与块体带隙的 0.354 eV 相比这是量子限制的结果。 | ||
+ | |||
+ | 接下来,您可以使用 **Local Bandstructure Analyzer** 检查计算的有效质量和非抛物线参数。 | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | 我们注意到与块体结构(0.028)相比,有效质量增加到 $0.1\, | ||
+ | |||
+ | 在章节 [[https:// | ||
===== 利用补偿电荷钝化 ===== | ===== 利用补偿电荷钝化 ===== | ||
+ | 使用伪氢原子的替代方案是对氢原子采用了补偿电荷。这增加了对应于与铟键合氢的 +0.25 电子电荷和与砷键合氢的 -0.25 电子电荷的外势,类似于以上“利用伪氢钝化”章节部分在伪氢赝势中使用额外的 + / - 0.25电子。 | ||
+ | |||
+ | * 转至 **Script Generator**,打开 **New Calculator** 模块。 | ||
+ | * 找到 **Basis set/ | ||
+ | * 设置输出文件名为“InAs_slab_compensation_charge.nc”。 | ||
+ | |||
+ | 补偿电荷将在脚本中被定义。因此,将脚本发送到 **Editor**(使用“Send To”按钮)并在计算器说明之前插入以下列出的 Python 代码。 | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # Add compensation charges to the hydrogen atoms | ||
+ | # | ||
+ | |||
+ | # Compensation charge for H_As and H_In | ||
+ | charge_H_As = -0.25 | ||
+ | charge_H_In = 0.25 | ||
+ | |||
+ | # Set compensation charge | ||
+ | compensation_As = [(' | ||
+ | compensation_In = [(' | ||
+ | |||
+ | compensation = compensation_As + compensation_In | ||
+ | bulk_configuration.setExternalPotential(AtomicCompensationCharge(compensation)) | ||
+ | |||
+ | # ------------------------------------------------------------- | ||
+ | # Calculator | ||
+ | # ------------------------------------------------------------- | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | 氢原子上的标签用于找到它们的指数。标签可用于实现多种目的! | ||
+ | |||
+ | **ATK** 将自动使用与所有补偿电荷总和相对应的自由电荷以保持整个系统保持中性。 | ||
+ | </ | ||
+ | |||
+ | |||
+ | 再次,将 c参数添加到 MGGA.TB09LDA 泛函: | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # Exchange-Correlation | ||
+ | # | ||
+ | exchange_correlation = MGGA.TB09LDA(c=0.936) | ||
+ | </ | ||
+ | 保存修改后的脚本并发送到 **Job Manager**,运行计算。 | ||
===== 结果 ===== | ===== 结果 ===== | ||
+ | 绘制结果,您也应该能够得到如下所示的图。 | ||
+ | {{ : | ||
+ | |||
+ | 同样在费米能量周围存在着明显的带隙,且能带结构大体上与用伪氢获得的能带结构非常相似。 | ||
===== 受限结构中的非抛物线性 ===== | ===== 受限结构中的非抛物线性 ===== | ||
+ | |||
+ | 在“采用优化后 c 参数的能带结构”部分您学习到 InAs 的块体导带结构可以由非抛物线线模型很好的描述: | ||
+ | |||
+ | $$E(1+\alpha E)=\frac{\hbar^2 k^2}{2m^*}$$ | ||
+ | |||
+ | 上式中,$m^*=0.028\, | ||
==== 2D 平板的分析能带结构 ==== | ==== 2D 平板的分析能带结构 ==== | ||
+ | |||
+ | |||
+ | 上面的等式仅给出能量作关于 k 的隐函数。二次方程的解可引导明确的色散关系 | ||
+ | |||
+ | $$E(k_x, | ||
+ | |||
+ | 此处假设 $m^*$ 和 $\alpha$ 与晶体取向无关。这是电子质量的极佳近似值 $m^*$,而 $\alpha$ 如上所述,确实不同。 | ||
+ | |||
+ | 在受限系统即 2D 平板或 1D 纳米线中,可允许的波长在受限方向上被量化。在沿 z 方向限制的平板中,可假设有效势通过宽度为 $W$ 的一维无限势阱来近似。在该方向上可允许的波长为 $\lambda_n = \frac{2W}{n}$,$n=1, | ||
+ | |||
+ | $$E_\mathrm{2D}(k_x, | ||
+ | |||
+ | 从这个表达式中,您可以很容易地计算出由于量化导致的带隙偏移: | ||
+ | |||
+ | $$\Delta E_\mathrm{gap} = E^{2D}(0,0) = \frac{-1 + \sqrt{1+\frac{2\alpha\hbar^2\pi^2}{m^*W^2}} } {2\alpha}.$$ | ||
+ | |||
+ | 也可能得到 $\Gamma$ 点有效质量的表达式 $m^*=\hbar^2(\partial^2E(k)/ | ||
+ | |||
+ | $$m^*_\mathrm{2D} = m^*\sqrt{1 + \frac{2\alpha\hbar^2\pi^2}{m^*W^2}}.$$ | ||
+ | |||
+ | 为了评估上述表达式,您只需要知道平板宽度 $W$。宽度可能以各种方式定义,但如果您考虑在 $\Gamma$ 点计算的导带 Bloch 态的受限,您将会发现它在您定义的平板宽度上延伸了约 $W=$30 Å。使用此数据,您可以获得以下带隙增加和有效质量的值: | ||
+ | |||
+ | $$\Delta E_\mathrm{gap} = 0.62 eV$$ | ||
+ | $$m^*_\mathrm{2D} = 0.11 m_e,$$ | ||
+ | |||
+ | 与“利用伪氢钝化-结果”部分比较,即 \Delta E_\mathrm{gap}=(0.96-0.354)\ \mathrm{eV}=0.61$$ eV,$m^*_\mathrm{2D}=0.1\, | ||
+ | |||
+ | 因此,对于块体 InAs,了解有效质量和 $\alpha$ 足以使 2D 受限 InAs 平板能带结构得到一个非常合理的描述。相似的方法适用于纳米线,也将在以下的“纳米线能带结构”中展示。 | ||
+ | |||
+ | 注意,有效质量非常显著地超过三倍的增长不能由抛物线模型 $E(k) = \frac{\hbar^2k^2}{2m^*}$ 解释,因为其有效质量为常数,且只有带隙受量子限制的影响。 | ||
+ | |||
+ | 为了可以直观地检查非抛物线模型的质量,您可以运行下面显示的脚本 [[https:// | ||
+ | |||
+ | <file python analyze_nanowire.py> | ||
+ | import pylab as pl | ||
+ | from NL.CommonConcepts.Configurations.Utilities import fractional2cartesian | ||
+ | |||
+ | |||
+ | # | ||
+ | # Model data | ||
+ | # | ||
+ | |||
+ | # alpha parameter fitted to bulk InAs | ||
+ | alpha_bulk = 2.869 | ||
+ | |||
+ | # InAs bulk conduction band effective mass | ||
+ | meff_bulk = 0.028*electron_mass | ||
+ | |||
+ | # Effective width of slab | ||
+ | slab_width = 30*Angstrom | ||
+ | |||
+ | |||
+ | # | ||
+ | # Load DFT calcularted bandstructure and effective mass | ||
+ | # | ||
+ | |||
+ | # Read bulk configuration | ||
+ | configuration = nlread(' | ||
+ | |||
+ | # Read bandstructure | ||
+ | bandstructure = nlread(' | ||
+ | |||
+ | # Read Effective mass | ||
+ | effective_mass = nlread(' | ||
+ | meff = effective_mass.evaluate(band=1)[0][0][0] | ||
+ | |||
+ | # Get the fractional kpoints | ||
+ | kpoints = bandstructure.kpoints() | ||
+ | |||
+ | |||
+ | # Get reciprocal lattice vectors (used to convert frational k to cartesian k) | ||
+ | G = configuration.bravaisLattice().reciprocalVectors() | ||
+ | |||
+ | # K-points in cartesian coordinates, | ||
+ | k_cart = fractional2cartesian(kpoints, | ||
+ | |||
+ | # Get |k| as 1D array | ||
+ | k = numpy.zeros(len(kpoints)) | ||
+ | for ii,ki in enumerate(k_cart.inUnitsOf(Angstrom**-1)): | ||
+ | k[ii] = (ki[0]**2 + ki[1]**2 + ki[2]**2)**0.5 | ||
+ | |||
+ | # Add unit | ||
+ | k = k*Angstrom**-1 | ||
+ | |||
+ | # Get all the bands | ||
+ | bands = bandstructure.evaluate().inUnitsOf(eV) | ||
+ | |||
+ | # Energies at the Gamma-point | ||
+ | E0 = bands[0,:] | ||
+ | |||
+ | # Index of conduction band | ||
+ | conduction_band_index = numpy.where(E0 > 0.0)[0][0] | ||
+ | |||
+ | # Get the energies of the conduction band | ||
+ | conduction_band = bands[:, | ||
+ | |||
+ | # conduction band minimum | ||
+ | cbm = min(conduction_band) | ||
+ | |||
+ | # Evaluate non-parabolic model bandstructure | ||
+ | E_non_parabolic = (-1 + (1 + 2*alpha_bulk*(hbar**2/ | ||
+ | |||
+ | # Align conduction band minimum to DFT | ||
+ | E_non_parabolic = E_non_parabolic - min(E_non_parabolic) + cbm | ||
+ | |||
+ | # Evaluate parabolic model bandstructure and align CBM | ||
+ | E_parabolic = (0.5*hbar**2*k**2/ | ||
+ | |||
+ | |||
+ | # Ananlytical effective mass of slab | ||
+ | m_slab = meff_bulk * (1 + 2*alpha_bulk*(hbar**2*numpy.pi**2/ | ||
+ | print '' | ||
+ | print ' | ||
+ | print 'DFT slab mass = %.4f m_e\n' %0.095 | ||
+ | |||
+ | # Analytical band gap increase | ||
+ | delta_gap = (-1 + (1 + 2*alpha_bulk*(hbar**2*numpy.pi**2/ | ||
+ | print ' | ||
+ | print 'DFT gap change = %.4f eV' %(0.91-0.354) | ||
+ | print '' | ||
+ | |||
+ | |||
+ | pl.figure() | ||
+ | pl.plot(k, | ||
+ | pl.plot(k, | ||
+ | pl.plot(k, | ||
+ | pl.plot(k, | ||
+ | pl.xlabel(' | ||
+ | pl.ylabel(' | ||
+ | pl.ylim([0, | ||
+ | pl.legend(loc=0) | ||
+ | |||
+ | pl.show() | ||
+ | </ | ||
+ | |||
+ | |||
+ | {{ : | ||
===== 纳米线能带结构 ===== | ===== 纳米线能带结构 ===== | ||
+ | |||
+ | 作为最后的任务,您将研究是否分析模型也可用于估算纳米线的能带结构。由于纳米线的计算相当耗时,我们在此处只会显示结果,将实际计算作为练习。 | ||
+ | |||
+ | 您可以通过返至 **Builder** 窗口创建 InAs 纳米线,并按照以下步骤操作: | ||
+ | |||
+ | * 沿 A 轴方向重复 InAs 平板 6 次。 | ||
+ | * 更改晶格常数使 x 方向上的 A 矢量为 40 Å 。 | ||
+ | * 使用 **Custom Passivator** 以与处理平板相同的方式钝化纳米线。 | ||
+ | * 坐标居中。 | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | 将结构发送到 **Script Generator**,采用与含有伪氢平板计算相同的程序。另外, | ||
+ | |||
+ | * 设置 k 点取样为(1, | ||
+ | * 添加 **Bandstructure**,更改布里渊区路径为“G, | ||
+ | * 添加 Analysis/ | ||
+ | * 设置输出文件名称为“InAs_nanowire.nc”。 | ||
+ | * 将脚本发送到 **Editor**,设置 meta-GGA c 参数为 0.936。 | ||
+ | * 最后把脚本发送到 **Job Manager** 并运行,注意本次计算将用时约 1 小时。 | ||
+ | |||
+ | 当计算完成后,您可以运行如下的 Python 脚本 [[https:// | ||
+ | |||
+ | <file python analyze_nanowire.py> | ||
+ | import pylab as pl | ||
+ | from NL.CommonConcepts.Configurations.Utilities import fractional2cartesian | ||
+ | |||
+ | |||
+ | # | ||
+ | # Model data | ||
+ | # | ||
+ | |||
+ | # alpha parameter fitted to bulk InAs | ||
+ | alpha_bulk = 2.869 | ||
+ | |||
+ | # InAs bulk conduction band effective mass | ||
+ | meff_bulk = 0.028*electron_mass | ||
+ | |||
+ | # Effective widths of nanowire | ||
+ | Dx = 30*Angstrom | ||
+ | Dz = 30*Angstrom | ||
+ | |||
+ | |||
+ | # | ||
+ | # Load DFT calcularted bandstructure and effective mass | ||
+ | # | ||
+ | |||
+ | filename = ' | ||
+ | |||
+ | # Read bulk configuration | ||
+ | configuration = nlread(filename, | ||
+ | |||
+ | # Read bandstructure | ||
+ | bandstructure = nlread(filename, | ||
+ | |||
+ | # Read Effective mass | ||
+ | effective_mass = nlread(filename, | ||
+ | meff = effective_mass.evaluate(band=1)[0][0][0] | ||
+ | |||
+ | # Get the fractional kpoints | ||
+ | kpoints = bandstructure.kpoints() | ||
+ | |||
+ | |||
+ | # Get reciprocal lattice vectors (used to convert frational k to cartesian k) | ||
+ | G = configuration.bravaisLattice().reciprocalVectors() | ||
+ | |||
+ | # K-points in cartesian coordinates, | ||
+ | k_cart = fractional2cartesian(kpoints, | ||
+ | |||
+ | # Get |k| as 1D array | ||
+ | k = numpy.zeros(len(kpoints)) | ||
+ | for ii,ki in enumerate(k_cart.inUnitsOf(Angstrom**-1)): | ||
+ | k[ii] = (ki[0]**2 + ki[1]**2 + ki[2]**2)**0.5 | ||
+ | |||
+ | # Add unit | ||
+ | k = k*Angstrom**-1 | ||
+ | |||
+ | # Get all the bands | ||
+ | bands = bandstructure.evaluate().inUnitsOf(eV) | ||
+ | |||
+ | # Energies at the Gamma-point | ||
+ | E0 = bands[0,:] | ||
+ | |||
+ | # Index of conduction band | ||
+ | conduction_band_index = numpy.where(E0 > 0.0)[0][0] | ||
+ | |||
+ | # Get the energies of the conduction band | ||
+ | conduction_band = bands[:, | ||
+ | |||
+ | # conduction band minimum | ||
+ | cbm = min(conduction_band) | ||
+ | |||
+ | # Evaluate non-parabolic model bandstructure | ||
+ | E_non_parabolic = (-1 + (1 + 2*alpha_bulk*(hbar**2/ | ||
+ | |||
+ | # Align conduction band minimum to DFT | ||
+ | E_non_parabolic = E_non_parabolic - min(E_non_parabolic) + cbm | ||
+ | |||
+ | # Evaluate parabolic model bandstructure and align CBM | ||
+ | E_parabolic = (0.5*hbar**2*k**2/ | ||
+ | |||
+ | |||
+ | # Ananlytical effective mass of slab | ||
+ | m_slab = meff_bulk * (1 + 2*alpha_bulk*(hbar**2*numpy.pi**2/ | ||
+ | print '' | ||
+ | print ' | ||
+ | print 'DFT nanowire mass = %.4f m_e\n' %meff | ||
+ | |||
+ | # Analytical band gap increase | ||
+ | delta_gap = (-1 + (1 + 2*alpha_bulk*(hbar**2*numpy.pi**2/ | ||
+ | print ' | ||
+ | print 'DFT gap change = %.4f eV' %(1.548-0.354) | ||
+ | print '' | ||
+ | |||
+ | |||
+ | pl.figure() | ||
+ | pl.plot(k, | ||
+ | pl.plot(k, | ||
+ | pl.plot(k, | ||
+ | pl.plot(k, | ||
+ | pl.xlabel(' | ||
+ | pl.ylabel(' | ||
+ | pl.ylim([0, | ||
+ | pl.legend(loc=0) | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | {{ : | ||
+ | 对于 InAs 平板,非抛物线模型比抛物线/ | ||
===== 参考 ===== | ===== 参考 ===== | ||
- | + | * [1] Tran, and P. Blaha, Phys. Rev. Lett., 102, 226401, (2009) | |
+ | * [2] A.D. Becke, and M.R. Roussel, Phys. Rev. A., 39, 3761, 1989 | ||
+ | * [3] [[http:// | ||
+ | * [4] Li, and L.-W. Wang, Phys. Rev. B, 72, 125325, (2005) | ||
+ | * [5] 英文原文:[[https:// | ||