ValueError: Value functions must not take *args or **kwargs
Dear kwant community: I have encountered this error in my code. Basically I don't want to redefine the hop in the y direction, so I use the existing function `hop`. However, the code throw me an error which I don't know how to fix. Below is a simplest code example, the real situation is more complex but the spirit is the same. ``` lat = kwant.lattice.square() def make_system(r=10, t=1): def circle(pos): x, y = pos return x**2+y**2<r**2 syst = kwant.Builder() def onsite(site): return 0 syst[lat.shape(circle, (0, 0))] = onsite def hop(site1, site2, some_param): # some complex calculations not shown. return t def modified_hop(alpha, hop): # I don't want to define a hopy function, just use the exist hop return lambda *a, **kw: alpha*hop(*a, **kw) alpha = 0.5 syst[kwant.builder.HoppingKind(lat.prim_vecs[0], lat, lat)] = hop syst[kwant.builder.HoppingKind(lat.prim_vecs[1], lat, lat)] = modified_hop(alpha, hop) # alpha*hop would be very nice, but it won't work! syst.eradicate_dangling() return syst syst = make_system() fsyst = syst.finalized() H = fsyst.hamiltonian_submatrix(params=dict(some_param=1)) ``` Best, Wilson
participants (1)
-
wilson2048@outlook.com