Hello All,

I want to obtain the hamiltonian for my system, for which I am using the
*sys.hamiltonian_submatrix()* command, but I get the following error.

*UserCodeError: Error occurred in user-supplied value function "onsite".*

Below is the code that I am using.

*lat = kwant.lattice.honeycomb(a = a)*
*p, q = lat.sublattices*

*def make_system():*

*    def hopping(sitei, sitej, phi, salt):*
*        xi, yi = sitei.pos*
*        xj, yj = sitej.pos*
*        return -t * np.exp(-0.5j * phi * (xi - xj) * (yi + yj))*

*    def onsite(site, phi, salt):*
*        x, y = site.pos*
*        return 0*

*    def central_region(pos):*
*        x, y = pos*
*        return abs(x) < 2*a and abs(y) < 3*a*

*    sys = kwant.Builder()*
*    sys[lat.shape(central_region, (0, 0))] = onsite*
*    sys[lat.neighbors()] = hopping*

*    sym = kwant.TranslationalSymmetry((-a, 0))*
*    lead = kwant.Builder(sym)*
*    lead[lat.shape(lambda s: abs(s[1]) < 2*a, (0, 0))] = 0*
*    lead[lat.neighbors()] = hopping*

*    sys.attach_lead(lead)*
*    sys.attach_lead(lead.reversed())*

*    return sys.finalized()*

*sys = make_system()*
*sparse_mat = sys.hamiltonian_submatrix()  ----> Throws the error*

What confuses me is that the code works fine (when I do further
calculations on sys) if I comment the *hamitonian_submatrix()* command but
throws up the error otherwise. That made me think that the code itself
should be correct, but I could not figure out why that line gives an error.

I would be glad if someone can help me out with the same. Any help will be
much appreciated!

Sincerely,
Shivang Agarwal

-- 
*Shivang Agarwal*
Junior Undergraduate
Discipline of Electrical Engineering
IIT Gandhinagar

Contact: +91-9869321451

Reply via email to