PyPlot.plot will give the incorrect number
Hello I felt confusing, when I use pyplot.plt. The data in figure is different from the printed. There are the codes: # ================================================================ # Physics background # ------------------ # Kwant features highlighted # -------------------------- # - Numpy matrices as values in Builder import kwant import numpy as np # For plotting import matplotlib.pyplot as plt # For matrix support import tinyarray import kwant.qsymm # define Pauli-matrices for convenience s_0 = tinyarray.array([[1, 0], [0, 1]]) s_x = tinyarray.array([[0, 1], [1, 0]]) s_y = tinyarray.array([[0, -1j], [1j, 0]]) s_z = tinyarray.array([[1, 0], [0, -1]]) mz=0 # AFM mu=0.0 # stargged chemical potential n_theta=12 def make_system(constant=1, W=30, L=30, mz=0, m_in=0, mu=0): lat = kwant.lattice.honeycomb(a=constant,norbs=2, name=['a', 'b']) # a, b = lat.sublattices sym = kwant.TranslationalSymmetry(lat.vec((1, 0))) syst = kwant.Builder() def onsite_a(site,theta): return mz*s_z+m_in*(np.cos(theta)*s_x+np.sin(theta)*s_y)+mu*s_0 def onsite_b(site,theta): return -mz*s_z+m_in*(np.cos(theta)*s_x+np.sin(theta)*s_y)-mu*s_0 syst[(lat.a(x, y) for x in range(L) for y in range(W))] = onsite_a syst[(lat.b(x, y) for x in range(L) for y in range(W))] = onsite_b syst[lat.neighbors()] = s_0 # define lead left_sym=kwant.TranslationalSymmetry(lat.vec((1, 0))) left_lead=kwant.Builder(left_sym) left_lead[(lat.a(0, y) for y in range(W))] = onsite_a left_lead[(lat.b(0, y) for y in range(W))] = onsite_b left_lead[lat.neighbors()] = s_0 syst.attach_lead(left_lead) syst.attach_lead(left_lead.reversed()) return syst def plot_conductance(syst, energy, theta_list): # Compute conductance data = np.zeros(n_theta) num_i=-1 for theta_i in theta_list: num_i=num_i+1 smatrix = kwant.smatrix(syst, energy, params=dict(theta=theta_i)) data[num_i]=smatrix.transmission(1, 0) plt.figure() # x=np.linspace(-1,1,n_theta) # data_i=np.linspace(0,0,n_theta) # print(x,data_i) # plt.plot(x,data_i,'ow') print(data) plt.plot(theta_list, data) plt.xlabel(r'$\theta/\pi$') plt.ylabel("conductance [e^2/h]") plt.savefig('tran_PHE.jpg') #plt.show() def main(): syst = make_system(m_in=0.0001) # Check that the system looks as intended. kwant.plot(syst,file='transport_lattice.pdf') syst = syst.finalized() theta_num=np.linspace(-np.pi,np.pi,num=n_theta) plot_conductance(syst, energy=0.0001, theta_list=theta_num) if __name__ == '__main__': main() The result would be printed in terminal: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]. However, the figure plotted is wrong. -- Best Wishes Jinlong Zhang jlzhang@163.com
participants (4)
-
Anton Akhmerov
-
Hongyi Zhao
-
jlzhang1996@163.com
-
张金龙