用户工具

站点工具

本页面的其他翻译:
  • zh

atk:硅p-n结中的非弹性电流

硅p-n结中的非弹性电流

版本:2017.2

由电子-声子相互作用产生的非弹性散射效应在确定通过器件的载流子传输中起到了基本作用。在本教程中,你将研究在反向偏压情况下,这种效应对通过硅 $p$-$n$ 结中电流的影响。在这个系统中,载流子的传输主要是由 $p$ 区价带和 $n$ 区导带之间的带间隧穿控制。非弹性散射效应可大大增强该过程。

具体来说,您将使用 ATK 中可应用的 InelasticTransmissionSpectrum 模块来计算在电子-声子相互作用的情况下器件的透射光谱。您还将使用 QuantumATK 中的 Inelastic Transmission Spectrum Analyzer 插件对电流进行详细分析,并确定哪种声子模是造成电流增强的主要原因。

QuantumATK 中采用的方法基于 Lowest Order Expansion (LOE) [FPBJ07] 法和 eXtended LOE (XLOE) [LCF + 14] 法。在本教程中,您将使用 XLOE 法,该方法处理 $\mathbf{k} \to \mathbf{k}\pm\mathbf{q}$ 过渡中初始态和最终态间的有限能量差时会由于电子-声子的耦合而更精确。然而也可以使用更简单的 LOE 法执行本教程,将会获得定性相似的结果。您可以在 ATK 手册 InelasticTransmissionSpectrum 模块的“注释”部分中找到有关这两种方法的更多详细理论信息。

构建一个硅p-n结

为构建器件,您可以按照 Silicon p-n junction 教程中“构建器件”部分的说明进行操作。但在本教程中,您将创建一个较短的器件以加快计算速度。在 Builder,按照以下变动创建器件:

  • 利用 Surface (Cleave) 插件创建一个 <100> 向结构时,将 thickness 从 52 层更改为 24 层;
  • 使用 Device from Bulk plugin 插件时,设置 electrode length 为 5.4306 Å;
  • 点击 Miscellaneous Doping 的 Doping 插件设置 $p$ 区和 $n$ 区的掺杂。在本例中,选中器件的一半设置为 $p$ 掺杂区,按下 ctrl + i 反向选中剩余的一半器件设置为 $n$ 掺杂区,掺杂浓度为 $2 \cdot 10^{19} \mathrm{e/cm^{3}}$。

您可以在此处下载生成的器件构型:↓ Si_pn_junction.py

无电子-声子相互作用的透射计算

在本节,您将计算分析 $p$-$n$ 结在反向偏压 $V_\mathrm{bias} = -0.4\ \mathrm{V}$ 下的电子结构,以及使用 ATKTransmissionSpectrum 模块里常规 Landauer 公式获得的没有电子-声子相互作用的相关传输光谱。

设置计算

点击 按钮,将结构从 Builder 发送到 Script generator。按照以下添加模块并设置参数:

  • Calculators SemiEmpiricalCalculator
    • Main
      • 设置 Left electrode voltage 为 $-0.2\ \mathrm{V}$
      • 设置 Right electrode voltage 为 $0.2\ \mathrm{V}$
    • Hamiltonian
      • 不勾选 “No SCF iteration” 选项
    • Numerical Accuracy,设置 k-point Sampling 为:
      • $\mathrm{k_A} = 7$
      • $\mathrm{k_B} = 7$
      • $\mathrm{k_C} = 101$
    • Iteration control parameters 设置 Tolerance“4e-05”
  • Analysis ProjectedLocalDensityOfStates
    • 设置 k-point Sampling 为:
      • $\mathrm{k_A} = 21$
      • $\mathrm{k_B} = 21$
  • Analysis TransmissionSpectrum
    • 设置 k-point Sampling 为:
      • $\mathrm{k_A} = 21$
      • $\mathrm{k_B} = 21$

最后,在 Global IO 选项,更改 Default output file 名称为 transmission_V-0.4.hdf5

