discretizer creates incorrect onsite (hopping) functions
See the following example:
import kwant
ham = kwant.continuum.discretizer.sympify('k_x**2 + g * B_x') # because I want a sympy output
ham = ham.subs({'B_x': '-B_x'})
template = kwant.continuum.discretize(ham)
this gives the following error:
Traceback (most recent call last):
File "/opt/conda/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2910, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-17-ff7fc5b56134>", line 3, in <module>
template = kwant.continuum.discretize(ham)
File "/opt/conda/lib/python3.6/site-packages/kwant/continuum/discretizer.py", line 132, in discretize
return build_discretized(tb, coords, grid_spacing=grid_spacing)
File "/opt/conda/lib/python3.6/site-packages/kwant/continuum/discretizer.py", line 296, in build_discretized
grid_spacing, onsite, name)
File "/opt/conda/lib/python3.6/site-packages/kwant/continuum/discretizer.py", line 631, in _builder_value
exec(func_code, namespace)
File "<string>", line 1
def onsite(site, -B_x, g):
^
SyntaxError: invalid syntax
note that template = kwant.continuum.discretize(str(ham))
does work.
Edited by Bas Nijholt