Hello,
I have been trying to understand the conductance for Normal metal-superconductor proximity system with repulsive interaction in the normal layer numerically. The system I intend to solve is a semi-infinite superconductor, located at x<0, in contact with a semi-infinite normal metal with induced superconducting order parameter up to 0<x<d. Both materials are infinite in the direction transverse to the SN interface. The effect of repulsive interaction is that the sign of induced order parameter in the normal layer is opposite to that in the bulk superconductor. The source code for this system is following:
import kwant
from matplotlib import pyplot
def make_system(a=1, t=1.0, W=10, L=30, barrier=1.5, barrierpos=(14, 15),
mu=0.4, Delta_N=0.04, Delta_S=0.1, Deltapos_N=9, Deltapos_S=15):
lat_e = kwant.lattice.square(a, name='e')
lat_h = kwant.lattice.square(a, name='h')
sys = kwant.Builder()
#### Define the scattering region. ####
sys[(lat_e(x, y) for x in range(L) for y in range(W))] = 4 * t - mu
sys[(lat_h(x, y) for x in range(L) for y in range(W))] = mu - 4 * t
# hoppings for both electrons and holes
sys[lat_e.neighbors()] = -t
sys[lat_h.neighbors()] = t
for i in range(Deltapos_N, L):
for j in xrange(W):
if i < barrierpos[0]:
sys[lat_e(i, j), lat_h(i, j)] = -Delta_N
elif i in range(barrierpos[0], barrierpos[1]):
sys[lat_e(i,j)] = 4*t + barrier - mu
sys[lat_h(i,j)] = mu - 4*t - barrier
else:
sys[lat_e(i, j), lat_h(i, j)] = Delta_S
#### Define the leads. ####
# Symmetry for the left leads.
sym_left = kwant.TranslationalSymmetry((-a, 0))
# left electron lead
lead0 = kwant.Builder(sym_left)
lead0[(lat_e(0, j) for j in xrange(W))] = 4 * t - mu
lead0[lat_e.neighbors()] = -t
# left hole lead
lead1 = kwant.Builder(sym_left)
lead1[(lat_h(0, j) for j in xrange(W))] = mu - 4 * t
lead1[lat_h.neighbors()] = t
# Then the lead to the right
# this one is superconducting and thus is comprised of electrons
# AND holes
sym_right = kwant.TranslationalSymmetry((a, 0))
lead2 = kwant.Builder(sym_right)
lead2 += lead0
lead2 += lead1
lead2[((lat_e(0, j), lat_h(0, j)) for j in xrange(W))] = Delta_S
#### Attach the leads and return the system. ####
sys.attach_lead(lead0)
sys.attach_lead(lead1)
sys.attach_lead(lead2)
return sys
def plot_conductance(sys, energies):
# Compute conductance
data = []
for energy in energies:
smatrix = kwant.smatrix(sys, energy)
# Conductance is N - R_ee + R_he
data.append(smatrix.submatrix(0, 0).shape[0] -
smatrix.transmission(0, 0) +
smatrix.transmission(1, 0))
pyplot.figure()
pyplot.plot(energies, data)
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()
kwant.plotter.bands(sys.leads[0])
def main():
sys = make_system()
# Check that the system looks as intended.
kwant.plot(sys)
# Finalize the system.
sys = sys.finalized()
plot_conductance(sys, energies=[0.002 * i +0.00001 for i in xrange(100)])
if __name__ == '__main__':
main()
I expect a peak in the conductance at zero energy. Now the question I am having here is that I am able to observe the peak when chemical potential (\mu) is of the order of bulk superconducting order parameter (Delta_S) which is unphysical. Also, I must have induced order parameter in the normal layer (Delta_N) much smaller than bulk superconducting order parameter. Can you suggest me something on that? I have analytical results for this type of system and I just want agreement of the same from numerics.
Thanks Abhishek
Dear Abhishek,
Repulsive interactions do not correspond to a mean field superconducting pairing with negative sign. I'm not exactly sure what you want to make and why you would expect for example a zero bias peak, but it seems that your problem relies somehow on interactions beyond mean field, which is not a part of Kwant right now.
Best regards, Anton
On Tue, Jul 14, 2015, 01:27 abhishek kumar abhinet08@gmail.com wrote:
Hello,
I have been trying to understand the conductance for Normal metal-superconductor proximity system with repulsive interaction in the normal layer numerically. The system I intend to solve is a semi-infinite superconductor, located at x<0, in contact with a semi-infinite normal metal with induced superconducting order parameter up to 0<x<d. Both materials are infinite in the direction transverse to the SN interface. The effect of repulsive interaction is that the sign of induced order parameter in the normal layer is opposite to that in the bulk superconductor. The source code for this system is following:
import kwant
from matplotlib import pyplot
def make_system(a=1, t=1.0, W=10, L=30, barrier=1.5, barrierpos=(14, 15),
mu=0.4, Delta_N=0.04, Delta_S=0.1, Deltapos_N=9, Deltapos_S=15):
lat_e = kwant.lattice.square(a, name='e')
lat_h = kwant.lattice.square(a, name='h')
sys = kwant.Builder()
#### Define the scattering region. ####
sys[(lat_e(x, y) for x in range(L) for y in range(W))] = 4 * t - mu
sys[(lat_h(x, y) for x in range(L) for y in range(W))] = mu - 4 * t
# hoppings for both electrons and holes
sys[lat_e.neighbors()] = -t
sys[lat_h.neighbors()] = t
for i in range(Deltapos_N, L):
for j in xrange(W):
if i < barrierpos[0]:
sys[lat_e(i, j), lat_h(i, j)] = -Delta_N
elif i in range(barrierpos[0], barrierpos[1]):
sys[lat_e(i,j)] = 4*t + barrier - mu
sys[lat_h(i,j)] = mu - 4*t - barrier
else:
sys[lat_e(i, j), lat_h(i, j)] = Delta_S
#### Define the leads. ####
# Symmetry for the left leads.
sym_left = kwant.TranslationalSymmetry((-a, 0))
# left electron lead
lead0 = kwant.Builder(sym_left)
lead0[(lat_e(0, j) for j in xrange(W))] = 4 * t - mu
lead0[lat_e.neighbors()] = -t
# left hole lead
lead1 = kwant.Builder(sym_left)
lead1[(lat_h(0, j) for j in xrange(W))] = mu - 4 * t
lead1[lat_h.neighbors()] = t
# Then the lead to the right
# this one is superconducting and thus is comprised of electrons
# AND holes
sym_right = kwant.TranslationalSymmetry((a, 0))
lead2 = kwant.Builder(sym_right)
lead2 += lead0
lead2 += lead1
lead2[((lat_e(0, j), lat_h(0, j)) for j in xrange(W))] = Delta_S
#### Attach the leads and return the system. ####
sys.attach_lead(lead0)
sys.attach_lead(lead1)
sys.attach_lead(lead2)
return sys
def plot_conductance(sys, energies):
# Compute conductance
data = []
for energy in energies:
smatrix = kwant.smatrix(sys, energy)
# Conductance is N - R_ee + R_he
data.append(smatrix.submatrix(0, 0).shape[0] -
smatrix.transmission(0, 0) +
smatrix.transmission(1, 0))
pyplot.figure()
pyplot.plot(energies, data)
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()
kwant.plotter.bands(sys.leads[0])
def main():
sys = make_system()
# Check that the system looks as intended.
kwant.plot(sys)
# Finalize the system.
sys = sys.finalized()
plot_conductance(sys, energies=[0.002 * i +0.00001 for i in xrange(100)])
if __name__ == '__main__':
main()
I expect a peak in the conductance at zero energy. Now the question I am having here is that I am able to observe the peak when chemical potential (\mu) is of the order of bulk superconducting order parameter (Delta_S) which is unphysical. Also, I must have induced order parameter in the normal layer (Delta_N) much smaller than bulk superconducting order parameter. Can you suggest me something on that? I have analytical results for this type of system and I just want agreement of the same from numerics.
Thanks Abhishek
--
Abhishek Kumar Department of Physical Sciences University of Florida, Gainesville FL 32608 Alternate e-mail ID - kumarabhi@ufl.edu
Mobile - +1-3522831740
"Life isn't about how to survive the storm, but how to dance in the rain,"
- Unknown
Hello,
I was trying to understand the conductance of quantum wires from the provided code. In quantum wires, the number of channels are equal to the width (W) of the system. I have checked the band structure and it agrees with that. Now my question is that in the code if I make W=1, why there is error? The error looks like,
Traceback (most recent call last):
File "<ipython-input-1-f7564b6706af>", line 1, in <module>
runfile('/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py', wdir='/Users/Mac_Abhi/Desktop/abhishek/programs')
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 682, in runfile execfile(filename, namespace)
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 78, in execfile builtins.execfile(filename, *where)
File "/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py", line 82, in <module> main()
File "/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py", line 76, in main plot_conductance(sys, energies=[0.01 * i for i in xrange(700)])
File "/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py", line 56, in plot_conductance smatrix = kwant.smatrix(sys, energy)
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/solvers/common.py", line 338, in smatrix check_hermiticity, False)
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/solvers/common.py", line 173, in _make_linear_sys prop, stab = lead.modes(energy, args)
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/system.py", line 213, in modes return physics.modes(ham, self.inter_cell_hopping(args))
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/physics/leads.py", line 596, in modes make_proper_modes(ev[propselect], prop_vecs, extract, tol)
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/physics/leads.py", line 461, in make_proper_modes psi[:, indx] = la.solve(r.T, psi[:, indx].T).T
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/scipy/linalg/basic.py", line 77, in solve raise ValueError('expected square matrix')
ValueError: expected square matrix
Now when I add a small number which is 0.00001 in the code
plot_conductance(sys, energies=[0.01 * i + 0.00001 for i in xrange(700)]) (Thanks to Dr. Xavier Waintal for the earlier discussion !!)
it gives me the result but it seems that there is some offset to the energy. For the certain range of energies, the conductance is zero and then it starts increasing in steps. This offset is different for different number of channels. I am not completely convinced why this is the case.
On Mon, Jul 27, 2015 at 12:43 PM, Anton Akhmerov anton.akhmerov@gmail.com wrote:
Dear Abhishek,
Repulsive interactions do not correspond to a mean field superconducting pairing with negative sign. I'm not exactly sure what you want to make and why you would expect for example a zero bias peak, but it seems that your problem relies somehow on interactions beyond mean field, which is not a part of Kwant right now.
Best regards, Anton
On Tue, Jul 14, 2015, 01:27 abhishek kumar abhinet08@gmail.com wrote:
Hello,
I have been trying to understand the conductance for Normal metal-superconductor proximity system with repulsive interaction in the normal layer numerically. The system I intend to solve is a semi-infinite superconductor, located at x<0, in contact with a semi-infinite normal metal with induced superconducting order parameter up to 0<x<d. Both materials are infinite in the direction transverse to the SN interface. The effect of repulsive interaction is that the sign of induced order parameter in the normal layer is opposite to that in the bulk superconductor. The source code for this system is following:
import kwant
from matplotlib import pyplot
def make_system(a=1, t=1.0, W=10, L=30, barrier=1.5, barrierpos=(14, 15),
mu=0.4, Delta_N=0.04, Delta_S=0.1, Deltapos_N=9, Deltapos_S=15):
lat_e = kwant.lattice.square(a, name='e')
lat_h = kwant.lattice.square(a, name='h')
sys = kwant.Builder()
#### Define the scattering region. ####
sys[(lat_e(x, y) for x in range(L) for y in range(W))] = 4 * t - mu
sys[(lat_h(x, y) for x in range(L) for y in range(W))] = mu - 4 * t
# hoppings for both electrons and holes
sys[lat_e.neighbors()] = -t
sys[lat_h.neighbors()] = t
for i in range(Deltapos_N, L):
for j in xrange(W):
if i < barrierpos[0]:
sys[lat_e(i, j), lat_h(i, j)] = -Delta_N
elif i in range(barrierpos[0], barrierpos[1]):
sys[lat_e(i,j)] = 4*t + barrier - mu
sys[lat_h(i,j)] = mu - 4*t - barrier
else:
sys[lat_e(i, j), lat_h(i, j)] = Delta_S
#### Define the leads. ####
# Symmetry for the left leads.
sym_left = kwant.TranslationalSymmetry((-a, 0))
# left electron lead
lead0 = kwant.Builder(sym_left)
lead0[(lat_e(0, j) for j in xrange(W))] = 4 * t - mu
lead0[lat_e.neighbors()] = -t
# left hole lead
lead1 = kwant.Builder(sym_left)
lead1[(lat_h(0, j) for j in xrange(W))] = mu - 4 * t
lead1[lat_h.neighbors()] = t
# Then the lead to the right
# this one is superconducting and thus is comprised of electrons
# AND holes
sym_right = kwant.TranslationalSymmetry((a, 0))
lead2 = kwant.Builder(sym_right)
lead2 += lead0
lead2 += lead1
lead2[((lat_e(0, j), lat_h(0, j)) for j in xrange(W))] = Delta_S
#### Attach the leads and return the system. ####
sys.attach_lead(lead0)
sys.attach_lead(lead1)
sys.attach_lead(lead2)
return sys
def plot_conductance(sys, energies):
# Compute conductance
data = []
for energy in energies:
smatrix = kwant.smatrix(sys, energy)
# Conductance is N - R_ee + R_he
data.append(smatrix.submatrix(0, 0).shape[0] -
smatrix.transmission(0, 0) +
smatrix.transmission(1, 0))
pyplot.figure()
pyplot.plot(energies, data)
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()
kwant.plotter.bands(sys.leads[0])
def main():
sys = make_system()
# Check that the system looks as intended.
kwant.plot(sys)
# Finalize the system.
sys = sys.finalized()
plot_conductance(sys, energies=[0.002 * i +0.00001 for i in xrange(100)])
if __name__ == '__main__':
main()
I expect a peak in the conductance at zero energy. Now the question I am having here is that I am able to observe the peak when chemical potential (\mu) is of the order of bulk superconducting order parameter (Delta_S) which is unphysical. Also, I must have induced order parameter in the normal layer (Delta_N) much smaller than bulk superconducting order parameter. Can you suggest me something on that? I have analytical results for this type of system and I just want agreement of the same from numerics.
Thanks Abhishek
--
Abhishek Kumar Department of Physical Sciences University of Florida, Gainesville FL 32608 Alternate e-mail ID - kumarabhi@ufl.edu
Mobile - +1-3522831740
"Life isn't about how to survive the storm, but how to dance in the rain,"
- Unknown
Dear Abhishek,
The problem that you are seeing is the numerical instability at the bottom of each conducting band. Xavier's solution is indeed the correct one.
Best, Anton
On Thu, Jul 30, 2015 at 10:10 PM, abhishek kumar abhinet08@gmail.com wrote:
Hello,
I was trying to understand the conductance of quantum wires from the provided code. In quantum wires, the number of channels are equal to the width (W) of the system. I have checked the band structure and it agrees with that. Now my question is that in the code if I make W=1, why there is error? The error looks like,
Traceback (most recent call last):
File "<ipython-input-1-f7564b6706af>", line 1, in <module>
runfile('/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py',
wdir='/Users/Mac_Abhi/Desktop/abhishek/programs')
File
"/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/spyderlib/widgets/externalshell/sitecustomize.py",
line 682, in runfile execfile(filename, namespace)
File
"/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/spyderlib/widgets/externalshell/sitecustomize.py",
line 78, in execfile builtins.execfile(filename, *where)
File "/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py",
line
82, in <module> main()
File "/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py",
line
76, in main plot_conductance(sys, energies=[0.01 * i for i in xrange(700)])
File "/Users/Mac_Abhi/Desktop/abhishek/programs/quantum_wire_revisited.py",
line
56, in plot_conductance smatrix = kwant.smatrix(sys, energy)
File
"/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/solvers/common.py",
line 338, in smatrix check_hermiticity, False)
File
"/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/solvers/common.py",
line 173, in _make_linear_sys prop, stab = lead.modes(energy, args)
File "/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/system.py",
line
213, in modes return physics.modes(ham, self.inter_cell_hopping(args))
File
"/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/physics/leads.py",
line 596, in modes make_proper_modes(ev[propselect], prop_vecs, extract, tol)
File
"/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/kwant/physics/leads.py",
line 461, in make_proper_modes psi[:, indx] = la.solve(r.T, psi[:, indx].T).T
File
"/Users/Mac_Abhi/anaconda/lib/python2.7/site-packages/scipy/linalg/basic.py",
line 77, in solve raise ValueError('expected square matrix')
ValueError: expected square matrix
Now when I add a small number which is 0.00001 in the code
plot_conductance(sys, energies=[0.01 * i + 0.00001 for i in xrange(700)]) (Thanks to Dr. Xavier Waintal for the earlier discussion !!)
it gives me the result but it seems that there is some offset to the
energy.
For the certain range of energies, the conductance is zero and then it starts increasing in steps. This offset is different for different number
of
channels. I am not completely convinced why this is the case.
On Mon, Jul 27, 2015 at 12:43 PM, Anton Akhmerov <anton.akhmerov@gmail.com
wrote:
Dear Abhishek,
Repulsive interactions do not correspond to a mean field superconducting pairing with negative sign. I'm not exactly sure what you want to make
and
why you would expect for example a zero bias peak, but it seems that your problem relies somehow on interactions beyond mean field, which is not a part of Kwant right now.
Best regards, Anton
On Tue, Jul 14, 2015, 01:27 abhishek kumar abhinet08@gmail.com wrote:
Hello,
I have been trying to understand the conductance for Normal metal-superconductor proximity system with repulsive interaction in the normal layer numerically. The system I intend to solve is a
semi-infinite
superconductor, located at x<0, in contact with a semi-infinite normal
metal
with induced superconducting order parameter up to 0<x<d. Both
materials are
infinite in the direction transverse to the SN interface. The effect of repulsive interaction is that the sign of induced order parameter in the normal layer is opposite to that in the bulk superconductor. The source
code
for this system is following:
import kwant
from matplotlib import pyplot
def make_system(a=1, t=1.0, W=10, L=30, barrier=1.5, barrierpos=(14,
15),
mu=0.4, Delta_N=0.04, Delta_S=0.1, Deltapos_N=9, Deltapos_S=15):
lat_e = kwant.lattice.square(a, name='e')
lat_h = kwant.lattice.square(a, name='h')
sys = kwant.Builder()
#### Define the scattering region. ####
sys[(lat_e(x, y) for x in range(L) for y in range(W))] = 4 * t - mu
sys[(lat_h(x, y) for x in range(L) for y in range(W))] = mu - 4 * t
# hoppings for both electrons and holes
sys[lat_e.neighbors()] = -t
sys[lat_h.neighbors()] = t
for i in range(Deltapos_N, L):
for j in xrange(W):
if i < barrierpos[0]:
sys[lat_e(i, j), lat_h(i, j)] = -Delta_N
elif i in range(barrierpos[0], barrierpos[1]):
sys[lat_e(i,j)] = 4*t + barrier - mu
sys[lat_h(i,j)] = mu - 4*t - barrier
else:
sys[lat_e(i, j), lat_h(i, j)] = Delta_S
#### Define the leads. ####
# Symmetry for the left leads.
sym_left = kwant.TranslationalSymmetry((-a, 0))
# left electron lead
lead0 = kwant.Builder(sym_left)
lead0[(lat_e(0, j) for j in xrange(W))] = 4 * t - mu
lead0[lat_e.neighbors()] = -t
# left hole lead
lead1 = kwant.Builder(sym_left)
lead1[(lat_h(0, j) for j in xrange(W))] = mu - 4 * t
lead1[lat_h.neighbors()] = t
# Then the lead to the right
# this one is superconducting and thus is comprised of electrons
# AND holes
sym_right = kwant.TranslationalSymmetry((a, 0))
lead2 = kwant.Builder(sym_right)
lead2 += lead0
lead2 += lead1
lead2[((lat_e(0, j), lat_h(0, j)) for j in xrange(W))] = Delta_S
#### Attach the leads and return the system. ####
sys.attach_lead(lead0)
sys.attach_lead(lead1)
sys.attach_lead(lead2)
return sys
def plot_conductance(sys, energies):
# Compute conductance
data = []
for energy in energies:
smatrix = kwant.smatrix(sys, energy)
# Conductance is N - R_ee + R_he
data.append(smatrix.submatrix(0, 0).shape[0] -
smatrix.transmission(0, 0) +
smatrix.transmission(1, 0))
pyplot.figure()
pyplot.plot(energies, data)
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()
kwant.plotter.bands(sys.leads[0])
def main():
sys = make_system()
# Check that the system looks as intended.
kwant.plot(sys)
# Finalize the system.
sys = sys.finalized()
plot_conductance(sys, energies=[0.002 * i +0.00001 for i in
xrange(100)])
if __name__ == '__main__':
main()
I expect a peak in the conductance at zero energy. Now the question I am having here is that I am able to observe the peak when chemical
potential
(\mu) is of the order of bulk superconducting order parameter (Delta_S) which is unphysical. Also, I must have induced order parameter in the
normal
layer (Delta_N) much smaller than bulk superconducting order parameter.
Can
you suggest me something on that? I have analytical results for this
type of
system and I just want agreement of the same from numerics.
Thanks Abhishek
--
Abhishek Kumar Department of Physical Sciences University of Florida, Gainesville FL 32608 Alternate e-mail ID - kumarabhi@ufl.edu
Mobile - +1-3522831740
"Life isn't about how to survive the storm, but how to dance in the rain,"
- Unknown
--
Abhishek Kumar Department of Physical Sciences University of Florida, Gainesville FL 32608 Alternate e-mail ID - kumarabhi@ufl.edu
Mobile - +1-3522831740
"Life isn't about how to survive the storm, but how to dance in the rain,"
- Unknown