利用 按钮将脚本发送到 Job manager,保存为 transmission_V-0.4.py,然后按下 运行计算。使用 4 个 CPU 只需要不到 2 分钟就能完成。您可以在此处下载完整的脚本:↓ transmission_V-0.4.py

结果分析

LabFloor,从文件 transmission_V-0.4.hdf5 中选择 ProjectedLocalDensityOfStates 数据块,点击 Projected Local Density of States 插件。在插件窗口,从左上角的下拉菜单选择 Spectral Current,设置 Data range 的最大值为 0.1。在屏幕左侧的面板中,使用 Zoom 按钮确保电流的最小值约为 $10^{-24} \mathrm{A/eV}$。低于此值的特性可能与数字噪声相关。

从上图的左侧面板可以看出,谱电流的最大值出现在偏压窗口内($-0.2\ \mathrm{eV} \leq \mathrm{Energy} \leq 0.2\ \mathrm{eV}$)。此外,从右侧面板显示的器件态密度可以看出,在偏压窗口内,器件的中心区域(20\ \mathrm{Å} \leq \mathrm{z} \leq 45\ \mathrm{Å})没有电子态。因此,左右电极之间的隧穿是唯一可能的传输机制。这表明反向偏压下器件的电子输运受隧穿控制。

为分析在 $\mathbf{k}$ 空间隧穿的可能性。选择同一文件中 Transmission Spectrum 数据块,点击 Transmission Analyzer 插件。在插件窗口,设置 Data range 的最大值为 0.1。

从上图可以看出,费米能级处布里渊区的 $\Gamma$ 点是隧穿的隧道概率的最高峰值。

电子-声子作用下的透射计算

在本节,您将采用 XLOE 近似 [LCF+14] 计算硅 $p$-$n$ 结在反向偏压 $V_\mathrm{bias} = -0.4\ \mathrm{V}$ 和电子-声子相互作用下的透射谱。

为计算 InelasticTransmissionSpectrum,您首先需要计算系统的 DynamicalMatrixHamiltonianDerivatives

设置动力矩阵计算

LabFloor,将文件 transmission_V-0.4.hdf5 中的 DeviceConfiguration 数据块拖拽到 Script generator。删除 DeviceSemiEmpiricalCalculator 并替换为 ForceFieldCalculator

  • Parameter set 菜单的可选经典势中选择“StillingerWeber_Si_1985”

按照以下添加模块并设置其参数:

  • Study Objects DynamicalMatrix
    • 设置 Repetitions“Custom”
    • 设置 number of repetitions 为:
      • $\mathrm{n_A} = 3$
      • $\mathrm{n_B} = 3$
      • $\mathrm{n_C} = 1$
    • 取消勾选 “Acooustic sum rule” 选项
    • 勾选 “Constrain electrodes” 选项
    • 取消勾选 “Equivalent bulk” 选项
  • Analysis VibrationalMode

最后,在 Global IO 选项处,将 Default output file 的名称更改为 dynmat.hdf5

点击 按钮将脚本发送到 Job manager,保存为 dynmat.py。按下 按钮运行计算。您也可以在此处下载完整的脚本:↓ dynmat.py

注意

或者,您也可以采用 special thermal displacement - Landauer method (STD-Landauer)将电声耦合效应包含在传输计算内,计算成本会降低很多。The STD-Landauer case study 中探讨的系统与本教程讨论的相似。

设置哈密顿量导数计算

LabFloor,将文件 transmission_V-0.4.hdf5 中的 DeviceConfiguration 数据块拖拽到 Script generator,按照以下修改 New Calculator 模块:

  • Hamiltonian,勾选 “No SCF iteration” 选项

添加一个 Study Objects HamiltonianDerivatives 模块,参照以下设置参数:

  • 设置 Repetitions“Custom”
  • 设置 number of repetitions
    • $\mathrm{n_A} = 3$
    • $\mathrm{n_B} = 3$
    • $\mathrm{n_C} = 1$
  • Constraints,点击 Add,利用 Fixed 约束电极重读,因此受到约束的原子应该是:0,1,2,3,44,45,46,47
  • 取消勾选 “Equivalent Bulk” 选项。

