diff --git a/devito/passes/clusters/aliases.py b/devito/passes/clusters/aliases.py index 6e67329611..106a0c8c79 100644 --- a/devito/passes/clusters/aliases.py +++ b/devito/passes/clusters/aliases.py @@ -1169,8 +1169,12 @@ def _pivot_min_intervals(self): for d, v in distance: value = v.pop() - ret[d][0] = min(ret[d][0], value) - ret[d][1] = max(ret[d][1], value) + try: + ret[d][0] = min(ret[d][0], value) + ret[d][1] = max(ret[d][1], value) + except TypeError: + ret[d][0] = min(ret[d][0], 0) + ret[d][1] = max(ret[d][1], 0) ret = {d: Interval(d, m, M) for d, (m, M) in ret.items()} diff --git a/tests/test_dse.py b/tests/test_dse.py index d11f25f16e..eee0027896 100644 --- a/tests/test_dse.py +++ b/tests/test_dse.py @@ -2604,6 +2604,16 @@ def test_premature_evalderiv_lowering(self): assert len([i for i in FindSymbols().visit(op) if i.is_Array]) == 1 assert op._profiler._sections['section0'].sops == 16 + def test_issue_2163(self): + grid = Grid((3, 3)) + z = grid.dimensions[-1] + mapper = {z: INT(abs(z-1))} + + u = TimeFunction(name="u", grid=grid) + op = Operator(Eq(u.forward, u.dy.dy.subs(mapper), + subdomain=grid.interior)) + assert_structure(op, ['t,i0x,i0y'], 'ti0xi0y') + class TestIsoAcoustic(object):