用户工具

站点工具

本页面的其他翻译:
  • zh

atk:inas_p-i-n_结

这是本文档旧的修订版!


InAs p-i-n 结

概述

本教程演示如何进行一个InAs的器件计算,建立氢钝化的InAs(100)方向结构并建立 p-i-n 结。

InAs 二维体系的带隙

建立 InAs 二维体系的几何结构

在VNL图形界面中打开 Builder,点击 AddFrom Database,搜索 InAs。点击右下角“+”将结构添加到 BuilderStash 中。

下一步是将晶格常数修改为实验中室温下的晶格常数,即 $a=6.0583 Å $

  • 展开右侧工具栏中的Bulk ToolsLattice Parameters…
  • 选择保持分数坐标不动 fractional
  • 将 $a$ 设置为6.0583 Å

接下来打开右侧工具栏 BuilderSurface (Cleave)… 来沿着 (100) 方向切割晶体。

  • 保持默认 (100) 方向不动,点击 “Next>”;
  • 保持默认晶格不动,点击“Next>”;
  • 保持默认超胞不动(此时方向确保为垂直表面方向);
  • 点击“Finish”。

接下来打开 Bulk toolsRepeat,输入 A=12,B=1,C=1,点击 Apply

用快捷键 Ctrl+R 重设视角。

此时,应计算一下晶胞的大小,因为接下来对 p-i-n 结构进行掺杂时需要计算掺杂浓度。打开Bulk ToolsLattice Parameters,晶胞体积在 Lattice Parameters 窗口的底部给出:1334.15 Å3

要完成设置:

  • 打开Bulk toolsLattice Parameters,选择保持 Cartesian,将 A 矢量长度设为 80 Å;
  • 打开 Coordinate toolsCenter,将结构置于所有三个方向的中心。
  • 打开 Coordinate toolsCustom Passivator;选择 Hybridization 4(sp3),将结构钝化。

此时,结构应如下图所示。

接下来,将结构发送到 Script Generator 中进行计算设置。

设置并运行计算

我们用自洽的Vogl模型计算此体系的DOS,为此我们需要使用自定义的参数设置,这是因为老版本中 VNL 默认数据中不包含 InAs 和 H 的数据。

为此:

  • 添加 New Calculator;
  • 添加 Analysis→DensityOfStates;
  • 添加 Analysis→Bandstructure;
  • 将输出文件设为InAs_5nm.nc。

打开 New Calculator 单元,进行如下设置:

  • 设置 ATK-SE: Slater-Koster calculator;
  • 将 k 点设为:1,11,11;
  • 取消 No SCF iteration 设定。

打开 DensityOfStates,将 k 点设为 1,15,15。

打开 Bandstructure,将 points per segment 设为201。

将脚本保存为 InAs_5nm.py

自定义计算方法参数

新版用户也可以在 Slater-Koster 基组中选择 Bassani.InAsH sp3d5s* 基组,并设置端基氢的电荷,将以下段落置于 Caculator 之前,不必再设置自定义基组。

# Add external potential
external_potential = AtomicCompensationCharge([
    ('H_As', -0.25),
    ('H_In', 0.25)
    ])
 
bulk_configuration.setExternalPotential(external_potential)

将脚本用Editor打开。ATK中缺少定义 H-端基的 InAs 紧束缚基组,下面脚本中提供了这个基组。在 InAs_5nm.py 中,将 Calculator一段用以下替代:

# Add external potential
external_potential = AtomicCompensationCharge([
    ('H_As', -0.25),
    ('H_In', 0.25)
    ])
 
bulk_configuration.setExternalPotential(external_potential)
 
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
 
basis_set = Bassani.InAs_Basis
 