Global IO 的选项里,更改 Default output file 的名称为 dHdR_V-0.4.hdf5

点击 按钮将脚本发送到 Job manager,保存为 dHdR_V-0.4.py,按下 按钮运行计算。本次计算使用 8 个 CPU 将耗时 20 分钟。您可以在此处下载完整的脚本:↓ dHdR_V-0.4.py

注意

在此,为加快计算速度,对哈密顿量导数做了非自洽计算。

计算非弹性透射谱

为计算电流的非弹性部分,点击 Script generator,添加以下模块:

  • Analysis from File
  • Analysis InelasticTransmissionSpectrum

打开 Analysis from File 模块,选择 transmission_V-0.4.hdf5 文件,加载文件中包含的 DeviceConfiguration 数据块。

您将会注意到还添加了两个其他的模块:

  • DynamicalMatrix
  • HamiltonianDerivaties

在我们的示例中,动力学矩阵和哈密顿量导数已经在之前计算出来了,可以重复使用。删除这两个模块,再添加两个 Analysis from File 模块,按照下图排列:

点击从上数第二个 Analysis from File 模块。选择 dynmat.hdf5 文件,加载 DynamicalMatrix 数据块。取消勾选这个文件中包含的 DeviceConfiguration 数据块。该面板应如下图所示:

然后,点击从上数第三个 Analysis from File 模块。选择 dHdR_V-0.4.hdf5 文件,加载 HamiltonianDerivatives 数据块。该面板应如下图所示:

最后,为 Analysis InelasticTransmissionSpectrum 模块设置如下参数:

  • Energy 部分,设置:
    • $\mathrm{E_0} = -0.5\ \mathrm{eV}$
    • $\mathrm{E_1} = 0.5\ \mathrm{eV}$
    • Points = 25
  • k-point Sampling 部分:
    • 设置 Grid type“Regular k-point grid”
    • 设置 $\mathrm{k_A}$ 和 $\mathrm{k_B}$ 的网格范围为 $[-0.2 : 0.2]$
    • 设置 Sampling 为:
      • $\mathrm{k_A} = 3$
      • $\mathrm{k_B} = 3$
  • q-point Sampling 部分:
    • 设置 Grid type“Regular q-point grid”
    • 设置 $\mathrm{q_A}$ 和 $\mathrm{q_B}$ 的网格范围为 $[-0.5 : 0.5]$
    • 设置 Sampling 为:
      • $\mathrm{q_A} = 9$
      • $\mathrm{q_B} = 9$

Global IO 选项里,更改 Default output file 的名称为 xloe_V-0.4.hdf5

点击 按钮将脚本发送到 Job manager,保存为 xloe_V-0.4.py,按下 按钮运行计算。本次计算使用 24 个 CPU 将耗时一个半小时。您可以在此处下载完整的脚本:↓ xloe_V-0.4.py

分析非弹性透射谱

利用 Inelastic Transmission Spectrum Analyzer 可以详细地分析非弹性透射谱的结果。

LabFloor,选择文件 xloe_V-0.4.hdf5 InelasticTransmissionSpectrum 数据块,然后点击屏幕右侧插件面板中的 Inelastic Transmission Spectrum Analyzer 插件。

首先,您将分析电流对 $\mathbf{k}$ 和 $\mathbf{q}$ 的依赖性。在分析器的主窗口,设置以下参数:

  • Plot type“Current vs. k-points”
  • Bias voltage:$-0.4\ \mathrm{V}$

您将获得的图与下图相似,展示了在取样的 k 点范围内电流对 $\mathbf{k}$ 依赖性。从图中可以明显看出,对电流的主要贡献来源于由 $k_\mathrm{A}$ 和 $k_\mathrm{B}$ 定义的二维布里渊区的 $\Gamma$ 点,也不可忽视有限 $\mathbf{k}$ 矢量的贡献。

