目录

器件计算中重复使用电极

本文为使用 QuantumATK 电子器件的典型研究,涉及对器件区域进行不同修改产生影响的系统研究。修改的变动可以是半导体线中的掺杂剂/空位的原子位置或类型,或者是附着到纳米管上的不同分子等。在任何情况下,电极通常都保持不变。因此,可以仅计算一次电极的电子结构,然后在其他计算中对其重复使用以节省计算时间。

因此,在本教程中,您将学习如何重复使用器件电极进行不同的计算,从而通过仅计算一次电极的收敛状态来节省时间。

注意

方法 QuantumATK 的器件计算通常分为两步:首先计算电极的自洽状态,然后进行实际的器件计算。任何之后的 SCF 分析和其他操作都是在这两个步骤之后完成的。

重复使用初始电极计算是这样的:如上所述,从为正常器件计算所设计的 Python 脚本开始,您将该计算分成两个脚本:一个脚本用于计算并保存电极的自洽状态,另一个重复使用这些电极并在器件计算中直接启用。

警告

计算设置 重要的是,用于电极计算的参数与将在最终器件计算中使用的参数相同,或者至少非常近似。否则,电极费米能级相对于器件平均费米能级可能会发生变化,导致 SCF 收敛出现问题。

因此,首先要确定数值精度参数,如交换关联函数、温度、网格截止、基组等,然后在整个计算程序中坚持使用这些参数。

此外,电极和器件 k 点取样在 A 和 B 方向上相互匹配是绝对必要的!您不能在器件中沿 A 使用 3 个 k 点,而在电极中沿 A 使用 7 个 k 点。

电极和器件的单独脚本

需要准备一些脚本,但主要是复制/粘贴现有的 Python 代码行:

  1. 首先,像您通常对待某些具有代表性的中心区域那样设置完整的器件计算。可以使用 Script Generator 完成此项任务,并为要使用的数值精度参数做出适当的选择。
  2. 保存脚本的两个副本:electrode.pydevice.py
  3. 在 Editor 中打开 electrode.py,并向下滚动到定义 device_configuration 的位置,通常如下图所示,删除这些行。
device_configuration = DeviceConfiguration(
    central_region,
    [left_electrode, right_electrode]
    )

提示

脚本 electrode.py 仅用于计算电极。您可能希望完全删除中心区域的定义以保持整洁,但这并非是绝对必要的。

4.现在向下滚动至脚本末尾,删除与器件计算器相关的所有内容。也就是说,从以下注释行中删除所有行直至脚本末尾:

#----------------------------------------
# Device Calculator
#----------------------------------------

5.在脚本末尾添加以下几行,并将脚本保存为 electrodes.py

left_electrode.setCalculator(left_electrode_calculator)
left_electrode.update()
nlsave('left_electrode.nc', left_electrode)
right_electrode.setCalculator(right_electrode_calculator)
right_electrode.update()
nlsave('right_electrode.nc', right_electrode)

注意

在电极完全相同的情况下,删除涉及 “right_electrode” 的三行,并从所有剩余变量中删除带有 “left” 前缀的:

electrode.setCalculator(electrode_calculator)
electrode.update()
nlsave('electrode.nc', electrode)

6.运行电极脚本,如利用 Job Manager

7.现在开始修改脚本 device.py。从头开始,删除所有涉及左右电极结构的行,即删除所有线直至(但不包括)

# -------------------------------------------------------------
# Central region
# -------------------------------------------------------------

8.代替地,在脚本的顶部添加以下行,即从文件中读取保存的电极:

left_electrode = nlread("left_electrode.nc")[0]
right_electrode = nlread("right_electrode.nc")[0]

提示

在电极完全相同的情况下,如果仅执行并保存单个电极计算,如 electrode.nc,使用此文件可以加载两个电极。

9.建议(但不是绝对必要)也删除电极计算器的定义,包括器件计算器中的几行:

electrode_calculators=
    [left_electrode_calculator, right_electrode_calculator],

是的,您已成功将电极和器件计算分离成了两个脚本。完成电极计算后,您可以运行 device.py,并观察到它完全绕过了电极计算。

提示

下一步是什么? 对于这些电极计算的每个新的中心区域结构,只需替换 device.pycentral_region 的定义,然后运行器件计算。确认检查器件参数,如偏压等。

或者,您可以将上面的步骤 7-9 应用于任何完整的器件计算脚本,同时牢记有关数值精度参数的要点。

参考