Andreev Reflection in Graphene
Hello All, I have seen that this problem has been discussed in threads before and thanks to them, I've managed to set up most of it. But I need help on one main issue I'm seeing right now. What is unusual right now is by setting any non-zero fermi-energy in the normal metal lead, the bands split and a gap opens. I wonder if I am using the wrong matrices. Code below: import kwant import numpy as np from matplotlib import pyplot as plt from math import pi, sqrt, tanh import tinyarray % matplotlib notebook ####___Fundemental Constants___#### e = 1.60217662 *(10**-19) # hbar = 1.0545718*(10**-34) # h = 6.62607004*(10**-34) # e_hb = e/hbar # ################################### #Specifying 2x2 Pauli matrices acting on spin s_x = tinyarray.array([[0,1],[1,0]]) s_y = tinyarray.array([[0,-1j],[1j,0]]) s_z = tinyarray.array([[1,0],[0,-1]]) s_0 = tinyarray.array([[1,0],[0,1]]) #Specifying 2x2 Pauli matrices acting on particle-hole tau_0 = tinyarray.array([[1, 0], [0, 1]]) tau_x = tinyarray.array([[0, 1], [1, 0]]) tau_y = tinyarray.array([[0, -1j], [1j, 0]]) tau_z = tinyarray.array([[1, 0], [0, -1]]) delta_gap = 0.025 class SimpleNamespace(object): def __init__(self, **kwargs): self.__dict__.update(kwargs) # Ef_S is the fermi level in the superconducting region # Ef is the fermi level in the normal graphene region def make_system(a=0.142, W=1, L=1, t=2.71, tp=-0.1, V0=0.001, Ef=delta_gap*1, Ef_S=delta_gap*10, Delta=delta_gap): delta_t = lambda theta: Delta * np.cos(theta) lat = kwant.lattice.general([(a * 1, 0), (a * 0.5, a * 0.5 * np.sqrt(3))], [(0, 0), (0, a * 1 / np.sqrt(3))], norbs=4) a1, b1 = lat.sublattices def channel(pos): x, y = pos return -W <= y <= W and -L <= x <= L syst = kwant.Builder() syst[lat.shape(channel, (0, 0))] = Ef * -1 * np.kron(tau_z,s_0) syst[lat.neighbors()] = t *-1* np.kron(tau_z,s_0) syst.eradicate_dangling() def lead0_shape(pos): # top lead x,y= pos return -L <= x <= L sym_up = kwant.TranslationalSymmetry(lat.vec((-1, 2))) # Normal graphene lead-0 lead0 = kwant.Builder(sym_up, conservation_law= np.kron(tau_z,s_0), particle_hole=np.kron(tau_x,s_0)) lead0[lat.shape(lead0_shape, (0, 0))] = Ef *-1* np.kron(tau_z,s_0) lead0[lat.neighbors()] = t *-1* np.kron(tau_z,s_0) def lead1_shape(pos): # bottom lead x,y = pos return -L <= x <= L sym_down = kwant.TranslationalSymmetry(lat.vec((1, -2))) # bottom lead # Superconducting graphene lead-1 lead1 = kwant.Builder(sym_down) lead1[lat.shape(lead1_shape, (0, 0))] = (Ef_S + V0) *-1* np.kron(tau_z,s_0) + Delta * -1 * np.kron(tau_y,s_y) lead1[lat.neighbors()] = t *-1* np.kron(tau_z,s_0) return syst, [lead0,lead1] def plot_bandstructure(flead, momenta, header): bands = kwant.physics.Bands(flead) energies = [bands(k) for k in momenta] plt.figure(figsize=(9,6)) plt.plot(momenta, energies) plt.xlabel("k $(1/a_0)$",fontsize=15) plt.xlim(left=-1,right=1) plt.ylabel("E (t)",fontsize=15) plt.ylim(top=1,bottom=-1) plt.tick_params(labelsize=12) plt.title(header) plt.show() def plot_conductance(syst, energies): # Compute transmission as a function of energy data = [] for energy in energies: smatrix = kwant.smatrix(syst, energy) # Conductance is N - R_ee + R_he data.append(smatrix.submatrix((0, 0), (0, 0)).shape[0] - smatrix.transmission((0, 0), (0, 0)) + smatrix.transmission((0, 1), (0, 0))) plt.figure(figsize=(8,6)) plt.plot(energies/delta_gap, data) plt.xlabel("$E/\Delta$",fontsize=15) plt.ylabel("G ($e^2/h$)",fontsize=15) # plt.ylim(bottom=0,top=2.5) plt.tick_params(labelsize=15) plt.show() def main(): a=0.142 E = 0.001 system, leads = make_system() # plot_system(system,a) # Attach the leads to the system. for lead in leads: system.attach_lead(lead) # Plot system with leads def family_colors(site): return 0 if site.family == a else 1 # kwant.plot(system, site_color=family_colors, site_lw=0.1, lead_site_lw=0, colorbar=False) # Finalize the system. system = system.finalized() # Compute the band structure of lead 0. momenta = [-pi + 0.02 * pi * i for i in range(101)] plot_bandstructure(system.leads[0], momenta,'Normal Lead') plot_bandstructure(system.leads[1], momenta,'Superconducting Lead') # Plot conductance. energies = np.linspace(-0,2*delta_gap,201) plot_conductance(system, energies) if __name__ == '__main__': main() Any guidance or corrections will be appreciated! Thank you, Sharadh
participants (1)
-
joiss@sunypoly.edu