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

Reply via email to