diff --git a/pystencils/field.py b/pystencils/field.py index dfe71c692ecf307753459fb219431c977546f3c6..2cd7096b7fa171ab1cb8d9b83bec66ffc339ca5d 100644 --- a/pystencils/field.py +++ b/pystencils/field.py @@ -701,7 +701,7 @@ class Field(AbstractField): obj._offsets.append(o) else: obj._offsets.append(int(o)) - obj._offsets = tuple(obj._offsets) + obj._offsets = tuple(sp.sympify(obj._offsets)) obj._offsetName = offset_name obj._superscript = superscript obj._index = idx diff --git a/pystencils/stencil.py b/pystencils/stencil.py index 32b1283fd969deba2f45df1ed4526cb000817072..359a0a29492c537957b8e24a952fa7e052ee898f 100644 --- a/pystencils/stencil.py +++ b/pystencils/stencil.py @@ -327,14 +327,14 @@ def plot_2d(stencil, axes=None, figure=None, data=None, textsize='12', **kwargs) text_box_style = BoxStyle("Round", pad=0.3) head_length = 0.1 - max_offsets = [max(abs(d[c]) for d in stencil) for c in (0, 1)] + max_offsets = [max(abs(int(d[c])) for d in stencil) for c in (0, 1)] if data is None: data = list(range(len(stencil))) for direction, annotation in zip(stencil, data): assert len(direction) == 2, "Works only for 2D stencils" - + direction = tuple(int(i) for i in direction) if not(direction[0] == 0 and direction[1] == 0): axes.arrow(0, 0, direction[0], direction[1], head_width=0.08, head_length=head_length, color='k') @@ -443,6 +443,7 @@ def plot_3d(stencil, figure=None, axes=None, data=None, textsize='8'): for d, annotation in zip(stencil, data): assert len(d) == 3, "Works only for 3D stencils" + d = tuple(int(i) for i in d) if not (d[0] == 0 and d[1] == 0 and d[2] == 0): if d[0] == 0: color = '#348abd' diff --git a/pystencils/transformations.py b/pystencils/transformations.py index 2c279403e62fd4644b2202d3ee01d050781a34d5..4b84d2d02965581bf7264af9a3b6ed3f25ff1e1c 100644 --- a/pystencils/transformations.py +++ b/pystencils/transformations.py @@ -241,7 +241,7 @@ def create_intermediate_base_pointer(field_access, coordinates, previous_ptr): if coordinate_id < field.spatial_dimensions: offset += field.strides[coordinate_id] * field_access.offsets[coordinate_id] - if type(field_access.offsets[coordinate_id]) is int: + if field_access.offsets[coordinate_id].is_Integer: name += "_%d%d" % (coordinate_id, field_access.offsets[coordinate_id]) else: list_to_hash.append(field_access.offsets[coordinate_id])