import kwant import numpy as np from matplotlib import pyplot from numpy import sqrt from math import * #====================================================================== # Define the shape ------------------- #====================================================================== def shape(pos): x, y = pos return (np.abs(2.0*x)<=L)&(np.abs(y)<W1/2.0) #---------------------------------------------------------------------- a = 1; t = 1; E0L = 0*t L = 10; # Length of the W1 = 30; # Width on the left # Define geometry -------------------------------------------------------------------------- sys0 = kwant.Builder() lat = kwant.lattice.square(a) #-------------------------------------------------------------------------------------------- # Define onsite energies and couplings ---------------------------------------------------- sys0[lat.shape(wv_shape,(0,0))] = E0 # To make all sites the same sys0[lat.neighbors()] = t #-------------------------------------------------------------------------------------------- # Left lead ---------------------------------------------------------------------------------- left_lead = kwant.Builder(kwant.TranslationalSymmetry([-1,0])) left_lead[(lat(0,y) for y in range(int(-W1/2+1),int(W1/2)))] = E0L left_lead[lat.neighbors()] = t sys0.attach_lead(left_lead); #-------------------------------------------------------------------------------------------- # Right lead --------------------------------------------------------------------------------- right_lead = kwant.Builder(kwant.TranslationalSymmetry([1,0])) right_lead[(lat(0,y) for y in range(int(-W1/2+1),int(W1/2)))] = E0L right_lead[lat.neighbors()] = t sys0.attach_lead(right_lead); #--------------------------------------------------------------------------------------------- sys = sys0.finalized() kwant.plot(sys); def plot_conductance(sys, energies): data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(2, 0)+smatrix.transmission(1,2) ) #transmission from left 2 leads to right lead pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() energies=[-3+i*0.02 for i in range(100)] plot_conductance(sys,energies)