update
This commit is contained in:
parent
2d125a47ae
commit
41cc03bb72
@ -0,0 +1,91 @@
|
||||
"""
|
||||
This code is supported by the website: https://www.guanjihuan.com
|
||||
The newest version of this code is on the web page: https://www.guanjihuan.com/archives/6075
|
||||
"""
|
||||
|
||||
import kwant
|
||||
import numpy as np
|
||||
from matplotlib import pyplot
|
||||
|
||||
def make_system():
|
||||
a = 1
|
||||
lat = kwant.lattice.square(a)
|
||||
syst = kwant.Builder()
|
||||
t = 1.0
|
||||
W = 5
|
||||
L = 50
|
||||
syst[(lat(x, y) for x in range(L) for y in range(W))] = 0
|
||||
syst[lat.neighbors()] = -t
|
||||
# 几何形状如下所示:
|
||||
# lead2 lead3
|
||||
# lead1(L) lead4(R)
|
||||
# lead6 lead5
|
||||
lead1 = kwant.Builder(kwant.TranslationalSymmetry((-a, 0)))
|
||||
lead1[(lat(0, j) for j in range(W))] = 0
|
||||
lead1[lat.neighbors()] = -t
|
||||
syst.attach_lead(lead1)
|
||||
|
||||
lead2 = kwant.Builder(kwant.TranslationalSymmetry((0, -a)))
|
||||
lead2[(lat(j, 0) for j in range(W))] = 0
|
||||
lead2[lat.neighbors()] = -t
|
||||
syst.attach_lead(lead2)
|
||||
|
||||
lead3 = kwant.Builder(kwant.TranslationalSymmetry((0, -a)))
|
||||
lead3[(lat(j+(L-W), 0) for j in range(W))] = 0
|
||||
lead3[lat.neighbors()] = -t
|
||||
syst.attach_lead(lead3)
|
||||
|
||||
syst.attach_lead(lead1.reversed()) # lead4
|
||||
syst.attach_lead(lead3.reversed()) # lead5
|
||||
syst.attach_lead(lead2.reversed()) # lead6
|
||||
|
||||
kwant.plot(syst)
|
||||
syst = syst.finalized()
|
||||
return syst
|
||||
|
||||
|
||||
def main():
|
||||
syst = make_system()
|
||||
energies = np.linspace(-4, 4, 800)
|
||||
data1 = []
|
||||
data2 = []
|
||||
data3 = []
|
||||
data4 = []
|
||||
data5 = []
|
||||
data6 = []
|
||||
for energy in energies:
|
||||
smatrix = kwant.smatrix(syst, energy)
|
||||
data1.append(smatrix.transmission(1, 0)) # compute the transmission probability from lead 0 to lead 1
|
||||
data2.append(smatrix.transmission(2, 0))
|
||||
data3.append(smatrix.transmission(3, 0))
|
||||
data4.append(smatrix.transmission(4, 0))
|
||||
data5.append(smatrix.transmission(5, 0))
|
||||
data6.append(smatrix.transmission(1, 0)+smatrix.transmission(2, 0)+smatrix.transmission(3, 0)+smatrix.transmission(4, 0)+smatrix.transmission(5, 0))
|
||||
pyplot.plot(energies, data1)
|
||||
pyplot.xlabel("energy [t]")
|
||||
pyplot.ylabel("Transmission_12 [e^2/h]")
|
||||
pyplot.show()
|
||||
pyplot.plot(energies, data2)
|
||||
pyplot.xlabel("energy [t]")
|
||||
pyplot.ylabel("Transmission_13 [e^2/h]")
|
||||
pyplot.show()
|
||||
pyplot.plot(energies, data3)
|
||||
pyplot.xlabel("energy [t]")
|
||||
pyplot.ylabel("Transmission_14 [e^2/h]")
|
||||
pyplot.show()
|
||||
pyplot.plot(energies, data4)
|
||||
pyplot.xlabel("energy [t]")
|
||||
pyplot.ylabel("Transmission_15 [e^2/h]")
|
||||
pyplot.show()
|
||||
pyplot.plot(energies, data5)
|
||||
pyplot.xlabel("energy [t]")
|
||||
pyplot.ylabel("Transmission_16 [e^2/h]")
|
||||
pyplot.show()
|
||||
pyplot.plot(energies, data6)
|
||||
pyplot.xlabel("energy [t]")
|
||||
pyplot.ylabel("Transmission_1_all [e^2/h]")
|
||||
pyplot.show()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
x
Reference in New Issue
Block a user