as_onsite_parameters = SlaterKosterOnsiteParameters(
    element=PeriodicTable.Arsenic,
    angular_momenta=[ 0 , 1 , 2 , 0 ],
    occupations=[ 1.577, 3.012, 0.204, 0.067 ],
    filling_method=SphericalSymmetric,
    ionization_potential=[ -5.9801*eV , 3.5813*eV , 12.1954*eV , 17.8411*eV ],
    onsite_hartree_shift=7.81664*eV,
    onsite_spin_split=ATK_W(PeriodicTable.Arsenic, [ "4s", "4p", "4p", "4s" ]),
    onsite_spin_orbit_split=[0.0,2*0.1763,0.0, 0.0]*eV,
    )
 
in_onsite_parameters = SlaterKosterOnsiteParameters(
    element=PeriodicTable.Indium,
    angular_momenta=[ 0 , 1 , 2 , 0 ],
    occupations=[ 1.113, 1.668, 0.300, 0.059 ],
    filling_method=SphericalSymmetric,
    ionization_potential=[ 0.3333*eV , 6.4939*eV , 12.1954*eV , 17.8411*eV ],
    onsite_hartree_shift=3.34624*eV,
    onsite_spin_split=ATK_W(PeriodicTable.Indium, ["5s", "5p", "5p", "5s"]),
    onsite_spin_orbit_split=[0.0,2*0.1248,0.0, 0.0]*eV
)
h_onsite_parameters = SlaterKosterOnsiteParameters(
    element=PeriodicTable.Hydrogen,
    angular_momenta=[ 0 ],
    occupations=[ 1],
    filling_method=SphericalSymmetric,
    ionization_potential=[ 0.6*eV  ],
    onsite_hartree_shift=ATK_U(Hydrogen, ['1s']),
    onsite_spin_split=[[0.0]]*eV,
    )
offsite_parameters = basis_set.offsiteParameters()
basis_set = SlaterKosterTable(
                arsenic = as_onsite_parameters,
                indium = in_onsite_parameters,
                hydrogen = h_onsite_parameters,
                in_as_sds =  offsite_parameters['in_as_sds'],
                in_as_pdp =  offsite_parameters['in_as_pdp'],
                in_as_sss =  offsite_parameters['in_as_sss'],
                in_as_pds =  offsite_parameters['in_as_pds'],
                in_as_ddp =  offsite_parameters['in_as_ddp'],
                as_in_pds =  offsite_parameters['as_in_pds'],
                as_in_pdp =  offsite_parameters['as_in_pdp'],
                in_as_dds =  offsite_parameters['in_as_dds'],
                as_in_s1ps = offsite_parameters['as_in_s1ps'],
                in_as_s1ps = offsite_parameters['in_as_s1ps'],
                in_as_ppp =  offsite_parameters['in_as_ppp'],
                in_as_s1s1s =offsite_parameters['in_as_s1s1s'],
                in_as_pps =  offsite_parameters['in_as_pps'],
                in_as_ddd =  offsite_parameters['in_as_ddd'],
                as_in_s1ss = offsite_parameters['as_in_s1ss'],
                as_in_sps =  offsite_parameters['as_in_sps'],
                as_in_s1ds = offsite_parameters['as_in_s1ds'],
                in_as_s1ds = offsite_parameters['in_as_s1ds'],
                as_in_ss1s = offsite_parameters['as_in_ss1s'],
                in_as_sps =  offsite_parameters['in_as_sps'],
                as_in_sds =  offsite_parameters['as_in_sds'],
                h_as_sss = [(0.5*Ang, -3.5*eV), (1.0*Ang, -3.5*eV), (1.25*Ang, -3.5*eV),
                            (1.5*Ang, -3.5*eV), (1.6*Ang, -3.5*eV), (1.7*Ang, -3.5*eV),
                            (1.8*Ang, -3.5*eV), (1.9*Ang, -3.5*eV), (2.0*Ang, -3.5*eV),
                            (2.1*Ang, -3.5*eV), (2.2*Ang, 0.0*eV)],
                h_in_sss = [(0.5*Ang, -3.5*eV), (1.0*Ang, -3.5*eV), (1.25*Ang, -3.5*eV),
                            (1.5*Ang, -3.5*eV), (1.6*Ang, -3.5*eV), (1.7*Ang, -3.5*eV),
                            (1.8*Ang, -3.5*eV), (1.9*Ang, -3.5*eV), (2.0*Ang, -3.5*eV),
                            (2.1*Ang, -3.5*eV), (2.2*Ang, 0.0*eV)],
                h_as_sps = [(0.5*Ang, 4.5*eV), (1.0*Ang, 4.5*eV), (1.25*Ang, 4.5*eV),
                            (1.5*Ang, 4.5*eV), (1.6*Ang, 4.5*eV), (1.7*Ang, 4.5*eV),
                            (1.8*Ang, 4.5*eV), (1.9*Ang, 4.5*eV), (2.0*Ang, 4.5*eV),
                            (2.1*Ang, 4.5*eV), (2.2*Ang, 0.0*eV)],
                h_in_sps = [(0.5*Ang, 4.5*eV), (1.0*Ang, 4.5*eV), (1.25*Ang, 4.5*eV),
                            (1.5*Ang, 4.5*eV), (1.6*Ang, 4.5*eV), (1.7*Ang, 4.5*eV),
                            (1.8*Ang, 4.5*eV), (1.9*Ang, 4.5*eV), (2.0*Ang, 4.5*eV),
                            (2.1*Ang, 4.5*eV), (2.2*Ang, 0.0*eV)],
    )