接下来,把 Plot type 更改为 “Current vs. q-points”。您将获得与以下相似的图,展示了电流对 $\mathbf{q}$ 的依赖性。从图中可以明显看出,对电流的主要贡献来源于由 $q_\mathrm{A}$ 和 $q_\mathrm{B}$ 定义的二维布里渊区的 $\Gamma$ 点,也不可忽视有限 $\mathbf{q}$ 矢量的贡献。

上面的两个图都表明电流主要与发生在二维布里渊区 $\Gamma$ 点的传输右端,无论是 $\mathbf{k}$ 空间和 $\mathbf{q}$ 空间。为分析得出 $\Gamma$ 点的哪一种声子模贡献最大,按照下面设置分析器的主窗口:

  • Plot type“Current vs. phonon mode”
  • k-points“(0.00, 0.00)”
  • q-points“(0.00, 0.00)”

从上图可以看出,对电流贡献最大的声子指数为 66,能量为 $\hbar \omega = 63.01\ \mathrm{meV}$。

选择在 “设置动力学矩阵计算” 部分得到的文件 dynmat.hdf5 中的 VibrationalMode 数据块,使用 Vibration Visualizer 可以将声子模可视化。

注意

在上面显示的图中,电流值是负的,因为模拟是在反向偏压条件下执行的。

分别在有和无电子-声子作用下电流的计算

为计算无电子-声子作用下的电流,下载脚本 ↓ current.py 并利用以下命令在终端运行:

atkpython current.py transmission_V-0.4.hdf5 xloe_V-0.4.hdf5

注意

在 Windows 系统,从终端运行脚本 current.py 并不方便。在此脚本中,您可以将 filename1 和 filename2 替换为 transmission_V-0.4.hdf5xloe-V-0.4.hdf5。将其拖到 Job manager 运行。

脚本将会计算电流的弹性($I_\mathrm{el}$)和非弹性($I_\mathrm{inel}$)成分。有和无电子-声子作用下的总电流将通过以下公式计算得出:

$$I (\mathrm{w/o\ interactions}) = I_\mathrm{el}$$ $$I (\mathrm{w\ interactions}) = I_\mathrm{el} + I_\mathrm{inel}$$

计算的输出将显示用作输入的文件名称,以及计算出的电流值(黄色突出显示):

注意

因为不同的 k 点取样,上面计算的电流与 InelasticTransmissionSpectrum 分析之前的电流不同。同样的在本例中,电流的值为负,因为模拟是在反向偏压条件下执行的。

可以看出,电子-声子散射导致反向偏压电流增加了大约三个数量级!

加速计算

ATK 实现了一些可用于大大加快计算速度并能够计算包含数千个原子器件非弹性透射的方法。这些方法是:

  • “声子能量间隔”法
  • 使用体积动力学矩阵和哈密顿量导数的可能性

关于这些方法的详细说明,请参见 ATK 手册InelasticTransmissionSpectrum 模块的 Large Device Calculations 部分。

“声子能量间隔”法

该方法允许我们将含有 $N$ 个振动原子器件的 $3N$ 个声子模分隔成 $M$ 个能量间隔以形成 $M$ 个新的有效声子模,其中 $M << 3N$。因此,将仅针对这 $M$ 个有效声子模计算非弹性透射谱,从而大大降低了计算成本。

LabFloor,将文件 transmission_V-0.4.hdf5 中的 DeviceConfiguration 数据块拖拽到 Script generator。如 “计算非弹性透射谱” 章节中那样设置计算,但在此处 Phonons 部分的 Phonon Method 设为 “Phonon energy intervals”

注意

Phonon energy intervals 的默认参数对于当前的计算是可以的,但是一般人们应该要确保能量范围 $[E_\mathrm{0}:E_\mathrm{1}]$ 的跨越计算得到动力学矩阵声子模的范围。

Global IO 选项,变更 Default output file 名称为 xloe_pheint_V-0.4.hdf5

