这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
atk:meta-gga和二维受限的砷化铟 [2019/01/02 23:25] – [利用伪氢钝化] 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 的能带结构 ===== | ||
行 329: | 行 338: | ||
- | {{ : | + | {{ : |
* 更改 H_As 原子的赝势为“FHI Fractional LDA.PZ”,设置基组为“DoubleZetaPolarized, | * 更改 H_As 原子的赝势为“FHI Fractional LDA.PZ”,设置基组为“DoubleZetaPolarized, | ||
* 更改 H_In 的赝势为“FHI Fractional LDA.PZ”,基组为“DoubleZetaPolarized, | * 更改 H_In 的赝势为“FHI Fractional LDA.PZ”,基组为“DoubleZetaPolarized, | ||
- | {{ : | + | {{ : |
行 368: | 行 377: | ||
===== 结果 ===== | ===== 结果 ===== | ||
+ | 采用 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:// | ||