From 41aaa1d7d9be78f001d5086b29502bf6e95c3ab9 Mon Sep 17 00:00:00 2001
From: Michael Kuron <mkuron@icp.uni-stuttgart.de>
Date: Tue, 21 Apr 2020 18:41:52 +0200
Subject: [PATCH] pystencils: re-allow use of arbitrary field names in sweeps
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Previously, anything that wasn’t velocity, src, src_tmp, pdfs, pdfs_tmp resulted in invalid code

This was a regression introduced in a16141524c58ab88386e2a0f8fdd7c63c5edd704
---
 python/pystencils_walberla/jinja_filters.py         | 4 ++--
 python/pystencils_walberla/templates/Sweep.tmpl.cpp | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/python/pystencils_walberla/jinja_filters.py b/python/pystencils_walberla/jinja_filters.py
index 003315448..ee79ef903 100644
--- a/python/pystencils_walberla/jinja_filters.py
+++ b/python/pystencils_walberla/jinja_filters.py
@@ -170,8 +170,8 @@ def generate_block_data_to_field_extraction(ctx, kernel_info, parameters_to_igno
     return result
 
 
-def generate_refs_for_kernel_parameters(kernel_info, prefix, parameters_to_ignore):
-    symbols = {p.field_name for p in kernel_info.parameters if p.is_field_pointer}
+def generate_refs_for_kernel_parameters(kernel_info, prefix, parameters_to_ignore=(), ignore_fields=False):
+    symbols = {p.field_name for p in kernel_info.parameters if p.is_field_pointer and not ignore_fields}
     symbols.update(p.symbol.name for p in kernel_info.parameters if not p.is_field_parameter)
     symbols.difference_update(parameters_to_ignore)
     return "\n".join("auto & %s = %s%s_;" % (s, prefix, s) for s in symbols)
diff --git a/python/pystencils_walberla/templates/Sweep.tmpl.cpp b/python/pystencils_walberla/templates/Sweep.tmpl.cpp
index ae15b4595..b3b12c6b3 100644
--- a/python/pystencils_walberla/templates/Sweep.tmpl.cpp
+++ b/python/pystencils_walberla/templates/Sweep.tmpl.cpp
@@ -58,7 +58,7 @@ namespace {{namespace}} {
 void {{class_name}}::operator()( IBlock * block{%if target is equalto 'gpu'%} , cudaStream_t stream{% endif %} )
 {
     {{kernel|generate_block_data_to_field_extraction|indent(4)}}
-    {{kernel|generate_refs_for_kernel_parameters(prefix='this->', parameters_to_ignore=['velocity', 'src', 'src_tmp', 'pdfs', 'pdfs_tmp'])|indent(4) }}
+    {{kernel|generate_refs_for_kernel_parameters(prefix='this->', ignore_fields=True)|indent(4) }}
     {{kernel|generate_call(stream='stream')|indent(4)}}
     {{kernel|generate_swaps|indent(4)}}
 }
@@ -78,7 +78,7 @@ void {{class_name}}::runOnCellInterval( const shared_ptr<StructuredBlockStorage>
         return;
 
     {{kernel|generate_block_data_to_field_extraction|indent(4)}}
-    {{kernel|generate_refs_for_kernel_parameters(prefix='this->', parameters_to_ignore=['velocity', 'src', 'src_tmp', 'pdfs', 'pdfs_tmp'])|indent(4) }}
+    {{kernel|generate_refs_for_kernel_parameters(prefix='this->', ignore_fields=True)|indent(4) }}
     {{kernel|generate_call(stream='stream', cell_interval='ci')|indent(4)}}
     {{kernel|generate_swaps|indent(4)}}
 }
-- 
GitLab