点击 按钮将脚本发送到 Job manager,保存为 xloe_pheint_V-0.4.py,按下 按钮运行计算。本次计算使用 24 个 CPU 将耗时 20 分钟。您可以在此处下载完整的脚本:↓ xloe_pheint_V-0.4.py

计算完成后,输入以下命令运行脚本 ↓ current.py

atkpython current.py transmission_V-0.4.hdf5 xloe_pheint_V-0.4.hdf5

如果您是 Windows 用户,可参考 how to run the script

结果输出如下:

您可以看到,尽管现在的计算要快得多,但电流的计算值与 “分别在有和无电子-声子作用下电流的计算” 结果基本相同。

使用块体动力学矩阵和哈密顿量导数

加快计算速度的另一种方法是使用块体电极的动力学矩阵和哈密顿导数,而不是器件的。但是,除了掺杂、静电区和施加的偏置电压,这仅对于具有沿 $\mathrm{C}$ 方向平移不变的结构器件是可行的。

可以从此处下载计算块状电极的动力学矩阵和哈密顿量导数所需的脚本:↓ dynmat_bulk.py↓ dHdR_bulk.py。使用 4 个 CPU 只需要不到 2 分钟就能完成这两个计算。

为了使用块体动力学矩阵和哈密顿量导数计算电流的非弹性透射谱,请重复遵循 “计算非弹性透射谱” 章节中的步骤,并按照下面的描述更改:

首先,点击 Script generator,添加以下模块,按照如下修改参数:

  • Analysis from File
    • tranmission_V-0.4.hdf5 文件下载 DeviceConfiguration 数据块
  • Analysis InelasticTransmissionSpectrum
    • 按照 “计算非弹性透射谱” 章节内容设置参数。

删除 DynamicalMatrix 和 HamiltonianDerivatives 模块,在之前已经存在的 Analysis from File 之后添加另外两个 Analysis from File 模块,按照如下设置参数:

  • 点击从上数第二个 Analysis from File 模块,选择 dynamic_bulk.hdf5 文件并下载其中的 DynamicalMatrix 数据块。
  • 点击从上数第二个 Analysis from File 模块,选择 dHdR_bulk.hdf5 文件并下载其中的 HamiltonianDerivatives 数据块。

Global IO 选项,将 Default output file 名称设置为 xloe_V-0.4_bulk.py。在本例中,按照以下修改 Editor 中的 Inelastic Transmission Spectrum 模块。

1      inelastic_transmission_spectrum = InelasticTransmissionSpectrum(
2          configuration=device_configuration,
3          bulk_dynamical_matrix=dynamical_matrix,
4          bulk_hamiltonian_derivatives=hamiltonian_derivatives,
5          energies=numpy.linspace(-0.5, 0.5, 25)*eV,
6          kpoints=kpoints,
7          qpoints=qpoints,
8          self_energy_calculator=RecursionSelfEnergy(),
9          energy_zero_parameter=AverageFermiLevel,
10          infinitesimal=1e-06*eV,
11          phonon_modes=All,
12          method=XLOE,
13          spectral_representation=True,
14          electrode_extensions=[0, 0],

点击 按钮,将脚本发送到 Job manager,保存为 xloe_V-0.4_bulk.py,按下 按钮运行计算。同样在本例中,使用 24 个 CPU时计算仅需 20 分钟。您也可以在此处下载完整的脚本:↓ xloe_V-0.4_bulk.py

计算完成后,输入以下命令运行脚本 ↓ current.py

atkpython current.py transmission_V-0.4.hdf5 xloe_V-0.4_bulk.hdf5

如果您使用的是 Windows 系统,请参考上文提到的注意事项。

结果输出将是:

尽管由于现实的原因存在一些差异,如没有考虑因施加偏压使哈密顿导数丢失了平移不变性,但我们可以看出,电流的计算值与利用器件构型的动力学矩阵和哈密顿导数计算的电流相似。

参考

atk/硅p-n结中的非弹性电流.txt · 最后更改: 2020/02/28 23:43 由 xie.congwei

© 2014-2022 费米科技(京ICP备14023855号