From 37640743273231156da390b9310b2a63b5051c2f Mon Sep 17 00:00:00 2001 From: Michael Kuron <mkuron@icp.uni-stuttgart.de> Date: Tue, 21 Apr 2020 18:21:23 +0200 Subject: [PATCH] pystencils_walberla: boundary generation for inner_or_boundary=False --- python/lbmpy_walberla/boundary.py | 3 ++- python/pystencils_walberla/boundary.py | 6 ++++-- python/pystencils_walberla/templates/Boundary.tmpl.h | 6 +++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/python/lbmpy_walberla/boundary.py b/python/lbmpy_walberla/boundary.py index bea7a689a..1ca58b37a 100644 --- a/python/lbmpy_walberla/boundary.py +++ b/python/lbmpy_walberla/boundary.py @@ -39,7 +39,7 @@ def generate_boundary(generation_context, class_name, boundary_object, lb_method else: stencil = lb_method.stencil - stencil_info = [(i, ", ".join([str(e) for e in d])) for i, d in enumerate(stencil)] + stencil_info = [(i, d, ", ".join([str(e) for e in d])) for i, d in enumerate(stencil)] context = { 'class_name': boundary_object.name, @@ -50,6 +50,7 @@ def generate_boundary(generation_context, class_name, boundary_object, lb_method 'dim': lb_method.dim, 'target': target, 'namespace': 'lbm', + 'inner_or_boundary': boundary_object.inner_or_boundary } env = Environment(loader=PackageLoader('pystencils_walberla'), undefined=StrictUndefined) diff --git a/python/pystencils_walberla/boundary.py b/python/pystencils_walberla/boundary.py index 00346cfd6..a0086890b 100644 --- a/python/pystencils_walberla/boundary.py +++ b/python/pystencils_walberla/boundary.py @@ -39,7 +39,7 @@ def generate_staggered_boundary(generation_context, class_name, boundary_object, else: stencil = neighbor_stencil - stencil_info = [(i, ", ".join([str(e) for e in d])) for i, d in enumerate(stencil)] + stencil_info = [(i, d, ", ".join([str(e) for e in d])) for i, d in enumerate(stencil)] context = { 'class_name': boundary_object.name, @@ -50,6 +50,7 @@ def generate_staggered_boundary(generation_context, class_name, boundary_object, 'dim': dim, 'target': target, 'namespace': 'pystencils', + 'inner_or_boundary': boundary_object.inner_or_boundary } env = Environment(loader=PackageLoader('pystencils_walberla'), undefined=StrictUndefined) @@ -91,7 +92,7 @@ def generate_staggered_flux_boundary(generation_context, class_name, boundary_ob else: stencil = neighbor_stencil - stencil_info = [(i, ", ".join([str(e) for e in d])) for i, d in enumerate(stencil)] + stencil_info = [(i, d, ", ".join([str(e) for e in d])) for i, d in enumerate(stencil)] context = { 'class_name': boundary_object.name, @@ -102,6 +103,7 @@ def generate_staggered_flux_boundary(generation_context, class_name, boundary_ob 'dim': dim, 'target': target, 'namespace': 'pystencils', + 'inner_or_boundary': boundary_object.inner_or_boundary } env = Environment(loader=PackageLoader('pystencils_walberla'), undefined=StrictUndefined) diff --git a/python/pystencils_walberla/templates/Boundary.tmpl.h b/python/pystencils_walberla/templates/Boundary.tmpl.h index 97dabe87a..1c3d9c0e2 100644 --- a/python/pystencils_walberla/templates/Boundary.tmpl.h +++ b/python/pystencils_walberla/templates/Boundary.tmpl.h @@ -158,10 +158,14 @@ public: if( ! isFlagSet(it, domainFlag) ) continue; - {%- for dirIdx, offset in stencil_info %} + {%- for dirIdx, dirVec, offset in stencil_info %} if ( isFlagSet( it.neighbor({{offset}} {%if dim == 3%}, 0 {%endif %}), boundaryFlag ) ) { + {% if inner_or_boundary -%} auto element = {{StructName}}(it.x(), it.y(), {%if dim == 3%} it.z(), {%endif %} {{dirIdx}} ); + {% else -%} + auto element = {{StructName}}(it.x() + cell_idx_c({{dirVec[0]}}), it.y() + cell_idx_c({{dirVec[1]}}), {%if dim == 3%} it.z() + cell_idx_c({{dirVec[2]}}), {%endif %} {{dirIdx}} ); + {% endif -%} indexVectorAll.push_back( element ); if( inner.contains( it.x(), it.y(), it.z() ) ) indexVectorInner.push_back( element ); -- GitLab