Odbicie Andreeva jest zjawiskiem fizycznym wykorzystywanym w nowoczesnych urządzeniach elektronicznych służących jako bardzo czułe układy pomiarowe. W oparciu o mechanizm odbicia Andreeva zbudowane są również złącza, które stanowią elementy składowe komputera kwantowego.
W nadprzewodniku elektrony "połączone są" w pary Coopera, jeśli ich energia jest niższa od pewnej wartości krytycznej (nazywanej przerwą nadprzewodzącą) - nie mogą istnieć jako pojedyncze nośniki ładunku. Co stanie się więc, kiedy połączymy nadprzewodnik z półprzewodnikiem i wyślemy do niego pojedynczy elektron?
Okazuje się, że elektron nie obije się od nadprzewodnika. Wniknie do niego i co więcej "pociągnie" za sobą kolejny elektron tworząc w nadprzewodniku parę Coopera. Pozostałość po drugim elektronie nazywamy dziurą, propaguje się ona w przeciwną stronę do pierwotnego elektronu. Zjawisko takie nazywamy odbiciem Andreeva. Czy można taki efekt zaobserwować?
Już w latach 90 przewidziano, że zjawisko to doprowadzi do podwojenia przewodności złącza półprzewodnik-nadprzewdonik. Przewidywanie to udało się potwierdzić dopiero w ostatnich latach.
# Importujemy niezbędne biblioteki
import kwant
import kwant.continuum
import numpy as np
import matplotlib.pyplot as plt
import holoviews as hv
hv.extension('bokeh')
import warnings
warnings.filterwarnings("ignore")
Biblioteka kwant wykona większość pracy za nas. Musimy tylko zdefiniować wzór na energię w układzie oraz określić kształt układu. Robimy to przez wywołanie kilku procedur tak jak poniżej.
# Definiujem Hamiltonian opisujący układ
# Opisujemy propagujący się elektron i powracającą po odbiciu Andreeva dziurę
NS_hamiltonian = """(k_x**2 / 2 - mu) * kron(sigma_z) + Delta * kron(sigma_x)"""
sympify = kwant.continuum.sympify
sympify(NS_hamiltonian)
# Tworzymy układ do symulacji złącza półprzewodnik-nadprzewodnik z wykorzystaniem pakietu Kwant
sigma_z = np.array([[1, 0], [0, -1]])
wire_template = kwant.continuum.discretize(NS_hamiltonian, grid_spacing = 0.1)
barrier = kwant.Builder()
barrier.fill(wire_template.substituted(Delta='Delta_lead', mu='mu_barrier'), shape=(lambda site: 0 <= site.pos[0] < .1), start=[0])
N_lead = kwant.Builder(symmetry=kwant.TranslationalSymmetry([.1]), conservation_law=sigma_z)
N_lead.fill(wire_template.substituted(Delta='Delta_lead', mu='mu_lead'), shape=(lambda site: True), start=[0])
S_lead = kwant.Builder(symmetry=kwant.TranslationalSymmetry([-.1]))
S_lead.fill(wire_template, shape=(lambda site: True), start=[0])
barrier.attach_lead(N_lead)
barrier.attach_lead(S_lead)
kwant.plot(barrier)
barrier = barrier.finalized()
Stworzony układ wyświetlony powyżej jest gotowy to przeprowadzenia symulacji. Dwa kontakty (różowe) połączone są przez barierę (niebieskie). Z jednego kontaktu będziemy wstrzykiwać elektrony, które będą transportowane przez barierę i będą podlegały odbiciu Andreeva w drugim kontakcie.
Będziemy zmieniać energie elektronów i wysokość bariery na połączeniu nadprzewodnika z półprzewodnikiem. W tym celu musimy jedynie w odpowiedni sposób wywołać procedury biblioteczne, które wykonają obliczenia zgodnie z prawami mechaniki kwantowej. Następnie posługując się modułem holoviews możemy w prosty sposób stworzyć interaktywną prezentacje naszych wyników.
energies = np.linspace(-0.25,0.25,200)
mu_barrier_values = np.arange(-300,50,10)
G = np.zeros((len(energies), len(mu_barrier_values)))
def andreev_conductance(s):
N_electrons = len(s.submatrix((0, 0), (0, 0)))
R_ee = s.transmission((0, 0), (0, 0))
R_he = s.transmission((0, 1), (0, 0))
return N_electrons - R_ee + R_he
for ie, energy in enumerate(energies):
for ib, mu_barrier in enumerate(mu_barrier_values):
s = kwant.smatrix(barrier, energy = energy, \
params=dict(Delta=.1, Delta_lead = 0, mu=50, mu_lead=50, mu_barrier=mu_barrier))
G[ie,ib] = andreev_conductance(s)
def conductance_plot(f):
return hv.Curve((energies, G[:,f])).opts(axiswise=True,\
title="Przekrój przewodności", xlim=(np.amin(energies), np.amax(energies)),\
ylim=(0,2), xlabel='Energia elektronu', ylabel="G [2e²/h]")
def G_map():
bounds=(np.amin(mu_barrier_values),np.amin(energies),np.amax(mu_barrier_values), np.amax(energies))
return hv.Image(G[:,:], bounds=bounds).opts(axiswise=True, colorbar = True, cmap = "coolwarm",\
title="Przewodność [2e²/h]", xlabel="Wysokość bariery", ylabel="Energia")
def lines(f):
xtab = [mu_barrier_values[f], mu_barrier_values[f]]
ytab = [np.amin(energies), np.amax(energies)]
return hv.Curve((xtab, ytab)).opts(color='red', line_width=1.50, axiswise=True,
xlim=(np.amin(mu_barrier_values), np.amax(mu_barrier_values)),\
ylim=(np.amin(energies), np.amax(energies)))
curves = {}
for f in range(len(mu_barrier_values)):
curves[f] = (G_map()*lines(f) + conductance_plot(f))
hv.output(widget_location='bottom')
hmap = hv.HoloMap(curves, kdims='Bariera').collate()
hmap
Mapa po lewej stronie pokazuje przewodność w funkcji energii nośników ładunku i wysokości bariery. Wykres po prawej stronie prezentuje przekroje mapy.
Obserwujemy, że dla wysokiej bariery elektrony niechętnie penetrują do nadprzewodnika, a przewodność jest niska/
Kiedy wyskość bariery jest mała elektron swobodnie przedostaje się do nadprzewodnika i pociągając za sobą drugi nośnik ładunku podwaja przewodność.
Kiedy energia elektronu jest większa niż przerwa energetyczna(tutaj 0.1) zjawisko odbicia Andreeva nie występuje ponieważ ładunki o takiej energii mogą swobodnie propagować się pojedynczo w nadprzewodniku jako kwazicząstki.
Na rysunku (a) widzimy nanodrut (zielony), pokryty częściowo nadprzewodnikiem (szary), podłączony do metalicznego kontaktu (złoty). Pomiędzy kontaktami wytwarzana jest bariera pozwalająca kontrolować przepływ prądu. Mapa przewodności w funkcji przyłożonego napięcia ($V_{SD}$) oraz napięcia kontrolującego wysokość bariery ($V_{TG}$). Panel (c) pokazuje przekroje przewodności. Niebieska krzywa demonstruje podwajanie przewodności na skutek transportu dwóch elektronów przez złącze i formowania się pary Coopera w nadprzewodniku. Jak widzimy wykresy (b) oraz (c) odpowiadają wynikom naszych obliczeń.
Wykresy pochodzą z pracy S. Heedt et al., arXiv:2007.14383 (2020).
Zobaczyliśmy, że rzeczywiście formowanie się pary Coopera zmienia przewodność w złączu półprzewodnik-nadprzewodnik tak jak to przewidziała teoria, a wyniki naszej symulacji doskonale zgadzają się z wynikami pomiaru!