diff --git a/python/dune/perftool/pdelab/basis.py b/python/dune/perftool/pdelab/basis.py
index d848aef2b8d295ad8052c86926c5cc319ee76cbb..ced7d2da58613b7ac8e6d583861ff0220fe3ace8 100644
--- a/python/dune/perftool/pdelab/basis.py
+++ b/python/dune/perftool/pdelab/basis.py
@@ -91,7 +91,7 @@ def name_basis(leaf_element, restriction):
 @cached
 def evaluate_reference_gradient(leaf_element, name, restriction):
     lfs = name_leaf_lfs(leaf_element, restriction)
-    temporary_variable(name, shape=(name_lfs_bound(lfs), name_dimension()), decl_method=None)
+    temporary_variable(name, shape=(name_lfs_bound(lfs), 1, name_dimension()), decl_method=None)
     declare_cache_temporary(leaf_element, restriction, name, which='Jacobian')
     cache = name_localbasis_cache(leaf_element)
     qp = name_quadrature_position_in_cell(restriction)
diff --git a/python/dune/perftool/pdelab/geometry.py b/python/dune/perftool/pdelab/geometry.py
index bb548d8dd0784ed9ac191801e04139141ae56fd0..f4d476bc6d2c1f07291e12a6b8d88393f029e9ae 100644
--- a/python/dune/perftool/pdelab/geometry.py
+++ b/python/dune/perftool/pdelab/geometry.py
@@ -187,26 +187,14 @@ def to_cell_coordinates(local, basename, restriction):
         return name_in_cell_coordinates(local, basename, restriction)
 
 
-@preamble
-def define_dimension(name):
-    geo = type_geometry_wrapper()
-    return 'const int {} = {}::Entity::dimension;'.format(name, geo)
-
-
 def name_dimension():
-    define_dimension("dim")
-    return "dim"
-
-
-@preamble
-def define_intersection_dimension(name):
-    geo = type_intersection_geometry_wrapper()
-    return "const int {} = {}::Geometry::mydimension;".format(name, geo)
+    formdata = get_global_context_value('formdata')
+    return formdata.geometric_dimension
 
 
 def name_intersection_dimension():
-    define_intersection_dimension("idim")
-    return "idim"
+    formdata = get_global_context_value('formdata')
+    return formdata.geometric_dimension - 1
 
 
 def evaluate_unit_outer_normal(name):