diff --git a/python/dune/perftool/sumfact/accumulation.py b/python/dune/perftool/sumfact/accumulation.py index 1dd62bf231748bbf836a98060a6af313f1140e97..2baac3955129376b269fb5a9b9c10b17dcf3a8fa 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 c73f9afef66918acd10ac6725bff055f43a821ba..4e1237c5d6c4e7b5d012de1d9328b06e6d350952 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 9b36e9cc4251d346cb354adb6ecc41ae5ec03494..70b95dbc30bae42848ebd8e7e30c494ef7a8c59b 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:]