Hi,
In fact, your system does not have spin conductance, the spin-up (spin-down)
representations are the same even you lifted the degeneracy. I mean the
hopping of your system does not contain any of the diagonal terms (ie,
spin-up =spin-down).

I am puzzled by the expression
"syst[graphene.shape(circle, (0, 0))] = (4 * t * sigma_0 +* alpha *
sigma_y)*"
I guess the rashba affects the hopping term not the onsite energy "you can
kindly see the kwant site for more details)

For you question related to plotting the spin conductance, here is the
script:
You need to add a conservation_law in the lead
lead = kwant.Builder(kwant.TranslationalSymmetry((1, 0)),
conservation_law=-sigma_z)
and the the spin conductance is defined as
def plot_conductance(syst, energies):
    Gup = []
    Gdn = []
    G=[]
    for energy in energies:
        smatrix = kwant.smatrix(syst, energy)
        Gup.append(smatrix.transmission((1, 0), (0, 0)))
        Gdn.append(smatrix.transmission((1, 1), (0, 0)))
        G.append(smatrix.transmission((1, 0), (0,
0))+smatrix.transmission((1, 1), (0, 0)))
    pyplot.figure()
    pyplot.plot(energies, G, 'k', linewidth=3.5,)
    pyplot.plot(energies, Gup,  linestyle='dashdot', color='C0',
linewidth=2, )
    pyplot.plot(energies, Gdn,  linestyle='dashdot', color='C3',
linewidth=2, )

Best
Adel

Le ven. 7 mars 2025 à 09:49, <18682755...@163.com> a écrit :

> Dear all,
>       Using the Kwant package to calculate the spin-resolved conductance
> of a graphene nanoribbon, where the device region incorporates Rashba
> spin-orbit coupling (RSOC) in its Hamiltonian while the leads do not. The
> left lead is numbered 0 and the right lead is numbered 1. The goal is to
> obtain the conductance from spin-up electrons in the left lead to spin-down
> electrons in the right lead. How should the program be written?
>       For reference and convenience, I attach the code I'm using at the
> end of this message, but the result was unsatisfactory.
>       Any help and guidance would be appreciated!
>
> Best regards,
> Rease
>
> ##############################################################
> import kwant
> import numpy as np
> from matplotlib import pyplot
> from tinyarray import array
>
> sigma_0 = array([[1, 0], [0, 1]])
> sigma_x = array([[0, 1], [1, 0]])
> sigma_y = array([[0, -1j], [1j, 0]])
> sigma_z = array([[1, 0], [0, -1]])
>
> graphene = kwant.lattice.general([(1, 0), (0.5, np.sqrt(3) / 2)],
>                                  [(0, 0), (0, 1 / np.sqrt(3))],norbs=2)
> a, b = graphene.sublattices
>
>
> def make_system(W=10, L=30, t=1.0, alpha=0.1):
>     syst = kwant.Builder()
>
>     def circle(pos):
>         x, y = pos
>         return abs(x)<=L and abs(y)<=W
>
>     syst[graphene.shape(circle, (0, 0))] = (4 * t * sigma_0 + alpha *
> sigma_y)
>
>     syst[graphene.neighbors()] = -t * sigma_0
>
>     def lead_shape(pos):
>         return abs(pos[1]) < W
>
>     lead = kwant.Builder(kwant.TranslationalSymmetry((1, 0)))
>     lead[graphene.shape(lead_shape, (0, 0))] = 4 * t * sigma_0
>     lead[graphene.neighbors()] = -t * sigma_0
>
>     syst.attach_lead(lead)
>     syst.attach_lead(lead.reversed())
>
>     return syst
>
> def plot_conductance(syst, energies):
>     data = [ ]
>     for energy in energies:
>         smatrix = kwant.smatrix(syst, energy)
>         data.append(smatrix.transmission((1, 1), (0, 0)))
>
>     pyplot.figure()
>     pyplot.plot(energies, data)
>     pyplot.xlabel("energy [t]")
>     pyplot.ylabel("conductance [e^2/h]")
>     pyplot.show()
>
> def main():
>     syst = make_system()
>     kwant.plot(syst)
>     syst = syst.finalized()
>     plot_conductance(syst, energies=[0.01 * i for i in range(100)])
>
>
> if __name__ == "__main__":
>     main()
>

Reply via email to