目录

原子尺度的电容

在本教程中,您将对平行板纳米电容器进行原子尺度的模拟,这意味着两个平行金属表面之间的间隙在纳米范围内。这目前不是一个真实的器件,目的只是为了展示一种可用于计算其他结构电容的方法,包括金属/半导体/金属结构。

提示

本教程使用特定版本的QuantumATK创建,因此涉及的截图和脚本参数可能与您实际使用的版本略有区别,请在学习时务必注意。

  • 不同版本的QuantumATK的py脚本可能不兼容;
  • 较新的版本输出的数据文件默认为hdf5;
  • 老版本的数据文件为nc文件,可以被新版本读取。

关注

电容器物理 在电容器上施加偏压 $V$,平板上产生反向电荷 $Q$ 的积累,最后在两板间形成电场 $E$。电场强度可以表示为 $E=\sigma/\varepsilon = V/d$,其中 $\sigma = Q/A$ 为电荷密度,$\varepsilon = k \varepsilon_0$ 为板之间分隔层的介电常数(真空或介质)。因此,电容可以由公式 $C = Q/V = Q / Ed = A \varepsilon/d$ 得出,$d$ 为板间距。

计算 以上等式适用于理想的宏观平行板电容器,但纳米尺度的电容器通常是完全不同的。采用第一性原理计算电容的主要方法为估算静电能量,从而得到电容。我们还将展示一种基于原子的 Mulliken 电荷群方法,稍微简单些。

构建平行板电容器

打开 Builder ,按照以下步骤操作:

最终的器件如下图所示。

注意

鬼原子用于完善地描述两表面间的电密度,它们只是被放在空区域中的额外基组。这种有时候会被成为真空基组的基数,也可用于计算表面功函数,如教程中所述:Computing the work function of a metal surface using ghost atoms.

计算

0 偏压

点击 按钮将器件构型发送到 Script Generator ,按如下所示设置脚本:

发送脚本到 Job Manager ,运行计算。在笔记本电脑上需要 15-20 分钟。

有限偏压

为了得到电容,计算 $dq/dV$ 是很有必要的,$dq$ 是表面上的感应电荷,$V$ 是偏压。利用以下脚本执行偏压分别为 0.25 、0.5 、0.75 和 1.0 V 时的计算。

device_configuration = nlread('au_vacuumgap.nc', DeviceConfiguration)[-1]
calculator = device_configuration.calculator()
for voltage in [0.25, 0.5, 0.75, 1.0]:
    # Set new calculator with modified electrode voltages on the configuration
    # use the self consistent state of  the old calculation as starting input.
    device_configuration.setCalculator(
          calculator(electrode_voltages=(0.5*voltage*Volt, -0.5*voltage*Volt)),
                     initial_state=device_configuration)
    device_configuration.update()
    nlsave('au_vacuumgap.nc', device_configuration, object_id="SCF %s" % voltage)
    # -------------------------------------------------------------
    # Mulliken population
    # -------------------------------------------------------------
    mulliken_population = MullikenPopulation(device_configuration)
    nlsave('au_vacuumgap.nc', mulliken_population, object_id="Mulliken %s" % voltage)
    # -------------------------------------------------------------
    # Electrostatic difference potential
    # -------------------------------------------------------------
    electrostatic_difference_potential = ElectrostaticDifferencePotential(device_configuration)
    nlsave('au_vacuumgap.nc', electrostatic_difference_potential, object_id="EDP %s" % voltage)
    # -------------------------------------------------------------
    # Electron difference density
    # -------------------------------------------------------------
    electron_difference_density = ElectronDifferenceDensity(device_configuration)
    nlsave('au_vacuumgap.nc', electron_difference_density, object_id="EDD %s" % voltage)

您可以在此处下载脚本:↓bias_loop.py。用 Job Manager 运行或从终端执行:

$ atkpython bias_loop.py > bias_loop.out

在笔记本电脑上将需要约 1 小时完成计算。

注意

将之前的收敛计算作为下一步计算的初始构想以加速 SCF 收敛。object_id 可以在 post-SCF 分析中更易识别数据。

分析

我们将介绍两种不同的方法计算电容:

基于感应电荷的方法

有限偏压将在两个金表面上形成正/负电荷网络,如下图所示。

现在,原则上电容可以由公式 $C=dq/dV$ 计算得到,$q$ 为偏差函数在一个表面上的总累积电荷。因此,从直线的斜率就可以获得纳米电容器的电容:

上图和基于 Mulliken 群的整个数据分析都可以通过运行脚本:↓mulliken-analysis.py 实现。脚本很长,但这是一个学习 Python 和 QuantumATK 中自定义数据分析的绝佳机会。

结果

脚本显示由数据点拟合的直线得到电容为 5.77*10-22 法拉。为了正确全面地看待这个数字,需要考虑理想平行板电容器,可表达为 $C = \varepsilon A/d$,此处 $vacuum permittivity $ 为真空介电常数,$A$ 为由器件结构计算得到的每个平板的面积。然后您就可以计算平行板间距 $d=A/C$。该步骤也在脚本中完成,并显示结果为 $d$ = 11.05 Å。

将该值与表面金原子之间的距离(13.77 Å)进行比较,所谓图像平面的位置估计高于金表面 1.36 Å。

静电能量分析

要使用更为通用和准确的方法计算电容,您需要首先计算静电能量 $E$,其以偏压 $V$ 为变量的函数表达式为:

$$ E(V)=\frac{1}{2}\int \delta v(\mathbf{r},V) \delta n(\mathbf{r}, V)d\mathbf{r} $$

