From 51cc7b1c2bda36c958066b9fcbd437710293a066 Mon Sep 17 00:00:00 2001
From: Marcel Koch <marcel.koch@uni-muenster.de>
Date: Wed, 26 Jul 2017 11:37:38 +0200
Subject: [PATCH] Moves setting/removing of degree to the right place

---
 python/dune/perftool/pdelab/driver.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py
index 1e92e67c..e2993aea 100644
--- a/python/dune/perftool/pdelab/driver.py
+++ b/python/dune/perftool/pdelab/driver.py
@@ -1785,6 +1785,26 @@ def return_statement():
     return "return {};".format(fail)
 
 
+def _blockstructured_degree_helper(element, op):
+    element._degree = op(element._degree, get_option("number_of_blocks"))
+    from ufl import MixedElement, VectorElement, TensorElement
+    if isinstance(element, VectorElement) or isinstance(element, TensorElement):
+        _blockstructured_degree_helper(element.sub_elements()[0], op)
+    elif isinstance(element, MixedElement):
+        for e in element.sub_elements():
+            _blockstructured_degree_helper(e, op)
+
+
+def set_blockstructured_degree():
+    from operator import mul
+    _blockstructured_degree_helper(_driver_data["form"].coefficients()[0].ufl_element(), mul)
+
+
+def unset_blockstructured_degree():
+    from operator import floordiv
+    _blockstructured_degree_helper(_driver_data["form"].coefficients()[0].ufl_element(), floordiv)
+
+
 def generate_driver(formdatas, data):
     # The driver module uses a global dictionary for storing necessary data
     set_driver_data(formdatas, data)
-- 
GitLab