F(ferromagnet) - S(superconductor) Junction Conductance in Kwant – Need Help with Spin-Resolved Conductance.

Hi all, --------- I'm simulating an FS (Ferromagnet–Superconductor) junction in Kwant (code attached below) to study conductance as a function of energy, and I'm observing the following: 1. Sub-gap conductance, which depends on Andreev reflection, reduces with increasing exchange field. 2. Supra-gap conductance remains the same as in an NS junction since the exchange field doesn't affect transport above the gap. 3. A divergence peak in conductance at E = Δ comes from the divergence in the density of states of the s-wave superconductor. These results are consistent and expected. ---------However, I would like to extract spin-resolved conductance, especially in the sub-gap regime, where spin-up and spin-down conductance should differ. This is because minority spins can always find a partner for Andreev's reflection, but majority spins may not. This leads to asymmetry in the Andreev reflection probabilities for different spin channels. ------------I'm using the S-matrix from Kwant to compute conductance. From what I understand: - Normal reflection corresponds to r_ee^{σσ'} - Andreev reflection corresponds to r_he^{σσ'} As I understand it, the issue is that Kwant does not explicitly label spin in the mode indices, which makes it difficult to separate the spin components in the conductance calculation. Has anyone worked on spin-resolved conductance in FS or NS junctions using Kwant? Any advice, tips, or example code would be really helpful. Thank you! ---------------------------------------------------------------------Code for FS junction import kwant import numpy as np from matplotlib import pyplot # Pauli matrices sigma_0 = np.identity(2) sigma_x = np.array([[0, 1], [1, 0]]) sigma_y = np.array([[0, -1j], [1j, 0]]) sigma_z = np.array([[1, 0], [0, -1]]) tau_0 = np.identity(2) tau_x = np.array([[0, 1], [1, 0]]) tau_y = np.array([[0, -1j], [1j, 0]]) tau_z = np.array([[1, 0], [0, -1]]) # Lattice and system parameters a = 1 # lattice constant W, L = 1, 100 # width and length barrier = 0 # barrier height barrierpos = (19, 20) # barrier x-position range mu = 0.5 Delta = 0.01 Deltapos = 20 # ferromagnetic region t = 0.25 h = 0.2 # exchange field strength (ferromagnetism) # Kronecker products for combined spin ⊗ particle-hole basis Delta_term = Delta * np.kron(sigma_x, tau_0) t_hop = -t * np.kron(sigma_z, tau_0) sz_tz = np.kron(sigma_z, tau_z) k = np.kron(sigma_z, tau_0) # Define lattice lat = kwant.lattice.square(norbs=4) # for particle-hole basis syst = kwant.Builder() # Ferromagnetic region for x in range(Deltapos): for y in range(W): syst[lat(x, y)] = (2 * t - mu) * k + h * sz_tz # Barrier region (still ferromagnetic) for x in range(barrierpos[0], barrierpos[1]): for y in range(W): syst[lat(x, y)] = (2 * t + barrier - mu) * k + h * sz_tz # Superconducting region for x in range(Deltapos, L): for y in range(W): syst[lat(x, y)] = (2 * t - mu) * k + Delta_term # Hoppings syst[lat.neighbors()] = t_hop # === Leads === # Ferromagnetic lead (left) sym_left = kwant.TranslationalSymmetry((-a, 0)) lead0 = kwant.Builder(sym_left, conservation_law=-np.kron(sigma_z, tau_0)) for y in range(W): lead0[lat(0, y)] = (2 * t - mu) * k + h * sz_tz lead0[lat.neighbors()] = t_hop # Superconducting lead (right) sym_right = kwant.TranslationalSymmetry((a, 0)) lead1 = kwant.Builder(sym_right) for y in range(W): lead1[lat(0, y)] = (2 * t - mu) * k + Delta_term lead1[lat.neighbors()] = t_hop # Attach leads and finalize syst.attach_lead(lead0) syst.attach_lead(lead1) syst = syst.finalized() # === Conductance plotting === def plot_conductance(syst, energies): data = [] for energy in energies: smatrix = kwant.smatrix(syst, energy) # G = 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))) pyplot.figure() #pyplot.plot(energies, normalized_data) pyplot.plot(energies, data) pyplot.xlabel("Energy [t]") pyplot.ylabel("Normalized Conductance") pyplot.title("FS Junction Conductance") pyplot.grid(True) pyplot.show() energies = np.linspace(0, 0.1, 100) plot_conductance(syst, energies)
participants (1)
-
Jabed Umar