From 5c2ed580dd90eb0a3a9eb704ef2b894f348d9e8d Mon Sep 17 00:00:00 2001
From: Marcel Koch <marcel.koch@uni-muenster.de>
Date: Wed, 23 Jan 2019 13:35:38 +0100
Subject: [PATCH] adds 3d case for neumann bc

---
 .../codegen/blockstructured/accumulation.py    | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/python/dune/codegen/blockstructured/accumulation.py b/python/dune/codegen/blockstructured/accumulation.py
index 89fee47c..a48096dc 100644
--- a/python/dune/codegen/blockstructured/accumulation.py
+++ b/python/dune/codegen/blockstructured/accumulation.py
@@ -64,15 +64,19 @@ def blockstructured_boundary_predicated(measure, subdomain_id):
         def face_id_equals(id):
             return prim.Comparison(prim.Variable(face_id), "==", id)
 
+        def iname_equals(iname, i):
+            return prim.Comparison(prim.Variable(iname), "==", i)
+
         k = get_form_option("number_of_blocks")
 
-        if(world_dimension() == 2):
-            predicates.append(prim.If(face_id_equals(0), prim.Comparison(prim.Variable(subelem_inames[0]), "==", 0), True))
-            predicates.append(prim.If(face_id_equals(1), prim.Comparison(prim.Variable(subelem_inames[0]), "==", k - 1), True))
-            predicates.append(prim.If(face_id_equals(2), prim.Comparison(prim.Variable(subelem_inames[1]), "==", 0), True))
-            predicates.append(prim.If(face_id_equals(3), prim.Comparison(prim.Variable(subelem_inames[1]), "==", k - 1), True))
-        else:
-            raise NotImplementedError()
+        if world_dimension() >= 2:
+            predicates.append(prim.If(face_id_equals(0), iname_equals(subelem_inames[0], 0), True))
+            predicates.append(prim.If(face_id_equals(1), iname_equals(subelem_inames[0], k - 1), True))
+            predicates.append(prim.If(face_id_equals(2), iname_equals(subelem_inames[1], 0), True))
+            predicates.append(prim.If(face_id_equals(3), iname_equals(subelem_inames[1], k - 1), True))
+        if world_dimension() == 3:
+            predicates.append(prim.If(face_id_equals(4), iname_equals(subelem_inames[2], 0), True))
+            predicates.append(prim.If(face_id_equals(5), iname_equals(subelem_inames[2], k - 1), True))
     return frozenset(predicates)
 
 
-- 
GitLab