这是本文档旧的修订版!
在本教程中,您将对平行板纳米电容器进行原子尺度的模拟,这意味着两个平行金属表面之间的间隙在纳米范围内。这目前不是一个真实的器件,目的只是为了展示一种可用于计算其他结构电容的方法,包括金属/半导体/金属结构。
电容器物理 在电容器上施加偏压 $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 分析中更易识别数据。