sisl专题

sisl与TBtrans:透射率和器件DOS

自建五原子单轨道链,实际运行TBtrans生成NetCDF,通过sisl提取透射、本征通道和DOS,并与独立NEGF核对。

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

本文把紧束缚模型继续接到原生TBtrans:sisl写电子矩阵,TBtrans计算开放边界输运,再用sisl读回实际chain.TBT.nc。这里没有做SIESTA或TranSIESTA自洽DFT,材料参数为显式给定的教学模型。

1. 准备器件与电极#

module load siesta/5.4.2-8173m-mpi sisl/0.16.4
python prepare.py
ls cases/pristine/lead.nc cases/pristine/device.nc
cat cases/pristine/RUN.fdf

原生矩阵的关键构造:

import sisl,numpy as np
g=sisl.Geometry([[0,0,0]],atoms=sisl.Atom(6,R=1.5),lattice=sisl.Lattice(np.diag([1.42,20,20]),nsc=[3,1,1]))
lead=sisl.Hamiltonian(g)
lead.construct([[0.1,1.43],[0.0,-1.0]])
lead.write("lead.nc")
device=lead.tile(5,0)
device[2,2]=1.0
device.write("device.nc")

电极一个原子,器件五个原子,每原子一个轨道,最近邻跃迁−1 eV。第1/5原子对应两侧电极,中央第2–4原子为DOS分析区域。中心现场散射势U分别为0、1、2 eV;不是重新拟合的实际碳链势。

2. 查看完整TBtrans输入#

SystemLabel chain
TBT.HS device.nc
TBT.Elecs.Eta 1.e-7 eV
TBT.Contours.Eta 1.e-9 eV
TBT.DOS.Gf true
TBT.DOS.A true
TBT.T.Eig 1
TBT.T.All true
%block TBT.Atoms.Device
 atom [2 -- 4]
%endblock TBT.Atoms.Device
%block TBT.Elecs
 Left
 Right
%endblock TBT.Elecs
%block TBT.Elec.Left
 HS lead.nc
 semi-inf-dir -a
 elec-pos 1
%endblock TBT.Elec.Left
%block TBT.Elec.Right
 HS lead.nc
 semi-inf-dir +a
 elec-pos end 5
%endblock TBT.Elec.Right
%block TBT.Contours
 line
%endblock TBT.Contours
%block TBT.Contour.line
 from -2.2 eV to 2.2 eV
 delta 0.02 eV
 method mid-rule
%endblock TBT.Contour.line

semi-inf-dir指定半无限电极方向,elec-pos指定器件内电极位置。TBT.DOS.Gf输出器件DOS,TBT.T.Eig 1输出一个透射通道,TBT.T.All true确保两方向透射都存在。能量用mid-rule采样220点,−2.2到2.2 eV,间隔0.02 eV。

上述选项的定义见官方TBtrans手册;本文实际程序版本为5.4.2,以运行日志为准。

3. 原生运行三个条件#

export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 I_MPI_FABRICS=shm
cd cases/pristine
tbtrans RUN.fdf > tbtrans.log
ls chain.TBT.nc
cd ../barrier1
tbtrans RUN.fdf > tbtrans.log
cd ../barrier2
tbtrans RUN.fdf > tbtrans.log
cd ../..

也可以运行python run.py,逐个调用原生程序并提取文件。完整链在带内的单自旋块透射率为1;加中心散射势后下降。此处每个条件都得到真正的TBtrans NetCDF输出,不是另写一列理想透射率代替程序。

4. 用sisl提取数据#

python - <<'PY'
import sisl,numpy as np
f=sisl.get_sile("cases/barrier1/chain.TBT.nc")
E=f.E
T=f.transmission("Left","Right")
D=f.DOS()
Te=f.transmission_eig("Left","Right")
np.savetxt("transport.csv",np.column_stack([E,T,D,Te[:,0]]),delimiter=",",header="E_eV,T,DOS,T_eigenvalue",comments="")
print(f.elecs,E.shape,T.shape)
PY
python analyze.py

三个原生TBtrans条件的透射率与器件DOS

资料包用独立3×3 Green函数作逐点对照,透射率差小于10^-6;完整链带内透射率1和单散射势解析式也分别核对。单通道本征透射与总透射一致,两方向满足互易关系。

DOS图只覆盖有限能窗和粗网格,积分不等于完整态数;强散射还可能产生能窗外束缚态,不能强行把积分归一到3。继续阅读固定Hamiltonian电流了解自旋因子与偏压范围。

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

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

查看配图

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

100%查看原图 ↗