Skip to content

Commit 8d00ecc

Browse files
Fix render output translation logic
1 parent 16cee37 commit 8d00ecc

File tree

3 files changed

+30
-16
lines changed

3 files changed

+30
-16
lines changed

flow360/component/simulation/outputs/outputs.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -702,12 +702,12 @@ class RenderOutput(_AnimationSettings):
702702
"""
703703

704704
name: Optional[str] = pd.Field("Render output", description="Name of the `IsosurfaceOutput`.")
705+
entities: Optional[EntityList[Surface, Slice]] = pd.Field(
706+
None, description="List of of :class:`~flow360.Surface` or `~flow360.Slice` entities."
707+
)
705708
isosurfaces: Optional[UniqueItemList[Isosurface]] = pd.Field(
706709
None, description="List of :class:`~flow360.Isosurface` entities."
707710
)
708-
surfaces: Optional[EntityList[Surface]] = pd.Field(
709-
None, description="List of of :class:`~flow360.Surface` entities."
710-
)
711711
output_fields: UniqueItemList[Union[CommonFieldNames, str]] = pd.Field(
712712
description="List of output variables. Including "
713713
":ref:`universal output variables<UniversalVariablesV2>` and :class:`UserDefinedField`."

flow360/component/simulation/translator/solver_translator.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,11 @@ def translate_isosurface_output(
576576
return translated_output
577577

578578

579-
def translate_render_output(output_params: list, injection_function):
579+
def translate_render_output(
580+
input_params: SimulationParams,
581+
output_params: list,
582+
injection_function
583+
):
580584
"""Translate render output settings."""
581585

582586
renders = get_all_entries_of_type(output_params, RenderOutput)
@@ -602,14 +606,23 @@ def translate_render_output(output_params: list, injection_function):
602606
translation_func=translate_output_fields,
603607
to_list=False,
604608
entity_injection_func=injection_function,
609+
entity_type_to_include=Isosurface,
605610
entity_list_attribute_name="isosurfaces",
611+
entity_injection_input_params=input_params,
606612
),
607613
"surfaces": translate_setting_and_apply_to_all_entities(
608614
[render],
609615
RenderOutput,
610616
translation_func=translate_output_fields,
611617
to_list=False,
612-
entity_list_attribute_name="surfaces",
618+
entity_type_to_include=Surface,
619+
),
620+
"slices": translate_setting_and_apply_to_all_entities(
621+
[render],
622+
RenderOutput,
623+
translation_func=translate_output_fields,
624+
to_list=False,
625+
entity_type_to_include=Slice,
613626
),
614627
"camera": remove_units_in_dict(camera),
615628
"lighting": remove_units_in_dict(lighting),
@@ -989,7 +1002,7 @@ def translate_output(input_params: SimulationParams, translated: dict):
9891002

9901003
##:: Step6: Get translated["renderOutput"]
9911004
if has_instance_in_list(outputs, RenderOutput):
992-
translated["renderOutput"] = translate_render_output(outputs, inject_isosurface_info)
1005+
translated["renderOutput"] = translate_render_output(input_params, outputs, inject_isosurface_info)
9931006

9941007
##:: Step7: Get translated["monitorOutput"]
9951008
probe_output = {}

flow360/component/simulation/translator/utils.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ def translate_setting_and_apply_to_all_entities(
287287
use_instance_name_as_key=False,
288288
use_sub_item_as_key=False,
289289
entity_type_to_include=None,
290+
entity_list_attribute_name="entities",
290291
**kwargs,
291292
):
292293
"""
@@ -369,23 +370,23 @@ def translate_setting_and_apply_to_all_entities(
369370
# pylint: disable=too-many-nested-blocks
370371
for obj in obj_list:
371372
if class_type and is_exact_instance(obj, class_type):
372-
373373
list_of_entities = []
374-
if "entities" in obj.__class__.model_fields:
375-
if obj.entities is None or (
376-
"stored_entities" in obj.entities.__class__.model_fields
377-
and obj.entities.stored_entities is None
374+
if entity_list_attribute_name in obj.__class__.model_fields:
375+
entity_list = getattr(obj, entity_list_attribute_name)
376+
if entity_list is None or (
377+
"stored_entities" in entity_list.__class__.model_fields
378+
and entity_list.stored_entities is None
378379
): # unique item list does not allow None "items" for now.
379380
continue
380-
if isinstance(obj.entities, EntityList):
381+
if isinstance(entity_list, EntityList):
381382
list_of_entities = (
382-
obj.entities.stored_entities
383+
entity_list.stored_entities
383384
if lump_list_of_entities is False
384-
else [obj.entities]
385+
else [entity_list]
385386
)
386-
elif isinstance(obj.entities, UniqueItemList):
387+
elif isinstance(entity_list, UniqueItemList):
387388
list_of_entities = (
388-
obj.entities.items if lump_list_of_entities is False else [obj.entities]
389+
entity_list.items if lump_list_of_entities is False else [entity_list]
389390
)
390391
elif "entity_pairs" in obj.__class__.model_fields:
391392
# Note: This is only used in Periodic BC and lump_list_of_entities is not relavant

0 commit comments

Comments
 (0)