Fix behaviour of discretizer when locals contains numpy array values
See merge request kwant/kwant!344
... | ... |
@@ -180,7 +180,11 @@ def sympify(expr, locals=None): |
180 | 180 |
"identifiers and may not be keywords".format(repr(k))) |
181 | 181 |
|
182 | 182 |
# sympify values of locals before updating it with extra_ns |
183 |
- locals = {k: sympify(v) for k, v in locals.items()} |
|
183 |
+ # Cast numpy array values in locals to sympy matrices to make sure they have |
|
184 |
+ # correct format |
|
185 |
+ locals = {k: (sympy.Matrix(v) if isinstance(v, np.ndarray) else sympify(v)) |
|
186 |
+ for k, v in locals.items()} |
|
187 |
+ |
|
184 | 188 |
for k, v in extra_ns.items(): |
185 | 189 |
locals.setdefault(k, v) |
186 | 190 |
try: |