Dear Kwant members,
I’ve been running into the same error message over and over when trying to pass a SimpleNamespace to the function hamiltonian_submatrix(). I am using Python 3.7.3 and Kwant 1.4.1. Could it be that this is due to a too recent Python version?
Kind regards,
Arfor
sys = kwant.Builder()
lat = kwant.lattice.square()
r=10
def onsite(position,p):
x,y = position
return p.mu
def hopping(x,y,p):
return -p.t
sys[(lat(x, y) for x in range(r) for y in range(r))] = onsite
sys[sqlat.neighbors(1)]= hopping
syst = sys.finalized()
pars = SimpleNamespace(t=1, mu=-0.1)
hamil = syst.hamiltonian_submatrix(params=pars)
---------------------------
AttributeError Traceback (most recent call last)
<ipython-input-5-70dbfa568582> in <module>
1 pars = SimpleNamespace(t=1, mu=-0.1)
----> 2 hamil = syst.hamiltonian_submatrix(params=pars)
C:\ProgramData\Anaconda3\envs\lps\lib\site-packages\kwant\_common.py in inner(*args, **kwargs)
70 if sig.bind(*args, **kwargs).arguments.get(parameter_name):
71 warn()
---> 72 return f(*args, **kwargs)
73
74 return inner
kwant/_system.pyx in kwant._system.hamiltonian_submatrix()
C:\ProgramData\Anaconda3\envs\lps\lib\site-packages\kwant\builder.py in hamiltonian(self, i, j, params, *args)
1872 if isinstance(param_names, Exception):
1873 raise param_names
-> 1874 args = map(params.__getitem__, param_names)
1875 try:
1876 value = value(site, *args)
AttributeError: 'types.SimpleNamespace' object has no attribute '__getitem__'