From d3a1c41a3264e0cecc999801045e5f8449c329fb Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Wed, 11 Apr 2018 09:40:07 +0200
Subject: [PATCH] Added pystencils boundary condition test + bug fix in
 boundary code

---
 boundaries/__init__.py               |  2 ++
 boundaries/boundaryconditions.py     |  2 +-
 boundaries/createindexlistcython.pyx | 20 ++++++++++----------
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/boundaries/__init__.py b/boundaries/__init__.py
index a7ab44b75..0192bbc2d 100644
--- a/boundaries/__init__.py
+++ b/boundaries/__init__.py
@@ -1 +1,3 @@
 from pystencils.boundaries.boundaryhandling import BoundaryHandling
+from pystencils.boundaries.boundaryconditions import Neumann
+from pystencils.boundaries.inkernel import add_neumann_boundary
diff --git a/boundaries/boundaryconditions.py b/boundaries/boundaryconditions.py
index 563940b30..5032faff9 100644
--- a/boundaries/boundaryconditions.py
+++ b/boundaries/boundaryconditions.py
@@ -29,7 +29,7 @@ class Boundary(object):
         """Return a list of (name, type) tuples for additional data items required in this boundary
         These data items can either be initialized in separate kernel see additional_data_kernel_init or by
         Python callbacks - see additional_data_callback """
-        return []
+        return ()
 
     @property
     def additional_data_init_callback(self):
diff --git a/boundaries/createindexlistcython.pyx b/boundaries/createindexlistcython.pyx
index fc3b2dc92..0ce36ae81 100644
--- a/boundaries/createindexlistcython.pyx
+++ b/boundaries/createindexlistcython.pyx
@@ -28,7 +28,7 @@ def create_boundary_index_list_2d(object[IntegerType, ndim=2] flag_field,
     for y in range(nr_of_ghost_layers, ys - nr_of_ghost_layers):
         for x in range(nr_of_ghost_layers, xs - nr_of_ghost_layers):
             if flag_field[x, y] & fluid_mask:
-                for dirIdx in range(1, num_directions):
+                for dirIdx in range(num_directions):
                     dx = stencil[dirIdx,0]
                     dy = stencil[dirIdx,1]
                     if flag_field[x + dx, y + dy] & boundary_mask:
@@ -38,25 +38,25 @@ def create_boundary_index_list_2d(object[IntegerType, ndim=2] flag_field,
 
 @cython.boundscheck(False) # turn off bounds-checking for entire function
 @cython.wraparound(False)  # turn off negative index wrapping for entire function
-def create_boundary_index_list_3d(object[IntegerType, ndim=3] flagField,
-                                  int nrOfGhostLayers, IntegerType boundaryMask, IntegerType fluidMask,
+def create_boundary_index_list_3d(object[IntegerType, ndim=3] flag_field,
+                                  int nr_of_ghost_layers, IntegerType boundary_mask, IntegerType fluid_mask,
                                   object[int, ndim=2] stencil):
     cdef int xs, ys, zs, x, y, z
     cdef int dirIdx, num_directions, dx, dy, dz
 
-    xs, ys, zs = flagField.shape
+    xs, ys, zs = flag_field.shape
     boundary_index_list = []
     num_directions = stencil.shape[0]
 
-    for z in range(nrOfGhostLayers, zs-nrOfGhostLayers):
-        for y in range(nrOfGhostLayers,ys-nrOfGhostLayers):
-            for x in range(nrOfGhostLayers,xs-nrOfGhostLayers):
-                if flagField[x, y, z] & fluidMask:
-                    for dirIdx in range(1, num_directions):
+    for z in range(nr_of_ghost_layers, zs - nr_of_ghost_layers):
+        for y in range(nr_of_ghost_layers, ys - nr_of_ghost_layers):
+            for x in range(nr_of_ghost_layers, xs - nr_of_ghost_layers):
+                if flag_field[x, y, z] & fluid_mask:
+                    for dirIdx in range(num_directions):
                         dx = stencil[dirIdx,0]
                         dy = stencil[dirIdx,1]
                         dz = stencil[dirIdx,2]
-                        if flagField[x + dx, y + dy, z + dz] & boundaryMask:
+                        if flag_field[x + dx, y + dy, z + dz] & boundary_mask:
                             boundary_index_list.append((x,y,z, dirIdx))
     return boundary_index_list
 
-- 
GitLab