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 ?


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

lead = make_1D_zigzag(N=N,t=2); 
lead = lead.finalized()
u_nk = prop_modes.wave_functions

Thanks a lot for your help!
Srilok Srinivasan
Graduate Student
Mechanical Engineering
Iowa State University, Ames, IA