From dc264729410c78df06476ff9161701b8f8a07dac Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Wed, 14 Dec 2016 10:44:31 +0100
Subject: [PATCH] Fix quadvec for sumfact poisson_dg numdiff

---
 .../perftool/loopy/transformations/collect_rotate.py |  2 ++
 python/dune/perftool/pdelab/geometry.py              | 12 +++++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/python/dune/perftool/loopy/transformations/collect_rotate.py b/python/dune/perftool/loopy/transformations/collect_rotate.py
index f37b5df0..c6c43a95 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 973104df..1930ed92 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"
 
 
-- 
GitLab