diff --git a/gem/gem.py b/gem/gem.py index 782c1e8f..ce2fb83e 100644 --- a/gem/gem.py +++ b/gem/gem.py @@ -985,6 +985,16 @@ def __new__(cls, i, j, dtype=None): if isinstance(i, Integral) and isinstance(j, Integral): return one if i == j else Zero() + if isinstance(i, Integral): + expr = numpy.full(j.extent, Zero(), dtype=object) + expr[i] = one + return Indexed(ListTensor(expr), (j,)) + + if isinstance(j, Integral): + expr = numpy.full(i.extent, Zero(), dtype=object) + expr[j] = one + return Indexed(ListTensor(expr), (i,)) + self = super(Delta, cls).__new__(cls) self.i = i self.j = j