-
Notifications
You must be signed in to change notification settings - Fork 245
Open
Labels
Description
The following code fails when a ConditionalDimension is supplied through implicit_dims together with subdomain=grid.interior :
grid = Grid((2,2))
_, y = grid.dimensions
u = Function(name='u', grid=grid, space_order=2)
v = Function(name='v', grid=grid, space_order=2)
c1 = ConditionalDimension(name='c1', parent=y, condition=Gt(u, 0))
update_u = Eq(u, v, implicit_dims=c1, subdomain=grid.interior)
op = Operator(update_u)
Error:
File "/home/zl5621/devito_original/devito/mfe.py", line 13, in <module>
op = Operator(update_u)
^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/operator/operator.py", line 174, in __new__
op = cls._build(expressions, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/operator/operator.py", line 207, in _build
irs, byproduct = cls._lower(expressions, profiler=profiler, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/operator/operator.py", line 292, in _lower
clusters = cls._lower_clusters(expressions, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/tools/timing.py", line 76, in __call__
retval = self.func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/operator/operator.py", line 396, in _lower_clusters
clusters = clusterize(expressions, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/ir/clusters/algorithms.py", line 44, in clusterize
clusters = guard(clusters)
^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/tools/timing.py", line 76, in __call__
retval = self.func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/ir/clusters/algorithms.py", line 246, in guard
k = max(dims, default=d, key=lambda i: c.ispace.index(i))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/ir/clusters/algorithms.py", line 246, in <lambda>
k = max(dims, default=d, key=lambda i: c.ispace.index(i))
^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/ir/support/space.py", line 866, in index
return self.intervals.index(key)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zl5621/devito_original/devito/devito/ir/support/space.py", line 542, in index
return super().index(self[key])
^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: tuple.index(x): x not in tuple