From ed81ca1ba1cd05e93a5aa382131b9ca1b1ee77c6 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Fri, 9 Sep 2016 14:13:44 +0200 Subject: [PATCH] [bugfix] only arguments should introduce dimension index aliases --- python/dune/perftool/ufl/dimensionindex.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/python/dune/perftool/ufl/dimensionindex.py b/python/dune/perftool/ufl/dimensionindex.py index e5fb3e9f..62651b21 100644 --- a/python/dune/perftool/ufl/dimensionindex.py +++ b/python/dune/perftool/ufl/dimensionindex.py @@ -9,6 +9,7 @@ class _DimensionIndexMapping(MultiFunction): def __call__(self, o): self.shape = 0 self.dimension_index_dict = {} + self.component = None self.call(o) return self.dimension_index_dict @@ -18,12 +19,15 @@ class _DimensionIndexMapping(MultiFunction): self.call(op) def function_view(self, o): - from ufl.functionview import select_subelement - subelement = select_subelement(o.ufl_operands[0].ufl_element(), o.ufl_operands[1]) - self.shape = len(subelement.value_shape()) + self.component = o.ufl_operands[1] + self.call(o.ufl_operands[0]) + self.component = None - def coefficient(self, o): - self.shape = len(o.ufl_element().value_shape()) + def argument(self, o): + if self.component: + from ufl.functionview import select_subelement + subelement = select_subelement(o.ufl_element(), self.component) + self.shape = len(subelement.value_shape()) def indexed(self, o): self.call(o.ufl_operands[0]) -- GitLab