在这里,$\delta v$ 为诱导静电势,$\delta n$ 为诱导密度。

利用脚本 ↓ potential_plot.py 从已存在的 NetCDF 文件中提取 1 V 偏压下的电势和密度,并生成诱导密度和静电势的图。脚本还报告这两个参数:

提示

图像平面的位置被定义为电场零点处,即静电电势变得平坦的点。

蓝色圆圈对应于原子位置。主要的电荷累积发生在表面正上方非常狭窄的区域,外表面原子和鬼原子之间。

由此,可以将抛物线按照公式 $E(V) = CV^2/2$ 拟合后提取出电容。用脚本 ↓ v-e-plot.py 计算静电能量并拟合得到电容,如下所示。

结果

脚本报告的电容为 $C$ = 5.45*10-22 法拉,与采用 Mulliken 电荷分析的简单方法得到的电容值一致。

脚本还可以报告 $d$ = 11.69 Å,对应于金表面上方 1.04 Å 处的图像平面,非常接近于诱导密度峰值的位置。

关注

这两种方法有什么不同?

在Mulliken电荷分析中,假设左表面上的所有电子具有相同的势,右表面亦如此。当我们卷绕电子密度和静电势时,解释了是由于电子密度的某些部分位于具有有限电场区域中的事实。因此,静电能量分析对于计算电容更准确。

静电能量分析还具有以下优点:它不需要研究人员将原子分为“left”和“right”– 这对于两个金表面来说微不足道,但情况可能并非总是如此。

偏压依赖的电容

以上的分析概述是基于电容与电压无关的假设。然而,并非总是如此。更高级的样条曲线拟合允许您研究电容依赖偏压的系统。

如果您已经在上一部分运行过 mulliken-analysis.pyv-e-plot.py,您现在可以下载并运行脚本 ↓ v-c-plot.py 执行拟合。

注意

那两个脚本保存的数据可用来加速当前脚本分析。

计算获得的电容随偏压变化关系如下。正如所料,在本例中电容随偏压变化很小。

关注

当前示例仅使用了非常少的数据点来说明该方法。通常,您应该采用多于5个数据点以得到准确的分析。

绝缘垫片材料

真空间隙中的电场非常强(在1 V偏压下超过900*106 V / m),可以立即导致器件被击穿放电。用介电材料代替电容器板之间的真空间隙可以部分解决这个问题。

在 QuantumATK 中有两种不同的方式可以实现:

  1. 数字列表项目插入介电材料,明确地形成两个金属-半导体-金属的界面。
  2. 数字列表项目采用低级且不太严谨的方法,即您只需要修改两个金界面间区域的介电常数。

出于演示的目的,我们在此选择第二种方法。实际上有两种不同的方法可以修改介电常数:

注意

在这两种情况下都很有必要使用 Multigrid 泊松求解器,但你仍然可以沿 A 和 B 方向上设置周期性的边界条件。

隐式溶剂法

按照静电能量分析法计算电容的步骤操作,但修改 Poisson solverMultigrid。请这样做:

  1. 复制脚本 au_vacuumgap.pyau_dielectricgap.py
  2. 将新脚本发送到 Editor ,找到定义泊松求解器的语句。将其更改为
#----------------------------------------
# Poisson Solver Settings
#----------------------------------------
device_poisson_solver = MultigridSolver(
    boundary_conditions=[[PeriodicBoundaryCondition,PeriodicBoundaryCondition],
    [PeriodicBoundaryCondition,PeriodicBoundaryCondition],
    [DirichletBoundaryCondition,DirichletBoundaryCondition]],
    solvent_dielectric_constant=10.0
)

3.将整个脚本的输出文件名更改为 au_dielectricgap.nc,运行脚本。

4.调整静电能量分析法的分析脚本,将 au_dielectricgap.py 作为输入文件,运行脚本。

重复模拟和分析,您会发现电容增加了大约7倍。您可以清楚地看到下图红色圆圈所表示的电场预期内的不连续性。

介质的空间区域

尝试用介质空间区域做相同的模拟,在 Builder 中用 Miscellaneous Spatial Regions 工具在表面放置一个相对介电常数为 10 的框:

注意

介电区域是矩形框,而当前 fcc [111] 面的单胞为六边形。要解决这个不匹配的问题,就要确保矩形框在 AB 平面足够长,延伸至单胞之外。超出晶胞的部分在计算过程中可以被切除。

将新的结构发送到 Script Generator ,然后重复所有的步骤。或者只需要在 Editor 中发开结构,复制/粘贴已有脚本中的相关部分,修改输出文件名称。

结果如下所示,电介质区域的位置由灰色阴影表示。

比较

在两种电介质的情况下,获得的电容为 2.7-3.8 zF,具体取决于选用的计算方法。差异主要源于:对于空间区域方法,您需要明确选择空间区域与表面的距离。这是由隐式溶剂方法隐含自动决定的,因为介电常数设置为 1 以尽可能接近每个原子核,鬼原子亦如此。

注意

  • 静电能量分析中使用的脚本是独立的和通用的。在适当地修改文件名称后,它们也可用于分析其他系统。
  • 考虑到结构变化,Mulliken 电荷分析中使用的脚本在用于其他系统前需要先进行修改。
  • 这些方法仅适用于通过器件的电流非常小的情况。例如,传输极其小(它是一个电容器 - 而不是二极管!)。对于,您可以验证这个较大真空间隙的传输是否非常小,大约为 10-23

提示

下一步? 纳米级电容器的另一个有趣的例子是可一次形成的 Carbon Nanotube Junction

参考