这是本文档旧的修订版!
在本教程中,您将对平行板纳米电容器进行原子尺度的模拟,这意味着两个平行金属表面之间的间隙在纳米范围内。这目前不是一个真实的器件,目的只是为了展示一种可用于计算其他结构电容的方法,包括金属/半导体/金属结构。
电容器物理 在电容器上施加偏压 $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 电荷群方法,稍微简单些。
最终的器件如下图所示。
鬼原子用于完善地描述两表面间的电密度,它们只是被放在空区域中的额外基组。这种有时候会被成为真空基组的基数,也可用于计算表面功函数,如教程中所述:Computing the work function of a metal surface using ghost atoms.
为了得到电容,计算 $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”– 这对于两个金表面来说微不足道,但情况可能并非总是如此。