diff --git a/python/dune/codegen/blockstructured/accumulation.py b/python/dune/codegen/blockstructured/accumulation.py index 89fee47c1dd5e14ffa4f1a276f73d9731144604c..a48096dcdbd37f9f7aea4b2ccc5df0e87e09d402 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)