sisl专题

sisl:从TBtrans透射积分得到电流

使用实际TBtrans透射计算固定Hamiltonian电流,讲清化学势、电子温度、自旋因子与自洽偏压的区别。

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

本例沿用TBtrans链模型实际生成的透射谱。改变两侧化学势做Landauer积分,保持同一个零偏压Hamiltonian;它是固定势参考I–V,不是自洽TranSIESTA偏压结果。

1. 先得到原生透射#

module load siesta/5.4.2-8173m-mpi sisl/0.16.4
python prepare.py
python run.py
ls cases/*/chain.TBT.nc

每个原生文件有220个能量点。电流计算采用对称化学势muLeft=V/2、muRight=−V/2,电子温度参数kT=0.025 eV,约对应290 K。

2. 用current_parameter指定化学势#

python - <<'PY'
import sisl
f=sisl.get_sile("cases/pristine/chain.TBT.nc")
for V in [-0.2,-0.1,0.0,0.1,0.2]:
 I=f.current_parameter("Left",V/2,0.025,"Right",-V/2,0.025)
 print(V,I,"A per spin block")
PY

current()使用文件保存的化学势和温度;这里的文件来自零偏压计算,所以主动改变积分窗口应使用current_parameter()。这个操作没有自动重新计算偏压下的电子结构。

3. 看实际电流与自旋约定#

python analyze.py
cat analysis/current.csv
cat analysis/SUMMARY.json

完整链在0.1 V得到约 3.874045865 μA/自旋块,对应导电量子e²/h≈38.74045865 μS。非磁且两个自旋完全相同时,总电流另乘2,约7.74809 μA;不能在已经含自旋求和的数据上重复乘2。

实际固定势I–V与透射率独立NEGF误差

U=1/2 eV散射势降低电流。正负偏压在当前对称化学势定义下互为反号,零偏压电流为零。

4. 独立检查积分#

以下使用同一原生透射、同一矩形能量权重,独立计算费米分布积分:

python - <<'PY'
import sisl,numpy as np
from scipy.constants import elementary_charge,Planck
from scipy.special import expit
f=sisl.get_sile("cases/pristine/chain.TBT.nc")
E=f.E;T=f.transmission();V=0.1;kT=0.025
window=expit(-(E-V/2)/kT)-expit(-(E+V/2)/kT)
I=np.sum(T*(E[1]-E[0])*window)*elementary_charge**2/Planck
print(I)
PY

独立积分与原生sisl电流的相对差小于10^-10。这核对的是当前离散积分,不等于能量网格已经充分收敛。真实有限偏压计算还需重新求电势与电荷分布、检查能窗覆盖和电子温度,不能把这里的小偏压固定势参考任意外推。

下载可复跑资料包,新目录解压后执行bash run.sh。只运行小矩阵TBtrans模型,每个条件一个CPU线程;实际大规模科学计算按作业管理申请调度资源。软件为SIESTA/TBtrans5.4.2(oneAPI2024.2、IntelMPI2021.13、MKL LP64顺序库、AVX512/O2),后处理sisl0.16.4;没有更改公共安装。

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

查看配图

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

100%查看原图 ↗