Dear Kwant users and developers,

Is
there a way to calculate the integral(< u_nk | d_k(u_nk)>dk)
across the 1D BZ of a system periodic in one direction. Here u_nk is the
periodic part of the Bloch wave function corresponding to band n. I am
trying to compute this for a simple system of graphene nanoribbon.

I am trying compute the gauge independent value of the
above integral using a "1D Wilsoon loop" where the integral is
approximately equal to the product of <u_nk|u_n(k+1) > for all k
across the BZ.
I defined the unit cell of the nanoribbon as a lead and tried to get
the u_nk as the propagating modes using leads.modes() method (I have
pasted the code below) but the resolution in k is too large - only 4
momenta across the BZ.

How can we get u_n(k) with a good resolution of k, say for 100 points in the BZ ? Is this something which can be easily done in Kwant ?

Code:

def make_1D_zigzag(N=7,t=1):

syst = kwant.Builder(kwant.TranslationalSymmetry(Zigzag.prim_vecs[0]))

syst[Zigzag.shape((lambda pos: pos[1] >0 and pos[1] < get_width(N)),(0,0))] = 2*t

syst[Zigzag.neighbors()] = -t

return syst

syst = kwant.Builder(kwant.TranslationalSymmetry(Zigzag.prim_vecs[0]))

syst[Zigzag.shape((lambda pos: pos[1] >0 and pos[1] < get_width(N)),(0,0))] = 2*t

syst[Zigzag.neighbors()] = -t

return syst

lead = make_1D_zigzag(N=N,t=2);

lead = lead.finalized()

prop_modes=lead.modes()[0]

u_nk = prop_modes.wave_functions

u_nk = prop_modes.wave_functions

Thanks a lot for your help!

Srilok Srinivasan

Graduate Student