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