From 95456dcbd80e8f8c572f686af0a4239bb2f753b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene.hess@iwr.uni-heidelberg.de>
Date: Fri, 1 Sep 2017 13:18:22 +0200
Subject: [PATCH] Check for MixedElement instead of num_sub_elements

---
 python/dune/perftool/sumfact/accumulation.py | 4 ++--
 python/dune/perftool/sumfact/basis.py        | 2 +-
 python/dune/perftool/ufl/visitor.py          | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/python/dune/perftool/sumfact/accumulation.py b/python/dune/perftool/sumfact/accumulation.py
index 1dd62bf2..2baac395 100644
--- a/python/dune/perftool/sumfact/accumulation.py
+++ b/python/dune/perftool/sumfact/accumulation.py
@@ -41,7 +41,7 @@ import loopy as lp
 import numpy as np
 import pymbolic.primitives as prim
 import ufl.classes as uc
-from ufl import FiniteElement, TensorProductElement
+from ufl import FiniteElement, MixedElement, TensorProductElement
 
 
 @iname
@@ -201,7 +201,7 @@ def generate_accumulation_instruction(expr, visitor):
 
     # Number of basis functions per direction
     leaf_element = test_info.element
-    if leaf_element.num_sub_elements() > 0 and not isinstance(leaf_element, TensorProductElement):
+    if isinstance(leaf_element, MixedElement):
         leaf_element = leaf_element.extract_component(test_info.element_index)[1]
     degree = leaf_element._degree
     if isinstance(degree, int):
diff --git a/python/dune/perftool/sumfact/basis.py b/python/dune/perftool/sumfact/basis.py
index c73f9afe..4e1237c5 100644
--- a/python/dune/perftool/sumfact/basis.py
+++ b/python/dune/perftool/sumfact/basis.py
@@ -115,7 +115,7 @@ def _basis_functions_per_direction(element):
 def pymbolic_coefficient_gradient(element, restriction, index, coeff_func, visitor_indices):
     sub_element = element
     grad_index = visitor_indices[0]
-    if element.num_sub_elements() > 0 and not isinstance(element, TensorProductElement):
+    if isinstance(element, MixedElement):
         sub_element = element.extract_component(index)[1]
 
     from ufl import FiniteElement
diff --git a/python/dune/perftool/ufl/visitor.py b/python/dune/perftool/ufl/visitor.py
index 9b36e9cc..70b95dbc 100644
--- a/python/dune/perftool/ufl/visitor.py
+++ b/python/dune/perftool/ufl/visitor.py
@@ -99,7 +99,7 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker):
         leaf_element = o.ufl_element()
 
         # Select the correct leaf element in the case of this being a mixed finite element
-        if o.ufl_element().num_sub_elements() > 0 and not isinstance(o.ufl_element(), TensorProductElement):
+        if isinstance(o.ufl_element(), MixedElement):
             index = self.indices[0]
             assert isinstance(index, int)
             self.indices = self.indices[1:]
@@ -128,7 +128,7 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker):
             self.interface.initialize_function_spaces(o, self)
 
             index = None
-            if o.ufl_element().num_sub_elements() > 0 and not isinstance(o.ufl_element(), TensorProductElement):
+            if isinstance(o.ufl_element(), MixedElement):
                 index = self.indices[0]
                 assert isinstance(index, int)
                 self.indices = self.indices[1:]
-- 
GitLab