Sorry,
a typo was in my previous mail.
Now it is correct.

L.



Dear authors,

I think the problem relies in that the particle-hole symmetry in the
leads is not
correctly implemented. Indeed, in the present form
H_leads (k) \neq - U H^*_leads (-k) U^{-1}
(as it holds instead for the scattering region).
To solve the problem, it looks me sufficient just to add a factor (1j)
to the hoppings in the leads.
In this way, the conductance results symmetric around zero energy
(where the Weyl nodes occur)

I hope it can help.

Best regards,

L. L.

Il giorno ven 15 mar 2019 alle ore 16:21

Il giorno ven 22 mar 2019 alle ore 16:59 Luca Lepori
<llepor...@gmail.com> ha scritto:
>
> Dear authors,
>
> I think the problem relies in that the particle-hole symmetry in the
> leads is not
> correctly implemented. Indeed, in the present form
> H_leads (k) \neq - U H_leads (k) U^{-1}
> (as it hold instead for the scattering region).
> To solve the problem, it looks me sufficient just to add a factor (1j)
> to the hoppings
> in the leads.
> In this way, the conductance results symmetric around zero energy
> (where the Weyl nodes occur)
>
> I hope it can help.
>
> Best regards,
>
> L. L.
>
> Il giorno ven 15 mar 2019 alle ore 16:21 Luca Lepori
> <llepor...@gmail.com> ha scritto:
> >
> > Dear Joe,
> >
> > concerning to your answer
> > https://www.mail-archive.com/kwant-discuss@kwant-project.org/msg01808.html ,
> >
> > I checked that I do not have any sign problem, as those you described,
> > in my system/code.
> > Therefore I am wandering if some fuzzy problem of matching of wavefunctions
> > is known, or expected, to occur when metals (leads) and semimetals
> > (scattering region)
> > are put in contact (perhaps due to symmetries of whatever), not
> > depending on the sign problem.
> >
> > I also attach below the code that I used, and that looks me correct,
> > after various checks
> > on the spectrum of the scattering region and of the leads.
> > I assumed a cubic lattice with periodic boundary conditions along x
> > and z, while the leads are along y.
> > However, I checked that the problem persists also assuming open
> > boundary conditions.
> >
> > Thank you very much for the help and best regards
> >
> > L.
> >
> > -----------------------------------------------------------------------------------
> >
> > import kwant
> > import math
> > import cmath
> > import scipy.sparse.linalg as sla
> > import numpy
> >
> > # For plotting
> > from matplotlib import pyplot
> >
> > # For matrix support
> > import tinyarray
> >
> > #-----------------------------------------------------
> >
> > # We define Pauli-matrices
> > sigma_0 = tinyarray.array([[1, 0], [0, 1]])
> > sigma_x = tinyarray.array([[0, 1], [1, 0]])
> > sigma_y = tinyarray.array([[0, -1j], [1j, 0]])
> > sigma_z = tinyarray.array([[1, 0], [0, -1]])
> >
> > # We define the variables and the constants
> >
> > t = 1.0
> > v = 1.0
> > L = 13    # length y
> > W = 13   # length x and  z
> > k0 = math.pi/10.
> > #k0 = -0.4636476090008061
> >
> > m0 = math.cos(k0)
> > vtilde = v/math.sin(k0)
> > h = vtilde*m0 + 2*v
> > a=1
> >
> > #---------------------------------------------------------------------------------------------------------
> >
> > syst = kwant.Builder()
> > lat = kwant.lattice.cubic(a)
> >
> > for i in range(W):
> >     for j in range(L):
> >         for k in range(W):
> >
> >              # On-site Hamiltonian
> >             syst[lat(i, j, k)] = h*sigma_x
> >
> >              # Hopping in x-direction
> >             if i > 0:
> >                 syst[lat(i, j, k), lat(i - 1, j, k)] = -(vtilde/2)*sigma_x
> >
> >               # Hopping in y-direction
> >             if j > 0:
> >                 syst[lat(i, j, k), lat(i, j - 1, k)] =
> > -(v/2)*((1j)*sigma_y + sigma_x)
> >
> >               # Hopping in z-direction
> >             if k > 0:
> >                  syst[lat(i, j, k), lat(i, j, k - 1)] =
> > -(v/2)*((1j)*sigma_z + sigma_x)
> >
> >
> > #  I close hopping in x-direction, connecting W-1 and 0
> > for j in range(L):
> >     for k in range(W):
> >         syst[lat(0, j, k), lat(W-1, j, k)] = -(vtilde/2)*sigma_x
> >
> >
> > # I close the hopping in z-direction, connecting W-1 and 0
> > for i in range(W):
> >     for j in range(L):
> >         syst[lat(i, j, 0), lat(i, j, W-1)] = -(v/2)*((1j)*sigma_z + sigma_x)
> >
> > #---------------------------------------------------------------------------------------------------------
> >
> > # We define the right lead, along y
> > sym_right_lead = kwant.TranslationalSymmetry((0, a, 0))
> > right_lead = kwant.Builder(sym_right_lead)
> >
> >
> > for i in range(W):
> >     for k in range(W):
> >
> >
> >         right_lead[lat(i, 0, k)] = mu*sigma_0
> >
> >         if i > 0:
> >             right_lead[lat(i, 0, k), lat(i-1, 0, k)] = -t*sigma_0
> >
> >         if k > 0:
> >             right_lead[lat(i, 0, k), lat(i, 0, k-1)] = -t*sigma_0
> >
> >
> >         right_lead[lat(i, 1, k), lat(i, 0, k)] = -t*sigma_0
> >
> >
> > # I close hopping in x-direction, connecting  W-1 and 0
> > for k in range(W):
> >     right_lead[lat(0, 0, k), lat(W-1, 0, k)] = -t*sigma_0
> >
> > # I close hopping in z-direction, connecting  W-1
> > for i in range(W):
> >     right_lead[lat(i, 0, 0), lat(i, 0, W-1)] = -t*sigma_0
> >
> >
> > syst.attach_lead(right_lead)
> > left_lead = right_lead.reversed()
> > syst.attach_lead(left_lead)

Reply via email to