From f2558ce5e152df3131055c6e541698af24246ede Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene.hess@iwr.uni-heidelberg.de>
Date: Fri, 24 Mar 2017 11:40:31 +0100
Subject: [PATCH] [Bugfix] Adjust sumfactorization to new splitting

---
 python/dune/perftool/sumfact/sumfact.py | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/python/dune/perftool/sumfact/sumfact.py b/python/dune/perftool/sumfact/sumfact.py
index 2c05e07a..4580d46a 100644
--- a/python/dune/perftool/sumfact/sumfact.py
+++ b/python/dune/perftool/sumfact/sumfact.py
@@ -129,8 +129,8 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
 
     # If this is a gradient, we find the gradient iname
     additional_inames = frozenset({})
-    if accterm.argument.index:
-        for i in accterm.argument.index._indices:
+    if accterm.new_indices is not None:
+        for i in accterm.new_indices:
             if i not in visitor.dimension_indices:
                 from dune.perftool.pdelab.localoperator import grad_iname
                 additional_inames = additional_inames.union(frozenset({grad_iname(i, dim)}))
@@ -138,7 +138,7 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
     def emit_sumfact_kernel(i, restriction, insn_dep):
         # Construct the matrix sequence for this sum factorization
         a_matrices = construct_amatrix_sequence(transpose=True,
-                                                derivative=i if accterm.argument.index else None,
+                                                derivative=i if accterm.new_indices else None,
                                                 facedir=get_facedir(accterm.argument.restriction),
                                                 facemod=get_facemod(accterm.argument.restriction),
                                                 )
@@ -219,7 +219,8 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
                                               within_inames=frozenset(visitor.inames))})
 
 
-        inames = tuple(accum_iname((accterm.argument.restriction, restriction), mat.rows, i) for i, mat in enumerate(a_matrices))
+        inames = tuple(accum_iname((accterm.argument.restriction, restriction), mat.rows, i)
+                       for i, mat in enumerate(a_matrices))
 
         # Collect the lfs and lfs indices for the accumulate call
         test_lfs = determine_accumulation_space(accterm.argument.expr, 0, measure)
@@ -234,7 +235,8 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
         if rank == 2:
             # TODO the next line should get its inames from
             # elsewhere. This is *NOT* robust (but works right now)
-            ansatz_lfs.index = flatten_index(tuple(Variable(visitor.inames[i]) for i in range(world_dimension())),
+            ansatz_lfs.index = flatten_index(tuple(Variable(visitor.inames[i])
+                                                   for i in range(world_dimension())),
                                              (basis_functions_per_direction(),) * dim,
                                              order="f"
                                              )
@@ -258,14 +260,15 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
 
         # Add a sum factorization kernel that implements the multiplication
         # with the test function (stage 3)
-        pref_pos = i if accterm.argument.index else None
+        pref_pos = i if accterm.new_indices else None
         result, insn_dep = sum_factorization_kernel(a_matrices,
                                                     buf,
                                                     3,
                                                     insn_dep=insn_dep,
                                                     additional_inames=frozenset(visitor.inames),
                                                     preferred_position=pref_pos,
-                                                    restriction=(accterm.argument.restriction, restriction),
+                                                    restriction=(accterm.argument.restriction,
+                                                                 restriction),
                                                     direct_output=direct_output,
                                                     visitor=visitor
                                                     )
@@ -325,7 +328,7 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id):
 
     insn_dep = None
     for restriction in jac_restrictions:
-        if accterm.argument.index:
+        if accterm.new_indices:
             for i in range(world_dimension()):
                 insn_dep = emit_sumfact_kernel(i, restriction, insn_dep)
         else:
-- 
GitLab