Skip to content
Snippets Groups Projects
Commit ead8a376 authored by Helen Schottenhamml's avatar Helen Schottenhamml
Browse files

Merge branch 'holzer-master-patch-a261' into 'master'

[Fix] Usage of field data in generated BC

See merge request walberla/walberla!664
parents 702f5291 47e6bd94
Branches
No related merge requests found
......@@ -46,7 +46,7 @@ class {{class_name}}
{
{% for object_name, boundary_class, kernel, additional_data_handler in zip(object_names, boundary_classes, kernel_list, additional_data_handlers) -%}
{{object_name}} = std::make_shared< {{boundary_class}} >({{- ["blocks", "pdfsID", [kernel|generate_function_collection_call(['indexVector', 'indexVectorSize', 'pdfs', 'timestep', 'gpuStream'])], additional_data_handler.constructor_argument_name] | type_identifier_list -}});
{{object_name}} = std::make_shared< {{boundary_class}} >({{- ["blocks", "pdfsID", [kernel|generate_function_collection_call(['indexVector', 'indexVectorSize', 'pdfs', 'timestep', 'gpuStream'], use_field_ids=True)], additional_data_handler.constructor_argument_name] | type_identifier_list -}});
{% endfor %}
{% for object_name, flag_uid in zip(object_names, flag_uids) -%}
......
......@@ -378,21 +378,40 @@ def generate_call(ctx, kernel, ghost_layers_to_include=0, cell_interval=None, st
@jinja2_context_decorator
def generate_function_collection_call(ctx, kernel_info, parameters_to_ignore=(), cell_interval=None, ghost_layers=None):
def generate_function_collection_call(ctx, kernel, parameters_to_ignore=(),
cell_interval=None, ghost_layers=None, use_field_ids=False):
"""Generates the function call to a pystencils kernel. It can be understood as a lightweight version of
`generate_call`. Thus, it will only generate the parameters needed to call the kernel as a list of strings.
Args:
ctx: code generation context
kernel: pystencils kernel
parameters_to_ignore: In some cases not all parameters need to be printed. This is especially the case when
fixed parameters exist that are hardcoded in the jinja template.
cell_interval: Defines the name (string) of a walberla CellInterval object in scope.
ghost_layers: Defines the name (string) of a variable to define the number of used ghost_layers.
use_field_ids: If set to true field names will be printed with the suffix `ID_`, to indicated that
a BlockDataID is passed.
"""
target = translate_target(ctx['target'])
is_gpu = target == Target.GPU
parameters = []
for param in kernel_info.parameters:
for param in kernel.parameters:
if param.is_field_pointer and param.field_name not in parameters_to_ignore:
parameters.append(param.field_name)
if use_field_ids:
parameters.append(f"{param.field_name}ID_")
else:
parameters.append(param.field_name)
for param in kernel_info.parameters:
for param in kernel.parameters:
if not param.is_field_parameter and param.symbol.name not in parameters_to_ignore:
parameters.append(param.symbol.name)
# TODO due to backward compatibility with high level interface spec
for parameter in kernel_info.kernel_selection_tree.get_selection_parameter_list():
for parameter in kernel.kernel_selection_tree.get_selection_parameter_list():
if parameter.name not in parameters_to_ignore:
parameters.append(parameter.name)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment