在这篇教程里,你将会学习到:
本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。
接下来,我们首先使用半经验的方法(ATK-SE)计算,哈密顿量由 Slater-Koster 模型给出。
bulk_SK.nc
”,然后用右下角箭头图标发送脚本至 Job Manager。bulk_SK.nc
” 中的 Bandstructure 能带图标。单击选中图标,通过单击左侧 Bandstructure Analyzer 绘制能带。ATK-DFT中的TB09 MGGA近似[参考文献:aTB09],已经在Meta-GGA 和二维受限的砷化铟教程中详细介绍。为了对比Slater-Koster与MGGA结果的差异,我们将会拟合参数c,使得MGGA的带隙可以和Slater-Koster相匹配。在本教程中,我们将会使用这个拟合参数 c 进行 MGGA 计算。
MGGA_bulk.nc
”。MGGA_bulk.nc
文件中得到四个不同的能带结果。从图中可以看出,TB09-c参数对能带计算具有重要影响,并且可以看出,影响是线性的。从脚本输出可知,最佳的c值是1.048.
如果仔细看“Bandstructure_fit.py
”脚本,将会看到能带计算部分由下面提供:
bandstructure = nlread("file.nc", Bandstructure)[0] gap_direct = bandstructure._directBandGap().inUnitsOf(eV) gap_indirect = bandstructure._indirectBandGap().inUnitsOf(eV) print "direct gap: %.2f eV" % gap_direct print "indirect gap: %.2f eV" % gap_indirect
现在,我们构造一个硅单晶器件。
这52层晶胞将构成中心区域。由于硅半导体较长的屏蔽层,器件需要足够长(14nm),详细解释参见Doping in QuantumATK: the Ni silicide - Si interfaces. 从下面的结果可以看出,这个器件仍旧不够长,但是,为了能较快的用MGGA计算,我们在本教程中选择用52层器件。
接下来,我们将会学习如何利用 Slater-Koster 模型计算p-n硅单晶器件的 IV 特性曲线。
IV_2e19_SK.nc
。我们需要设置合适的掺杂以获得一个p-n结。为此,我们将脚本发送至 Editor 窗口,找到脚本中定义结构的部分:
device_configuration = DeviceConfiguration( central_region, [left_electrode, right_electrode] )
在这部分之前,添加一下内容,使之获得一个掺杂浓度为 2×1019 cm-3 的 p-n 结:
# ------------------------------------------------------------- # Add Doping # ------------------------------------------------------------- doping_density = 2e+19 # Calculate the volume and convert it to cm^-3 # Note: right and left electrodes have the same volume, volume = right_electrode_lattice.unitCellVolume() volume = float(volume/(0.01*Meter)**3) # Calculate charge per atom doping = doping_density * volume / len(right_electrode_elements) # Add p- and n-type doping to the central region external_potential = AtomicCompensationCharge([ ('p_doping', -1*doping), ('n_doping',doping) ]) central_region.setExternalPotential(external_potential) # Add doping to left and right electrodes left_electrode.setExternalPotential( AtomicCompensationCharge([(Silicon, -1*doping)])) right_electrode.setExternalPotential( AtomicCompensationCharge([(Silicon, doping)]))
发送脚本至 Job Manager,运行计算。
通过脚本中的分析,以及在 Job Manager 中多线程并行计算,对于零偏压部分的计算,将会花费几分钟,而对于整个IV曲线的计算则需要几个小时。在 2014版中,利用不同方法和计算透射谱所花的时间与并行数的关系如图所示。
这个计算是运行在 Intel e5472 3.0 GHz 的机器上,图中用单点描述的是 13.8 版,调用12个进程的结果。整体来看,2014版 比13.8版有 25%~30% 的速度提升。 计算详细参数:零偏压,对于 SCF 采用 7x7x100 的k点,透射计算则取 21×21。其他所有参数均按照本教程设置。 可以看出对于 post-SCF 计算和透射谱计算,Slater-Koster 方法效率远大于其他方法。
当 Slater-Koster 计算运行时,我们可以设置 DFT-MGGA 计算。回到 Script Generator 窗口,修改 Calculator 部分:
移除除了 IVCurve 外的所有分析项,然后设置器件掺杂。并提交运算。
一旦两个计算结束,在项目文件夹中,我们会在nc文件中看到两个 IVCurve 项,图标为
从图中可以看出,Slater-Koster 方法和 DFT-MGGA 方法计算结果几乎是一样的。
下图是p-n结电子态示意图,图中画出了势能沿输运方向随坐标的变化。
通过 VNL 和 QuantumATK 中的 DeviceDensityOfStates 或者 LocalDensityOfStates,可以很容易的绘制这幅图。
在这,我们可以通过分析DDOS,绘制出势能沿输运方向的势能图,从此处下载脚本ddos_edp.zip。
为了能正常运行脚本,nc文件中必须包含以下几个内容:DeviceConfiguration, Device DensityOfStates 和 ElectrostaticDifferencePotential。我们可以通过 Editor 窗口自定义脚本。
特别注意,ddos_edp.py 脚本需要读取以下内容:
为了获取 DDOS,在终端运行:
atkpython ddos_edp.py IV_2e19_SK.nc
其中IV_2e19_SK.nc
文件,包含上述所有的计算内容。同样可以为有限偏压绘制电势图,详见下一部分。结果如下:
为了计算有限偏压(V=-1V~1V),作如下设置:
ivcurve_selftconsistent_configuration.nc
文件中,选择偏压为 -1V 的器件结构,将其拖拽至Script 窗口。Analysis_ivcurve_10.nc
。Analysis_ivcurve_10.nc
读取 device_configuration 文件。# ------------------------------------------------------------- # Analysis from File # ------------------------------------------------------------- device_configuration = nlread('ivcurve_selfconsistent_configurations.nc', object_id='ivcurve010')[0]
nlsave('ivcurve_selfconsistent_configurations.nc', device_configuration)
ddos_edp.py
,以获得器件态密度图。运行 ddos_edp.py
命令如下:atkpython ddos_edp.py Analysis_ivcurve_10.nc
按照相同的步骤,可以在 ivcurve_selftconsistent_configuration.nc
文件中绘制其他偏压的 DDOS。
从图中可以看到,结果显示电势相对于器件长度来说并未“收敛”,这主要体现在在器件中心区域的两端静电势的梯度并未过渡到零。下图比较了不同长度器件(一个是本教程中的长度,一个要比本教程的长度更长)的 ElectrostaticDifferencePotential。