From d638cc25aa61a4d1ca7a6bd5dd951ddcd23617de Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Wed, 21 Nov 2018 08:24:25 +0100
Subject: [PATCH] lbmpy: additional parameter symbolic_temporary_field

---
 creationfunctions.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/creationfunctions.py b/creationfunctions.py
index 913497b4..f94cbfa7 100644
--- a/creationfunctions.py
+++ b/creationfunctions.py
@@ -93,6 +93,8 @@ Field size information:
 - ``field_size=None``: create kernel for fixed field size
 - ``field_layout='c'``:   ``'c'`` or ``'numpy'`` for standard numpy layout, ``'reverse_numpy'`` or ``'f'`` for fortran
   layout, this does not apply when pdf_arr was given, then the same layout as pdf_arr is used
+- ``symbolic_field``: pystencils field for source (pdf field that is read)
+- ``symbolic_temporary_field``: pystencils field for temporary (pdf field that is written in stream, or stream-collide)
 
 
 CPU:
@@ -247,7 +249,10 @@ def create_lb_update_rule(collision_rule=None, optimization={}, **kwargs):
         src_field = Field.create_generic(params['field_name'], spatial_dimensions=collision_rule.method.dim,
                                          index_shape=(q,), layout=opt_params['field_layout'], dtype=field_data_type)
 
-    dst_field = src_field.new_field_with_different_name(params['temporary_field_name'])
+    if opt_params['symbolic_temporary_field'] is not None:
+        dst_field = opt_params['symbolic_temporary_field']
+    else:
+        dst_field = src_field.new_field_with_different_name(params['temporary_field_name'])
 
     if params['kernel_type'] == 'stream_pull_collide':
         accessor = StreamPullTwoFieldsAccessor
@@ -505,6 +510,7 @@ def update_with_default_parameters(params, opt_params=None, fail_on_unknown_para
         'field_size': None,
         'field_layout': 'fzyx',  # can be 'numpy' (='c'), 'reverse_numpy' (='f'), 'fzyx', 'zyxf'
         'symbolic_field': None,
+        'symbolic_temporary_field': None,
 
         'target': 'cpu',
         'openmp': False,
-- 
GitLab