这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
atk:inas_p-i-n_结 [2017/03/20 15:27] – [设置并运行计算] dong.dong | atk:inas_p-i-n_结 [2018/03/20 22:06] (当前版本) – liu.jun | ||
---|---|---|---|
行 46: | 行 46: | ||
==== 设置并运行计算 ==== | ==== 设置并运行计算 ==== | ||
- | 我们用自洽的Vogl模型计算此体系的DOS,为此我们需要使用自定义的参数设置,这是因为VNL默认数据中不包含 | + | 我们用自洽的Vogl模型计算此体系的DOS,为此我们需要使用自定义的参数设置,这是因为老版本中 |
+ | |||
+ | 为此: | ||
+ | * 添加 New Calculator; | ||
+ | * 添加 Analysis-> | ||
+ | * 添加 Analysis-> | ||
+ | * 将输出文件设为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。 | ||
+ | |||
+ | 将脚本保存为 '' | ||
+ | |||
+ | === 自定义计算方法参数 === | ||
+ | |||
+ | <WRAP center tip 100%> | ||
+ | 新版用户也可以在 Slater-Koster 基组中选择 Bassani.InAsH sp3d5s* 基组,并设置端基氢的电荷,将以下段落置于 Caculator 之前,不必再设置自定义基组。 | ||
+ | |||
+ | <code python> | ||
+ | # Add external potential | ||
+ | external_potential = AtomicCompensationCharge([ | ||
+ | (' | ||
+ | (' | ||
+ | ]) | ||
+ | |||
+ | bulk_configuration.setExternalPotential(external_potential) | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | 将脚本用Editor打开。QuantumATK中缺少定义 H-端基的 InAs 紧束缚基组,下面脚本中提供了这个基组。在 '' | ||
+ | |||
+ | <code python> | ||
+ | # Add external potential | ||
+ | external_potential = AtomicCompensationCharge([ | ||
+ | (' | ||
+ | (' | ||
+ | ]) | ||
+ | |||
+ | 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, | ||
+ | onsite_spin_orbit_split=[0.0, | ||
+ | ) | ||
+ | |||
+ | 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, | ||
+ | onsite_spin_orbit_split=[0.0, | ||
+ | ) | ||
+ | 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, | ||
+ | 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_pdp = offsite_parameters[' | ||
+ | in_as_sss = offsite_parameters[' | ||
+ | in_as_pds = offsite_parameters[' | ||
+ | in_as_ddp = offsite_parameters[' | ||
+ | as_in_pds = offsite_parameters[' | ||
+ | as_in_pdp = offsite_parameters[' | ||
+ | in_as_dds = offsite_parameters[' | ||
+ | as_in_s1ps = offsite_parameters[' | ||
+ | in_as_s1ps = offsite_parameters[' | ||
+ | in_as_ppp = offsite_parameters[' | ||
+ | in_as_s1s1s =offsite_parameters[' | ||
+ | in_as_pps = offsite_parameters[' | ||
+ | in_as_ddd = offsite_parameters[' | ||
+ | as_in_s1ss = offsite_parameters[' | ||
+ | as_in_sps = offsite_parameters[' | ||
+ | as_in_s1ds = offsite_parameters[' | ||
+ | in_as_s1ds = offsite_parameters[' | ||
+ | as_in_ss1s = offsite_parameters[' | ||
+ | in_as_sps = offsite_parameters[' | ||
+ | as_in_sds = offsite_parameters[' | ||
+ | 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进行计算。 | ||
+ | |||
==== 分析结果 ==== | ==== 分析结果 ==== | ||
- | ==== 电子亲和性 ==== | + | 在主窗口中选中结果文件'' |
+ | |||
+ | {{ : | ||
+ | |||
+ | 用如下脚本可以得到带隙的精确值 0.759 eV。 | ||
+ | |||
+ | <file python print_band_gap.py> | ||
+ | bandstructure = nlread(" | ||
+ | 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计算中将一直采用这个数值: | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # Exchange-Correlation | ||
+ | # | ||
+ | exchange_correlation = MGGA.TB09LDA(c=0.98614) | ||
+ | </ | ||
+ | |||
+ | 注意:增加自旋-轨道耦合可以进一步改善带隙计算的精度,然而,要小心计算量将大大增加。此处仅计算非极化的自旋态。 | ||
+ | |||
+ | === InAs 片层 === | ||
+ | |||
+ | 下一步是用MGGA计算片层(slab)模型的电子能带结构以及真空能级。计算将使用之前已经计算过的二维片层,此结构后面将用于电极构建。 | ||
+ | |||
+ | 将 '' | ||
+ | * 将 Calculator 设为 ATK-DFT,选择 MGGA 交换关联泛函,使用 1x11x201 k点,以与电极设置匹配; | ||
+ | * 在 Poisson Solver 设置中选择 multigrid solver,在 A 方向选择 Dirichlet 边界条件; | ||
+ | * 添加 Analysis -> Bandstructure,points per segment 设为 201,bands above Fermi level 设为 50; | ||
+ | * 添加 Analysis -> HartreeDifferencePotential; | ||
+ | * 添加 Analysis -> ChemicalPotential; | ||
+ | * 保存脚本,并运行计算。 | ||
+ | |||
+ | 由于 A 方向设置了 Dirichlet 边界条件,因此真空处真空能级为零。我们可以使用 1D Projector来将 A 方向的 HartreeDifferencePotential 的平均值作图,并分析片层外部的电势衰减。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 从能带结构图中,我们可以获得能带边缘相对于费米能级($E_F$)的数值。$CBM=0.325eV$,$VBM_0=-0.372eV$,因此带隙约为 0.697eV。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 最后,从费米能级的值(相对于Hartree Difference Potential中的零点)和能带边缘的位置可以计算电子亲和能。费米能级的数值可以直接从 Chemical Potential 中读取: | ||
+ | $$ | ||
+ | E_F=-5.41eV, | ||
+ | $$ | ||
+ | |||
+ | 这个二维片层模型的电子亲和能为 5.09 eV,比 InAs(110) 方向的电子亲和能高出 0.5 eV。 | ||
+ | |||
+ | |||
行 55: | 行 251: | ||
==== 建立FET器件结构模型 ==== | ==== 建立FET器件结构模型 ==== | ||
+ | |||
+ | 器件模型建立自 5nm 厚的片层模型。打开 **Builder**,导入 '' | ||
+ | |||
+ | 注意:如果有原子位于单胞外面,将导致电极模型错误。因此我们需要移动结构,使得所有原子都位于晶胞内部。 | ||
+ | |||
+ | 为此,使用 '' | ||
+ | |||
+ | 打开 '' | ||
+ | |||
+ | 最后,打开 '' | ||
+ | |||
+ | 结构如下: | ||
+ | {{ : | ||
+ | |||
+ | 我们要创建一个 60 nm 长的器件,因此这个结构要在 C 方向重复 100 次。打开 '' | ||
+ | |||
+ | === 定义栅极 === | ||
+ | |||
+ | 接下来我们在两侧设置 1 nm 厚的介电绝缘层,并在中间设置双栅极。 | ||
+ | |||
+ | 打开 '' | ||
+ | * 右单击弹出窗口的空白区域,选择 insert new spatial region; | ||
+ | * 将其改为 dielectric,并设置介电常数为3.9。定义分数坐标 a:0.0375-0.165;b:0-1;c:0-1。 | ||
+ | * 再添加一个介电区域,介电常数为3.9.分数坐标为 a:0.8375-0.9625;b:0-1;c:0-1。 | ||
+ | * 再添加一个金属区域,电势为 0.0 Volt。分数坐标为 a:0-0.0375;b:0-1;c:0.33-0.66。 | ||
+ | * 再添加一个金属区域,电势为 0.0 Volt。分数坐标为 a:0。9625-1;b:0-1;c:0.33-0.66。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 最后,将结构转变成器件模型:打开 '' | ||
+ | |||
+ | 接下来是在电极区域也添加绝缘的介电层,这个操作目前无法在图形界面上实现,因此需要使用 Editor 修改脚本。 | ||
+ | |||
+ | 首先,将以下脚本放入左电极定义之后: | ||
+ | |||
+ | <code python> | ||
+ | # Add dielectric region | ||
+ | |||
+ | dielectric_region_0 = BoxRegion( | ||
+ | 3.9, | ||
+ | xmin = 3.0*Ang, xmax = 13.0*Ang, | ||
+ | ymin = 0.0*Ang, ymax = 4.28387*Ang, | ||
+ | zmin = 0.0*Ang, zmax = 6.0583*Ang, | ||
+ | ) | ||
+ | |||
+ | dielectric_region_1 = BoxRegion( | ||
+ | 3.9, | ||
+ | xmin = 67.0*Ang, xmax = 77.0*Ang, | ||
+ | ymin = 0.0*Ang, ymax = 4.28387*Ang, | ||
+ | zmin = 0.0*Ang, zmax = 6.0583*Ang, | ||
+ | ) | ||
+ | |||
+ | dielectric_regions = [dielectric_region_0, | ||
+ | left_electrode.setDielectricRegions(dielectric_regions) | ||
+ | </ | ||
+ | |||
+ | 再在右电极定义之后加入下面脚本: | ||
+ | |||
+ | <code python> | ||
+ | # Add dielectric region | ||
+ | right_electrode.setDielectricRegions(dielectric_regions) | ||
+ | </ | ||
+ | |||
+ | 将脚本发回到Builder,现在结构看上去如下图。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | === 定义掺杂 === | ||
+ | |||
+ | 在新版的 VNL 中,掺杂变得十分容易,可以直接在图形界面上实现。 | ||
+ | |||
+ | 为此,我们先选定左侧三分之一区域的原子(与左电极)设置掺杂为 p 型,浓度 $10^{19}$;右侧设置为 n 型,浓度 $10^{19}$。 | ||
+ | |||
+ | * 使用表达式选择工具比直接用鼠标拖选要方便得多。打开 '' | ||
+ | * 打开 '' | ||
+ | * 打开 '' | ||
+ | * 打开 '' | ||
+ | |||
+ | |||
+ | 接下来,将结构发送到 **Script Generator** 来设置计算。 | ||
+ | |||
==== 零栅压计算 ==== | ==== 零栅压计算 ==== |