diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py
index 1e92e67c183c2869b39eef89646369ad9b441d30..e2993aea16412e5cba3e263acffa5399b540b07e 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)