ASE专题

ASE紧束缚模型电子输运实操

给定Hamiltonian矩阵,计算透射、DOS与小偏压电流,并用解析模型检查数值。

更新于 2026-10-28约 3 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载全部输入、可运行脚本、实际数据和四张高清图。在已分配CPU资源内,使用新解压目录执行 bash run.sh;ASE3.29.0、单进程单线程,生成 work/。本包不调用GPU或外部DFT程序。

1 输入是矩阵,不是一个POSCAR#

ASE TransportCalculator处理中心区域及两侧半无限引线的Hamiltonian与重叠矩阵。本例用明确给定的一维单轨道紧束缚模型学习接口,没有把这些矩阵当作某个材料的DFT结果。

近邻跃迁为−1eV,引线在位能0;中心在位能分别取0、0.5、1eV,使用正交基:

import numpy as np
h1 = np.array([[0.0, -1.0], [-1.0, 0.0]])
h = np.array([[0.5]])

h1包含相邻两个主层的信息,中心矩阵 h只有一个轨道。不指定重叠矩阵时采用单位阵。真实材料需要从一致基组和能量参考的电子结构结果取得相应矩阵,不能直接把能带本征值排成对角阵来代替完整模型。

2 计算透射、DOS和通道#

bash run.sh
head work/transport-phase-output/transport-0.5.csv
cat work/transport-phase-output/ETA-CONVERGENCE.json

实际代码:

from ase.transport.calculators import TransportCalculator
energy = np.linspace(-3.01, 3.01, 1205)
calc = TransportCalculator(h=h, h1=h1, energies=energy,
                           eta=1e-5, eta1=1e-5, eta2=1e-5,
                           dos=True, pdos=[0], eigenchannels=1)
T = calc.get_transmission()
DOS = calc.get_dos()
PDOS = calc.get_pdos()
channels = calc.get_eigenchannels()

透射率无量纲,能量为eV;DOS按1/eV计。单轨道模型里PDOS等于中心总DOS,唯一通道的透射等于总透射;多轨道模型不能沿用这一结论。

3 与解析结果对照#

引线带内 |E|<2eV,中心在位能U的解析透射为:

T(E) = (4 − E²) / (4 − E² + U²)
U/eV E=0数值透射 解析值
0 0.999990 1
0.5 0.941167 0.941176
1 0.799992 0.8

三个在位能模型的透射与小偏压电流

在本例 |E|<1.8eV的带内区间,数值与解析结果差小于5×10⁻⁵。接近带边、束缚态或极窄共振时,需要额外检查网格与展宽。

4 η不是越小越好#

对U=0.5eV、E=0,本例从η=10⁻³、10⁻⁴减到10⁻⁵eV,绝对误差约从9.41×10⁻⁴降到9.40×10⁻⁶。继续盲目减到10⁻⁸,在精确带中心会放大本例引线表面Green函数的数值误差。

有限η也会在带外束缚态附近产生很小的数值泄漏,本例带外最大透射约2.7×10⁻⁵,不解释为真实的新导电通道。实际计算应同时检查解析极限、η、能量网格与概率范围,保留原始透射,不人为把小值全部截为零。

5 电流换算为安培#

from ase import units
bias = np.array([-0.1, 0.0, 0.1])
I_native = calc.get_current(bias, T=300)
I_ampere = I_native * 2 * units._e**2 / units._hplanck
print(I_ampere)

原生返回值需要按上述因子换算为A,不可直接标为A。默认是自旋简并模型;显式自旋极化时需要匹配所用通道和自旋选项。

理想链在0.1V、300K下电流约 7.748μA,对应小偏压电导2e²/h;零偏压电流为零,正负偏压响应反号。三个偏压点用于演示小偏压接口,不代表已经算完真实器件的非线性I–V曲线。参考:ASE电子输运。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