此脚本包含两个部分的内容。第一部分将与As连接的氢的电荷修改为0.75,而与 In 连接的氢电荷修改为1.25。第二部分则定义了Slater-Koster基组和氢钝化的参数,以去除带隙中的悬挂键能级。

将脚本保存,并提交到 Job Manager进行计算。

分析结果

在主窗口中选中结果文件InAs_5nm.nc,在LabFloor中找到 DOS 和 Bandstructure 数据对象。作出 DOS 和 Bandstructure 图以确定带隙。

用如下脚本可以得到带隙的精确值 0.759 eV。

print_band_gap.py
bandstructure = nlread("InAs_5nm.nc", Bandstructure)[-1]
print bandstructure._directBandGap().inUnitsOf(eV)

电子亲和能

由于二维 InAs 体系的带隙大于 0 K 下块体 InAs的带隙(0.415 eV),可以想见此此体系的电子亲和能也与干净的(110)表面(4.55 eV)不同。

在这一节中,我们这样计算未掺杂的半导体的电子亲和能($E_{aff}$),即导带底($CBM$)与真空能级($E_{vac}$)的能量差。 使用之前的Bassani基组时,这两个能量无法直接关联起来,因此,我们可以使用DFT方法(如MGGA泛函)来计算。

InAs 块体

首先,我们将MGGA计算的带隙拟合到我们本教程采用Slater-Koster得到的带隙。详细方法参见【MetaGGA 与二维受限 InAs】。

用 S-K 方法和Bassani基组计算得到的 InAs 块体带隙为 0.54 eV,MGGA TB09需要的拟合参数 c 值则为0.98614。在接下来本教程的MGGA计算中将一直采用这个数值:

#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = MGGA.TB09LDA(c=0.98614)

注意:增加自旋-轨道耦合可以进一步改善带隙计算的精度,然而,要小心计算量将大大增加。此处仅计算非极化的自旋态。

InAs 片层

模拟 InAs(100) 二维 p-i-n 结

建立FET器件结构模型

零栅压计算

栅极功函数

定义金属栅极功函数

调控金属栅极功函数

p-i-n 器件的晶体管特性

设置并运行栅压扫描

模拟漏极区部分覆盖

分析结果

参考文献

atk/inas_p-i-n_结.1490003522.txt.gz · 最后更改: 2017/03/20 17:52 由 dong.dong

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