Dear Shivang, You must supply to the hamiltonian_submatrix extra arguments that onsite expects. Inspecting the error message in more detail would reveal that. In order to figure out how to provide the extra arguments to hamiltonian_submatrix, please consult the documentation.
Best, Anton On Thu, Jul 5, 2018 at 7:18 PM Shivang Agarwal <[email protected]> wrote: > > 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
