I'm new to kwant and I'm trying to use kwant to replicate the result of zigzag graphene nanoribbons.
I noticed the result get from "smatrix.transmission" is in the unit of e^2/h, which is the conductance. In some other software, the value to represent the transmission is called "transmission coefficient".
1. Are the results I get from "smatrix.transmission" equivalent to the transmission coefficient? if not, how can I change the conductance to transmission coefficient? Can I change the conductance representation into transmission coefficient by the above equation? The reason I want to do this is that I can easily get the current/voltage curve by integrating the transmission coefficient.
2. Can I get transmission coefficient by intrinsic function already implemented in kwant?
3. I remember in some other quantum transport software, I need to set temperature for the transport calculation. But i notice I don't need to consider temperature in kwant. If I want to take temperature into account (fermi distribution), how can I do it?(Using the above equation?)
4. I calculate the zigzag graphene nanoribbon using kwant. I set onsite energy =0 and hopping =-2.74. I noticed my results are a bit wired. The major difference is I don't have an transmission peak in fermi energy. Is this because I didn't passivate my edge with hydrogen?
Thanks for advance.
PS: One thing I need to mention in my codes is: if I set energy equals to 0.0, "kwant.smatrix(sca, energy)" will return an error. So i replace 0.0 with 1e-5.
kwant codes is attached.
l_a=1.0
zgnr=kwant.lattice.general([(sqrt(3)*l_a,0),(0,3*l_a)],
[(0,0),(0.5*sqrt(3)*l_a,l_a/2),(0.5*sqrt(3)*l_a,3*l_a/2),(0,2*l_a)])
a,b,c,d=zgnr.sublattices
ld=kwant.TranslationalSymmetry(zgnr.vec((-1,0)))
rd=kwant.TranslationalSymmetry(zgnr.vec((1,0)))
h=4
w=h
def shape1(pos):
x,y=pos
return (-h+2<y<h and abs(x)<w)
left_lead=kwant.Builder(ld)
left_lead[zgnr.shape(shape1,(0,0))]=0
left_lead[[kwant.builder.HoppingKind((0,0),a,b)]]=-2.74
left_lead[[kwant.builder.HoppingKind((0,0),b,c)]]=-2.74
left_lead[[kwant.builder.HoppingKind((0,0),c,d)]]=-2.74
left_lead[[kwant.builder.HoppingKind((-1,0),b,a)]]=-2.74
left_lead[[kwant.builder.HoppingKind((-1,0),c,d)]]=-2.74
left_lead[[kwant.builder.HoppingKind((0,1),a,d)]]=-2.74
kwant.plot(left_lead);
right_lead=kwant.Builder(rd)
right_lead[zgnr.shape(shape1,(0,0))]=0
right_lead[[kwant.builder.HoppingKind((0,0),a,b)]]=-2.74
right_lead[[kwant.builder.HoppingKind((0,0),b,c)]]=-2.74
right_lead[[kwant.builder.HoppingKind((0,0),c,d)]]=-2.74
right_lead[[kwant.builder.HoppingKind((-1,0),b,a)]]=-2.74
right_lead[[kwant.builder.HoppingKind((-1,0),c,d)]]=-2.74
right_lead[[kwant.builder.HoppingKind((0,1),a,d)]]=-2.74
sca=kwant.Builder()
sca[zgnr.shape(shape1,(0,0))]=0
sca[[kwant.builder.HoppingKind((0,0),a,b)]]=-2.74
sca[[kwant.builder.HoppingKind((0,0),b,c)]]=-2.74
sca[[kwant.builder.HoppingKind((0,0),c,d)]]=-2.74
sca[[kwant.builder.HoppingKind((-1,0),b,a)]]=-2.74
sca[[kwant.builder.HoppingKind((-1,0),c,d)]]=-2.74
sca[[kwant.builder.HoppingKind((0,1),a,d)]]=-2.74
sca.attach_lead(left_lead)
sca.attach_lead(right_lead)
sca=sca.finalized()
kwant.plot(sca);
#bands=kwant.physics.Bands(left_lead);
#mom=np.linspace(-np.pi,np.pi,101)
#ee=[bands(k) for k in mom]
#pyplot.plot(mom, ee);
#pyplot.grid('on')
#pyplot.ylim(-2.2,2.2)
momenta = [-np.pi + 0.02 * np.pi * i for i in xrange(101)]
bands = kwant.physics.Bands(sca.leads[0])
ee = [bands(k) for k in momenta]
pyplot.plot(momenta, ee)
energies = []
data = []
for ie in xrange(501):
energy = ie * 0.01-2.5
if energy ==0.0:
energy = 1e-5
# compute the scattering matrix at a given energy
smatrix = kwant.smatrix(sca, energy)
# compute the transmission probability from lead 0 to
# lead 1
energies.append(energy)
data.append(smatrix.transmission(1, 0))
pyplot.figure()
pyplot.plot(energies, data)
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()