Skip to content

ConditionalDimension + implicit_dims fails when combined with SubDomain #2803

Description

@ZoeLeibowitz

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions