使用格林函数方法计算量子传输性质的Matlab代码
该程序使用了量子输运理论中的格林函数方法来计算体系的传输性质。具体来说,它考虑了一个由两个相同的离散态链组成的体系,每个链包含 'N' 个离散态。在这个体系中,每个离散态都与其相邻的态之间存在跃迁,跃迁强度为 't',相邻态之间的相位差为 'phi'。此外,还有一个由一个离散态组成的导体(或探针)与这个体系相连,两者之间的相位差为 'phi'。
程序首先构造了体系的哈密顿量 'H',其中 'H00' 表示离散态链之间的耦合,'H11' 表示导体与离散态链的耦合,'H01' 和 'H12' 分别表示导体与离散态链之间的耦合。然后,它构造了一个传输矩阵 'T',其中 'T11' 和 'T22' 分别表示离散态链和导体的传输矩阵,'T12' 和 'T21' 分别表示离散态链和导体之间的传输矩阵。接下来,程序计算 'T' 的本征矢量和本征值,并根据本征值的大小对本征矢量进行排序。最后,程序使用格林函数公式计算体系的传输率。
注:程序中的变量名和符号可能与文献中的略有不同,但其含义应该是相同的。
clc
clear all
N=50; t=1.32; E=-0.01+j*0.000000001;phi=0.007;
H00=zeros(2*N);H11=zeros(2*N);
H01=diag(t*exp(j*phi*(1:2*N)));H12=diag(t*exp(j*phi*(1:2*N)));
for i=1:N,
H00(2*i-1,2*i)=t;
H00(2*i,2*i-1)=t;
end
for i=1:N-1,
H11(2*i,2*i+1)=t;
H11(2*i+1,2*i)=t;
end
TT1=[inv(H01)*(E*eye(2*N)-H00),-inv(H01)*H12';eye(2*N),zeros(2*N)];
TT2=[inv(H12)*(E*eye(2*N)-H11),-inv(H12)*H01';eye(2*N),zeros(2*N)];
TT=TT1*TT2;
[eigenvector,eigenvalue]=eig(TT);
e_abs=abs(diag(eigenvalue));
[a,b]=sort(e_abs);
v2=eigenvector(:,b);
S1=v2(1:2*N,1:2*N);
S2=v2(2*N+1:4*N,1:2*N);
gr=inv(E*eye(2*N)-H00-H01*S1*inv(S2));
grn= inv(E*eye(2*N)-H11-H12*gr*H12');
grn= inv(E*eye(2*N)-H00-H01*grn*H01');
原文地址: https://www.cveoy.top/t/topic/nu4x 著作权归作者所有。请勿转载和采集!