From 92a7f4cf4af1f540ca8786057592748e7ee7e6fa Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Tue, 28 Oct 2025 16:11:12 -0400 Subject: [PATCH 1/9] Added MeshSliceOutput to outputs.py --- .../component/simulation/outputs/outputs.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/flow360/component/simulation/outputs/outputs.py b/flow360/component/simulation/outputs/outputs.py index de1f80414..d8131db5a 100644 --- a/flow360/component/simulation/outputs/outputs.py +++ b/flow360/component/simulation/outputs/outputs.py @@ -484,6 +484,38 @@ class TimeAverageSliceOutput(SliceOutput): output_type: Literal["TimeAverageSliceOutput"] = pd.Field("TimeAverageSliceOutput", frozen=True) +class MeshSliceOutput(Flow360BaseModel): + """ + :class:`MeshSliceOutput` class for slice output settings. + + Example + ------- + + >>> fl.MeshSliceOutput( + ... slices=[ + ... fl.Slice( + ... name="Slice_1", + ... normal=(0, 1, 0), + ... origin=(0, 0.56, 0)*fl.u.m + ... ), + ... ], + ... output_format="paraview", + ... output_fields=["vorticity", "T"], + ... ) + + ==== + """ + + name: Optional[str] = pd.Field( + "Mesh slice output", description="Name of the `MeshSliceOutput`." + ) + entities: EntityList[Slice] = pd.Field( + alias="slices", + description="List of output :class:`~flow360.Slice` entities.", + ) + output_type: Literal["MeshSliceOutput"] = pd.Field("MeshSliceOutput", frozen=True) + + class IsosurfaceOutput(_AnimationAndFileFormatSettings): """ From e93b9fe1931364f91fc2e394d69d7cf17caf4bdb Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Wed, 29 Oct 2025 16:05:19 -0400 Subject: [PATCH 2/9] Implemented MeshSliceOutput --- flow360/__init__.py | 2 + .../simulation/meshing_param/params.py | 13 ++++++ .../simulation/meshing_param/volume_params.py | 34 ++++++++++++++ .../translator/volume_meshing_translator.py | 46 ++++++++++++++++++- 4 files changed, 94 insertions(+), 1 deletion(-) diff --git a/flow360/__init__.py b/flow360/__init__.py index 6397f308f..750b4b2c5 100644 --- a/flow360/__init__.py +++ b/flow360/__init__.py @@ -36,6 +36,7 @@ StructuredBoxRefinement, UniformRefinement, UserDefinedFarfield, + MeshSliceOutput, ) from flow360.component.simulation.models.material import ( Air, @@ -187,6 +188,7 @@ "Accounts", "Project", "u", + "MeshSliceOutput", "SimulationParams", "SI_unit_system", "imperial_unit_system", diff --git a/flow360/component/simulation/meshing_param/params.py b/flow360/component/simulation/meshing_param/params.py index 6c1ee3b8e..361012fde 100644 --- a/flow360/component/simulation/meshing_param/params.py +++ b/flow360/component/simulation/meshing_param/params.py @@ -23,6 +23,7 @@ StructuredBoxRefinement, UniformRefinement, UserDefinedFarfield, + MeshSliceOutput, ) from flow360.component.simulation.primitives import CustomVolume from flow360.component.simulation.unit_system import AngleType, LengthType @@ -60,6 +61,11 @@ pd.Field(discriminator="type"), ] +MeshOutputTypes = Annotated[ + Union[MeshSliceOutput,], + pd.Field(discriminator="mesh_output_type"), +] + class MeshingDefaults(Flow360BaseModel): """ @@ -292,6 +298,13 @@ class MeshingParams(Flow360BaseModel): default=None, description="Creation of new volume zones." ) + # Meshing outputs (for now, volume mesh slices) + # TODO: update the :ref: part? + outputs: Optional[List[MeshOutputTypes]] = pd.Field( + [], + description="Mesh output settings. See :ref:`Outputs ` for more details.", + ) + @pd.field_validator("volume_zones", mode="after") @classmethod def _check_volume_zones_has_farfied(cls, v): diff --git a/flow360/component/simulation/meshing_param/volume_params.py b/flow360/component/simulation/meshing_param/volume_params.py index 42894875f..2eeb75980 100644 --- a/flow360/component/simulation/meshing_param/volume_params.py +++ b/flow360/component/simulation/meshing_param/volume_params.py @@ -26,6 +26,8 @@ check_deleted_surface_in_entity_list, ) +from flow360.component.simulation.outputs.output_entities import Slice + class UniformRefinement(Flow360BaseModel): """ @@ -471,3 +473,35 @@ def symmetry_plane(self) -> GhostSurface: Warning: This should only be used when using GAI and beta mesher. """ return GhostSurface(name="symmetric") + + +class MeshSliceOutput(Flow360BaseModel): + """ + :class:`MeshSliceOutput` class for slice output settings. + + Example + ------- + + >>> fl.MeshSliceOutput( + ... slices=[ + ... fl.Slice( + ... name="Slice_1", + ... normal=(0, 1, 0), + ... origin=(0, 0.56, 0)*fl.u.m + ... ), + ... ], + ... output_format="paraview", + ... output_fields=["vorticity", "T"], + ... ) + + ==== + """ + + name: Optional[str] = pd.Field( + "Mesh slice output", description="Name of the `MeshSliceOutput`." + ) + entities: EntityList[Slice] = pd.Field( + alias="slices", + description="List of output :class:`~flow360.Slice` entities.", + ) + output_type: Literal["MeshSliceOutput"] = pd.Field("MeshSliceOutput", frozen=True) diff --git a/flow360/component/simulation/translator/volume_meshing_translator.py b/flow360/component/simulation/translator/volume_meshing_translator.py index b14dfd0a7..a672ea7cb 100644 --- a/flow360/component/simulation/translator/volume_meshing_translator.py +++ b/flow360/component/simulation/translator/volume_meshing_translator.py @@ -1,6 +1,6 @@ """Volume meshing parameter translator.""" -from typing import Union +from typing import Union, Type from flow360.component.simulation.meshing_param.face_params import ( BoundaryLayer, @@ -15,6 +15,7 @@ StructuredBoxRefinement, UniformRefinement, UserDefinedFarfield, + MeshSliceOutput, ) from flow360.component.simulation.primitives import ( AxisymmetricBody, @@ -28,6 +29,12 @@ get_global_setting_from_first_instance, preprocess_input, translate_setting_and_apply_to_all_entities, + has_instance_in_list, +) + +from flow360.component.simulation.translator.solver_translator import ( + inject_slice_info, + add_unused_output_settings_for_comparison, ) from flow360.component.simulation.utils import is_exact_instance from flow360.exceptions import Flow360TranslationError @@ -216,6 +223,29 @@ def _get_custom_volumes(volume_zones: list): return custom_volumes +def init_mesh_output_base(obj_list, class_type: Type): + """Initialize the common output attribute.""" + base = {} + return base + + +def translate_mesh_slice_output( + output_params: list, + output_class: Union[MeshSliceOutput], + injection_function, +): + """Translate slice or isosurface output settings.""" + translated_output = init_mesh_output_base(output_params, output_class) + translated_output["slices"] = translate_setting_and_apply_to_all_entities( + output_params, + output_class, + translation_func=lambda x: {}, + to_list=False, + entity_injection_func=injection_function, + ) + return translated_output + + @preprocess_input # pylint: disable=unused-argument,too-many-branches,too-many-statements def get_volume_meshing_json(input_params: SimulationParams, mesh_units): @@ -396,4 +426,18 @@ def get_volume_meshing_json(input_params: SimulationParams, mesh_units): if custom_volumes: translated["zones"] = custom_volumes + ##:: Step 7: Get meshing output fields + outputs = input_params.meshing.outputs + + mesh_slice_output_configs = [ + (MeshSliceOutput, "meshSliceOutput"), + ] + for output_class, output_key in mesh_slice_output_configs: + print(output_class) + print(output_key) + if has_instance_in_list(outputs, output_class): + slice_output = translate_mesh_slice_output(outputs, output_class, inject_slice_info) + if slice_output: + translated[output_key] = add_unused_output_settings_for_comparison(slice_output) + return translated From d992116a3307eb2c9bff9374498b11aee244d276 Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Wed, 29 Oct 2025 16:09:16 -0400 Subject: [PATCH 3/9] Isort linter --- flow360/__init__.py | 2 +- .../component/simulation/meshing_param/params.py | 2 +- .../simulation/meshing_param/volume_params.py | 3 +-- .../translator/volume_meshing_translator.py | 15 +++++++-------- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/flow360/__init__.py b/flow360/__init__.py index 750b4b2c5..d53d29061 100644 --- a/flow360/__init__.py +++ b/flow360/__init__.py @@ -31,12 +31,12 @@ from flow360.component.simulation.meshing_param.volume_params import ( AutomatedFarfield, AxisymmetricRefinement, + MeshSliceOutput, RotationCylinder, RotationVolume, StructuredBoxRefinement, UniformRefinement, UserDefinedFarfield, - MeshSliceOutput, ) from flow360.component.simulation.models.material import ( Air, diff --git a/flow360/component/simulation/meshing_param/params.py b/flow360/component/simulation/meshing_param/params.py index 361012fde..c0ca9a018 100644 --- a/flow360/component/simulation/meshing_param/params.py +++ b/flow360/component/simulation/meshing_param/params.py @@ -18,12 +18,12 @@ from flow360.component.simulation.meshing_param.volume_params import ( AutomatedFarfield, AxisymmetricRefinement, + MeshSliceOutput, RotationCylinder, RotationVolume, StructuredBoxRefinement, UniformRefinement, UserDefinedFarfield, - MeshSliceOutput, ) from flow360.component.simulation.primitives import CustomVolume from flow360.component.simulation.unit_system import AngleType, LengthType diff --git a/flow360/component/simulation/meshing_param/volume_params.py b/flow360/component/simulation/meshing_param/volume_params.py index 2eeb75980..23537c9fe 100644 --- a/flow360/component/simulation/meshing_param/volume_params.py +++ b/flow360/component/simulation/meshing_param/volume_params.py @@ -10,6 +10,7 @@ from flow360.component.simulation.framework.base_model import Flow360BaseModel from flow360.component.simulation.framework.entity_base import EntityList +from flow360.component.simulation.outputs.output_entities import Slice from flow360.component.simulation.primitives import ( AxisymmetricBody, Box, @@ -26,8 +27,6 @@ check_deleted_surface_in_entity_list, ) -from flow360.component.simulation.outputs.output_entities import Slice - class UniformRefinement(Flow360BaseModel): """ diff --git a/flow360/component/simulation/translator/volume_meshing_translator.py b/flow360/component/simulation/translator/volume_meshing_translator.py index a672ea7cb..ddb761b31 100644 --- a/flow360/component/simulation/translator/volume_meshing_translator.py +++ b/flow360/component/simulation/translator/volume_meshing_translator.py @@ -1,6 +1,6 @@ """Volume meshing parameter translator.""" -from typing import Union, Type +from typing import Type, Union from flow360.component.simulation.meshing_param.face_params import ( BoundaryLayer, @@ -10,12 +10,12 @@ AutomatedFarfield, AxisymmetricRefinement, AxisymmetricRefinementBase, + MeshSliceOutput, RotationCylinder, RotationVolume, StructuredBoxRefinement, UniformRefinement, UserDefinedFarfield, - MeshSliceOutput, ) from flow360.component.simulation.primitives import ( AxisymmetricBody, @@ -25,16 +25,15 @@ Surface, ) from flow360.component.simulation.simulation_params import SimulationParams +from flow360.component.simulation.translator.solver_translator import ( + add_unused_output_settings_for_comparison, + inject_slice_info, +) from flow360.component.simulation.translator.utils import ( get_global_setting_from_first_instance, + has_instance_in_list, preprocess_input, translate_setting_and_apply_to_all_entities, - has_instance_in_list, -) - -from flow360.component.simulation.translator.solver_translator import ( - inject_slice_info, - add_unused_output_settings_for_comparison, ) from flow360.component.simulation.utils import is_exact_instance from flow360.exceptions import Flow360TranslationError From cde8d9b178031f310d310f9312e5a25b553c7596 Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Wed, 29 Oct 2025 16:38:31 -0400 Subject: [PATCH 4/9] Misc cleanup --- flow360/component/simulation/framework/base_model.py | 1 + flow360/component/simulation/meshing_param/params.py | 3 +-- .../simulation/meshing_param/volume_params.py | 6 ++---- .../simulation/translator/volume_meshing_translator.py | 10 ++-------- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/flow360/component/simulation/framework/base_model.py b/flow360/component/simulation/framework/base_model.py index 46c34d835..fee4d74de 100644 --- a/flow360/component/simulation/framework/base_model.py +++ b/flow360/component/simulation/framework/base_model.py @@ -27,6 +27,7 @@ "type_name", "refinement_type", "output_type", + "mesh_output_type", "private_attribute_entity_type_name", ] diff --git a/flow360/component/simulation/meshing_param/params.py b/flow360/component/simulation/meshing_param/params.py index c0ca9a018..3de486197 100644 --- a/flow360/component/simulation/meshing_param/params.py +++ b/flow360/component/simulation/meshing_param/params.py @@ -299,10 +299,9 @@ class MeshingParams(Flow360BaseModel): ) # Meshing outputs (for now, volume mesh slices) - # TODO: update the :ref: part? outputs: Optional[List[MeshOutputTypes]] = pd.Field( [], - description="Mesh output settings. See :ref:`Outputs ` for more details.", + description="Mesh output settings.", ) @pd.field_validator("volume_zones", mode="after") diff --git a/flow360/component/simulation/meshing_param/volume_params.py b/flow360/component/simulation/meshing_param/volume_params.py index 23537c9fe..28769c3ed 100644 --- a/flow360/component/simulation/meshing_param/volume_params.py +++ b/flow360/component/simulation/meshing_param/volume_params.py @@ -476,7 +476,7 @@ def symmetry_plane(self) -> GhostSurface: class MeshSliceOutput(Flow360BaseModel): """ - :class:`MeshSliceOutput` class for slice output settings. + :class:`MeshSliceOutput` class for mesh slice output settings. Example ------- @@ -489,8 +489,6 @@ class MeshSliceOutput(Flow360BaseModel): ... origin=(0, 0.56, 0)*fl.u.m ... ), ... ], - ... output_format="paraview", - ... output_fields=["vorticity", "T"], ... ) ==== @@ -503,4 +501,4 @@ class MeshSliceOutput(Flow360BaseModel): alias="slices", description="List of output :class:`~flow360.Slice` entities.", ) - output_type: Literal["MeshSliceOutput"] = pd.Field("MeshSliceOutput", frozen=True) + mesh_output_type: Literal["MeshSliceOutput"] = pd.Field("MeshSliceOutput", frozen=True) diff --git a/flow360/component/simulation/translator/volume_meshing_translator.py b/flow360/component/simulation/translator/volume_meshing_translator.py index ddb761b31..48c2ddd17 100644 --- a/flow360/component/simulation/translator/volume_meshing_translator.py +++ b/flow360/component/simulation/translator/volume_meshing_translator.py @@ -1,6 +1,6 @@ """Volume meshing parameter translator.""" -from typing import Type, Union +from typing import Union from flow360.component.simulation.meshing_param.face_params import ( BoundaryLayer, @@ -222,19 +222,13 @@ def _get_custom_volumes(volume_zones: list): return custom_volumes -def init_mesh_output_base(obj_list, class_type: Type): - """Initialize the common output attribute.""" - base = {} - return base - - def translate_mesh_slice_output( output_params: list, output_class: Union[MeshSliceOutput], injection_function, ): """Translate slice or isosurface output settings.""" - translated_output = init_mesh_output_base(output_params, output_class) + translated_output = {} translated_output["slices"] = translate_setting_and_apply_to_all_entities( output_params, output_class, From f6dbef8bf52e58773d08b3e956deb2efee9771b3 Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Thu, 30 Oct 2025 13:33:02 -0400 Subject: [PATCH 5/9] Changes based on Ben code review --- .../simulation/framework/base_model.py | 1 - .../simulation/meshing_param/params.py | 6 ++-- .../simulation/meshing_param/volume_params.py | 2 +- .../component/simulation/outputs/outputs.py | 32 ------------------- .../translator/volume_meshing_translator.py | 5 +-- .../test_volume_meshing_translator.py | 31 ++++++++++++++++++ 6 files changed, 36 insertions(+), 41 deletions(-) diff --git a/flow360/component/simulation/framework/base_model.py b/flow360/component/simulation/framework/base_model.py index fee4d74de..46c34d835 100644 --- a/flow360/component/simulation/framework/base_model.py +++ b/flow360/component/simulation/framework/base_model.py @@ -27,7 +27,6 @@ "type_name", "refinement_type", "output_type", - "mesh_output_type", "private_attribute_entity_type_name", ] diff --git a/flow360/component/simulation/meshing_param/params.py b/flow360/component/simulation/meshing_param/params.py index 3de486197..9c5722165 100644 --- a/flow360/component/simulation/meshing_param/params.py +++ b/flow360/component/simulation/meshing_param/params.py @@ -63,7 +63,7 @@ MeshOutputTypes = Annotated[ Union[MeshSliceOutput,], - pd.Field(discriminator="mesh_output_type"), + pd.Field(discriminator="output_type"), ] @@ -299,8 +299,8 @@ class MeshingParams(Flow360BaseModel): ) # Meshing outputs (for now, volume mesh slices) - outputs: Optional[List[MeshOutputTypes]] = pd.Field( - [], + outputs: List[MeshOutputTypes] = pd.Field( + default=[], description="Mesh output settings.", ) diff --git a/flow360/component/simulation/meshing_param/volume_params.py b/flow360/component/simulation/meshing_param/volume_params.py index 28769c3ed..93c4c3dc9 100644 --- a/flow360/component/simulation/meshing_param/volume_params.py +++ b/flow360/component/simulation/meshing_param/volume_params.py @@ -501,4 +501,4 @@ class MeshSliceOutput(Flow360BaseModel): alias="slices", description="List of output :class:`~flow360.Slice` entities.", ) - mesh_output_type: Literal["MeshSliceOutput"] = pd.Field("MeshSliceOutput", frozen=True) + output_type: Literal["MeshSliceOutput"] = pd.Field("MeshSliceOutput", frozen=True) diff --git a/flow360/component/simulation/outputs/outputs.py b/flow360/component/simulation/outputs/outputs.py index d8131db5a..de1f80414 100644 --- a/flow360/component/simulation/outputs/outputs.py +++ b/flow360/component/simulation/outputs/outputs.py @@ -484,38 +484,6 @@ class TimeAverageSliceOutput(SliceOutput): output_type: Literal["TimeAverageSliceOutput"] = pd.Field("TimeAverageSliceOutput", frozen=True) -class MeshSliceOutput(Flow360BaseModel): - """ - :class:`MeshSliceOutput` class for slice output settings. - - Example - ------- - - >>> fl.MeshSliceOutput( - ... slices=[ - ... fl.Slice( - ... name="Slice_1", - ... normal=(0, 1, 0), - ... origin=(0, 0.56, 0)*fl.u.m - ... ), - ... ], - ... output_format="paraview", - ... output_fields=["vorticity", "T"], - ... ) - - ==== - """ - - name: Optional[str] = pd.Field( - "Mesh slice output", description="Name of the `MeshSliceOutput`." - ) - entities: EntityList[Slice] = pd.Field( - alias="slices", - description="List of output :class:`~flow360.Slice` entities.", - ) - output_type: Literal["MeshSliceOutput"] = pd.Field("MeshSliceOutput", frozen=True) - - class IsosurfaceOutput(_AnimationAndFileFormatSettings): """ diff --git a/flow360/component/simulation/translator/volume_meshing_translator.py b/flow360/component/simulation/translator/volume_meshing_translator.py index 48c2ddd17..01b0793a9 100644 --- a/flow360/component/simulation/translator/volume_meshing_translator.py +++ b/flow360/component/simulation/translator/volume_meshing_translator.py @@ -26,7 +26,6 @@ ) from flow360.component.simulation.simulation_params import SimulationParams from flow360.component.simulation.translator.solver_translator import ( - add_unused_output_settings_for_comparison, inject_slice_info, ) from flow360.component.simulation.translator.utils import ( @@ -426,11 +425,9 @@ def get_volume_meshing_json(input_params: SimulationParams, mesh_units): (MeshSliceOutput, "meshSliceOutput"), ] for output_class, output_key in mesh_slice_output_configs: - print(output_class) - print(output_key) if has_instance_in_list(outputs, output_class): slice_output = translate_mesh_slice_output(outputs, output_class, inject_slice_info) if slice_output: - translated[output_key] = add_unused_output_settings_for_comparison(slice_output) + translated[output_key] = slice_output return translated diff --git a/tests/simulation/translator/test_volume_meshing_translator.py b/tests/simulation/translator/test_volume_meshing_translator.py index 90a9ff0e0..dc37bb9bb 100644 --- a/tests/simulation/translator/test_volume_meshing_translator.py +++ b/tests/simulation/translator/test_volume_meshing_translator.py @@ -13,12 +13,14 @@ from flow360.component.simulation.meshing_param.volume_params import ( AutomatedFarfield, AxisymmetricRefinement, + MeshSliceOutput, RotationCylinder, RotationVolume, StructuredBoxRefinement, UniformRefinement, UserDefinedFarfield, ) +from flow360.component.simulation.outputs.outputs import Slice from flow360.component.simulation.primitives import ( AxisymmetricBody, Box, @@ -237,6 +239,23 @@ def get_test_param(): spacing_circumferential=20 * u.cm, ), ], + outputs=[ + MeshSliceOutput( + name="slice_output", + entities=[ + Slice( + name=f"test_slice_y_normal", + origin=(0.1, 0.2, 0.3), + normal=(0, 1, 0), + ), + Slice( + name=f"test_slice_z_normal", + origin=(0.6, 0.1, 0.4), + normal=(0, 0, 1), + ), + ], + ), + ], ), private_attribute_asset_cache=AssetCache(use_inhouse_mesher=True), ) @@ -406,6 +425,18 @@ def test_param_to_json(get_test_param, get_surface_mesh): "patches": ["interface1", "interface2"], } ], + "meshSliceOutput": { + "slices": { + "test_slice_y_normal": { + "sliceOrigin": [0.1, 0.2, 0.3], + "sliceNormal": [0.0, 1.0, 0.0], + }, + "test_slice_z_normal": { + "sliceOrigin": [0.6, 0.1, 0.4], + "sliceNormal": [0.0, 0.0, 1.0], + }, + } + }, } assert sorted(translated.items()) == sorted(ref_dict.items()) From 6dfecab14886e8cb20a1dd6ccdc6830423b12988 Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Thu, 30 Oct 2025 13:59:16 -0400 Subject: [PATCH 6/9] Remove Optional from MeshSliceOutput name field --- flow360/component/simulation/meshing_param/volume_params.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow360/component/simulation/meshing_param/volume_params.py b/flow360/component/simulation/meshing_param/volume_params.py index 4b13e2d55..885848348 100644 --- a/flow360/component/simulation/meshing_param/volume_params.py +++ b/flow360/component/simulation/meshing_param/volume_params.py @@ -494,7 +494,7 @@ class MeshSliceOutput(Flow360BaseModel): ==== """ - name: Optional[str] = pd.Field( + name: str = pd.Field( "Mesh slice output", description="Name of the `MeshSliceOutput`." ) entities: EntityList[Slice] = pd.Field( From 2239fe9ac407e29028fb9632f3b74f1f141999a9 Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Thu, 30 Oct 2025 14:13:47 -0400 Subject: [PATCH 7/9] Black linter --- flow360/component/simulation/meshing_param/volume_params.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/flow360/component/simulation/meshing_param/volume_params.py b/flow360/component/simulation/meshing_param/volume_params.py index 885848348..bfbc45b67 100644 --- a/flow360/component/simulation/meshing_param/volume_params.py +++ b/flow360/component/simulation/meshing_param/volume_params.py @@ -494,9 +494,7 @@ class MeshSliceOutput(Flow360BaseModel): ==== """ - name: str = pd.Field( - "Mesh slice output", description="Name of the `MeshSliceOutput`." - ) + name: str = pd.Field("Mesh slice output", description="Name of the `MeshSliceOutput`.") entities: EntityList[Slice] = pd.Field( alias="slices", description="List of output :class:`~flow360.Slice` entities.", From 2b6360cd8cd33b6b3b9e60997ea2751bf90c30a8 Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Thu, 30 Oct 2025 14:24:47 -0400 Subject: [PATCH 8/9] Isort 5.13.2 --- .../simulation/translator/volume_meshing_translator.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/flow360/component/simulation/translator/volume_meshing_translator.py b/flow360/component/simulation/translator/volume_meshing_translator.py index fe696a350..ed1c4995e 100644 --- a/flow360/component/simulation/translator/volume_meshing_translator.py +++ b/flow360/component/simulation/translator/volume_meshing_translator.py @@ -25,9 +25,7 @@ Surface, ) from flow360.component.simulation.simulation_params import SimulationParams -from flow360.component.simulation.translator.solver_translator import ( - inject_slice_info, -) +from flow360.component.simulation.translator.solver_translator import inject_slice_info from flow360.component.simulation.translator.utils import ( get_global_setting_from_first_instance, has_instance_in_list, From 7d17ecac02d1a9ba536b6b99d1021ccce3f4ba5c Mon Sep 17 00:00:00 2001 From: Shreyas Ashok Date: Thu, 30 Oct 2025 15:22:20 -0400 Subject: [PATCH 9/9] Updated service_init_geometry and service_init_surface_mesh JSONs to contain empty outputs field in meshing category --- tests/ref/simulation/service_init_geometry.json | 1 + tests/ref/simulation/service_init_surface_mesh.json | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/ref/simulation/service_init_geometry.json b/tests/ref/simulation/service_init_geometry.json index c653945ac..b34037c8c 100644 --- a/tests/ref/simulation/service_init_geometry.json +++ b/tests/ref/simulation/service_init_geometry.json @@ -22,6 +22,7 @@ "units": "m" } }, + "outputs": [], "refinements": [], "volume_zones": [ { diff --git a/tests/ref/simulation/service_init_surface_mesh.json b/tests/ref/simulation/service_init_surface_mesh.json index c72f1c71b..b98a14e14 100644 --- a/tests/ref/simulation/service_init_surface_mesh.json +++ b/tests/ref/simulation/service_init_surface_mesh.json @@ -22,6 +22,7 @@ "units": "m" } }, + "outputs": [], "refinements": [], "volume_zones": [ {