[Kwant] NNN hopping with periodic BC

2018-04-03 Thread yuhao kang
Hello,

 

I want to create a graphene-like system with periodic BC at transverse
direction.  I'm following

the discussion at
https://www.mail-archive.com/kwant-discuss@kwant-project.org/msg00036.html.

 

For nearest-neighbor hopping, it works. There is hopping between the upper
and lower side.

 

But when I add NNN hopping using:

A,B=graphene.sublattices

sys[A.neighbors()]=hopp_qsvh

sys[B.neighbors()]=hopp_qsvh

 

The NNN hopping doesn't exist between the upper and lower side. 

 

Is there any way to solve it?

 

Thank you,

Yuhao

 

Attached is the code:

 

import numpy as np

import kwant

X,Y = 4, 4

s0=np.identity(2)

sz=np.array([[1,0],[0,-1]])

 

graphene = kwant.lattice.honeycomb(1,'b')

A,B=graphene.sublattices

 

def rectangle(pos):

x, y = pos

return -X/2 < x < X/2

 

def onsite_qsvh(site):

x,y=site.pos

if y<0:

onsite_a = .4*s0

onsite_b = -.4*s0

return onsite_a if site.family == A else onsite_b

else:

return np.zeros([2,2])

def hopp_qsvh(site1,site2):

x1,y1=site1.pos

x2,y2=site2.pos

hop_a = .4*1j*sz

hop_b = -.4*1j*sz

if (y1+0.1)*(y2+0.1)>0 and y1+0.1>0:

return hop_a if site1.family == A else hop_b

else:

return np.zeros([2,2])

 

sym = kwant.TranslationalSymmetry(graphene.vec((-Y/2,Y)))

anc = kwant.Builder(sym) 

anc[graphene.shape(rectangle,(0, 0))] = None

anc[graphene.neighbors()] = None 

sys = kwant.Builder()

  

sys[anc.sites()] = onsite_qsvh

sys[((a, sym.to_fd(b)) for a, b in anc.hoppings())] = -s0 

sys[A.neighbors()]=hopp_qsvh

sys[B.neighbors()]=hopp_qsvh

 

sys = sys.finalized() 

kwant.plot(sys,fig_size=(20, 10))



Re: [Kwant] NNN hopping with periodic BC

2018-04-03 Thread Joseph Weston

Hi,

> I want to create a graphene-like system with periodic BC at transverse
> direction.  I’m following
>
> the discussion at
> https://www.mail-archive.com/kwant-discuss@kwant-project.org/msg00036.html.
>
>  
>

If you only want 1 direction to have periodic boundary conditions (and
finite in the other direction)
why not just create a system with a 1D translational symmetry? This will
make your life a lot easier.

Happy Kwanting,

Joe