diff --git a/python/dune/perftool/loopy/transformations/collect_rotate.py b/python/dune/perftool/loopy/transformations/collect_rotate.py index f37b5df0e9cd9bda881d8f1ddceacaa9924814ce..c6c43a95eff681b1a2abb1d9a681388c6c8da9ee 100644 --- a/python/dune/perftool/loopy/transformations/collect_rotate.py +++ b/python/dune/perftool/loopy/transformations/collect_rotate.py @@ -138,6 +138,7 @@ def collect_vector_data_rotate(knl): else: raise NotImplementedError elif quantity in knl.temporary_variables: + expr, = quantities[quantity] if all(get_pymbolic_tag(expr) == 'vector' for expr in quantities[quantity]): # # There is a vector quantity to be vectorized! That requires register rotation! @@ -165,6 +166,7 @@ def collect_vector_data_rotate(knl): ) else: # Add a vector view to this quantity + expr, = quantities[quantity] knl = add_vector_view(knl, quantity) replacemap_vec[expr] = prim.Subscript(prim.Variable(get_vector_view_name(quantity)), (prim.Variable("vec_index"), prim.Variable(new_iname)), diff --git a/python/dune/perftool/pdelab/geometry.py b/python/dune/perftool/pdelab/geometry.py index 973104dfe931865ec72d3bf8c34a182467f7ca5e..1930ed923104649e6410b573fb878c8b9680c9d1 100644 --- a/python/dune/perftool/pdelab/geometry.py +++ b/python/dune/perftool/pdelab/geometry.py @@ -12,7 +12,9 @@ from dune.perftool.generation import (backend, temporary_variable, valuearg, ) -from dune.perftool.options import option_switch +from dune.perftool.options import (get_option, + option_switch, + ) from dune.perftool.pdelab.quadrature import quadrature_preamble from dune.perftool.tools import get_pymbolic_basename from ufl.algorithms import MultiFunction @@ -260,8 +262,12 @@ def declare_normal(name, shape, shape_impl): def name_unit_outer_normal(): name = "outer_normal" - temporary_variable(name, shape=(world_dimension(),), decl_method=declare_normal) - evaluate_unit_outer_normal(name) + if not get_option("diagonal_transformation_matrix"): + temporary_variable(name, shape=(world_dimension(),), decl_method=declare_normal) + evaluate_unit_outer_normal(name) + else: + declare_normal(name, None, None) + globalarg(name, shape=(world_dimension(),), dtype=np.float64) return "outer_normal"