From 3a6764d94dd52797b5fd49c015a97db4f52f0365 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Thu, 18 Aug 2022 22:03:02 +0530 Subject: [PATCH 01/12] Updated setup for compatibility with ansys-api-fluent v0.3.0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d3e3167e435..831eb8b06ae 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ shutil.copy2(_README_FILE, _DOCS_FILE) install_requires = [ - "ansys-api-fluent~=0.2", + "ansys-api-fluent~=0.3", "ansys-platform-instancemanagement~=1.0", "grpcio>=1.30.0", "numpy>=1.21.5", From b6f7aae0c0b62cbe028dfe899ab074f7166abd25 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Thu, 18 Aug 2022 22:04:03 +0530 Subject: [PATCH 02/12] Activated/uncommented parts of code --- .../fluent/core/services/datamodel_se.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/ansys/fluent/core/services/datamodel_se.py b/src/ansys/fluent/core/services/datamodel_se.py index 21d00cdbdc1..760c3b5e7a0 100644 --- a/src/ansys/fluent/core/services/datamodel_se.py +++ b/src/ansys/fluent/core/services/datamodel_se.py @@ -108,8 +108,6 @@ def execute_command( ) -> DataModelProtoModule.ExecuteCommandResponse: return self.__stub.executeCommand(request, metadata=self.__metadata) - # pending the proto changes - """ @catch_grpc_error def create_command_arguments( self, request: DataModelProtoModule.CreateCommandArgumentsRequest @@ -121,7 +119,6 @@ def delete_command_arguments( self, request: DataModelProtoModule.DeleteCommandArgumentsRequest ) -> DataModelProtoModule.DeleteCommandArgumentsResponse: return self.__stub.deleteCommandArguments(request, metadata=self.__metadata) - """ @catch_grpc_error def get_specs( @@ -362,16 +359,12 @@ def rename(self, new_name: str) -> None: ) def create_command_arguments(self, command): - pass - # pending the proto changes - """ request = DataModelProtoModule.CreateCommandArgumentsRequest() request.rules = self.rules request.path = _convert_path_to_se_path(self.path) request.command = command response = self.service.create_command_arguments(request) return response.commandid - """ class PyParameter(PyBasicStateContainer): @@ -640,26 +633,18 @@ def help(self) -> None: print(help_string) def _create_command_arguments(self): - pass - # pending the proto changes - """ request = DataModelProtoModule.CreateCommandArgumentsRequest() request.rules = self.rules request.path = _convert_path_to_se_path(self.path) request.command = self.command response = self.service.create_command_arguments(request) return response.commandid - """ def new(self): - # pending the proto changes - pass - """ id = self._create_command_arguments() return PyCommandArguments( self.service, self.rules, self.command, self.path.copy(), id ) - """ class PyCommandArgumentsSubItem(PyCallableStateObject): @@ -702,9 +687,6 @@ def __init__( self.path.append((command, id)) def __del__(self): - # pending the proto changes - pass - """ request = DataModelProtoModule.DeleteCommandArgumentsRequest() request.rules = self.rules request.path = _convert_path_to_se_path(self.path[:-1]) @@ -715,7 +697,6 @@ def __del__(self): except ValueError: # "Cannot invoke RPC on closed channel!" pass - """ def __getattr__(self, attr): return PyCommandArgumentsSubItem(self, attr) From 3e6a25bac42ed1c78dd2ab5ad0cf888e55df35a6 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Thu, 18 Aug 2022 22:05:16 +0530 Subject: [PATCH 03/12] Added a test case to test the above change - skipped in CI --- tests/test_meshing_workflow.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/tests/test_meshing_workflow.py b/tests/test_meshing_workflow.py index 9fdfce0c953..6d341ddcb9a 100644 --- a/tests/test_meshing_workflow.py +++ b/tests/test_meshing_workflow.py @@ -6,7 +6,9 @@ """ from functools import partial +import os +import pytest from util.meshing_workflow import ( # noqa: F401; model_object_throws_on_invalid_arg, assign_task_arguments, execute_task_with_pre_and_postcondition_checks, @@ -16,12 +18,13 @@ shared_watertight_workflow_session, ) +import ansys.fluent.core as pf + def test_mixing_elbow_meshing_workflow( shared_watertight_workflow_session, mixing_elbow_geometry, ): - meshing_session = shared_watertight_workflow_session workflow = meshing_session.workflow @@ -180,3 +183,29 @@ def test_meshing_workflow_raises_exception_on_invalid_key_in_task_args_2( else: assert False """ + + +@pytest.mark.skip( + reason="enable test after completely shifting to a stable release of R23.1" +) +def test_command_args_datamodel_se(): + # Remove the below code after shifting to 23.1 + ##### + session_old = pf.launch_fluent(mode="meshing") + w = session_old.workflow + w.InitializeWorkflow(WorkflowType="Watertight Geometry") + igt = w.task("Import Geometry") + with pytest.raises(RuntimeError): + igt.CommandArguments.CadImportOptions() + + # Set the most recent fluent build path in the below environment variable + os.environ["PYFLUENT_FLUENT_ROOT"] = r"C:\ANSYSDev\ANSYSDev\vNNN\fluent" + # ----------------------------------------------------------------------- + + session_new = pf.launch_fluent(mode="meshing") + w = session_new.workflow + w.InitializeWorkflow(WorkflowType="Watertight Geometry") + igt = w.task("Import Geometry") + assert igt.CommandArguments.CadImportOptions() + assert igt.CommandArguments.CadImportOptions.OneZonePer() + assert igt.CommandArguments.CadImportOptions.OneZonePer.getAttribValue("default") From e04f9e10ac70a7d792f2a97c34b7f75f55a082b4 Mon Sep 17 00:00:00 2001 From: Mainak Kundu Date: Fri, 19 Aug 2022 12:18:58 +0530 Subject: [PATCH 04/12] Fix tuigen issues --- src/ansys/fluent/core/launcher/fluent_container.py | 3 ++- src/ansys/fluent/core/services/datamodel_tui.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ansys/fluent/core/launcher/fluent_container.py b/src/ansys/fluent/core/launcher/fluent_container.py index 4dc01eeaf4e..fb3cae52c43 100644 --- a/src/ansys/fluent/core/launcher/fluent_container.py +++ b/src/ansys/fluent/core/launcher/fluent_container.py @@ -38,6 +38,7 @@ def start_fluent_container(mounted_from: str, mounted_to: str, args: List[str]) license_server = os.environ["ANSYSLMD_LICENSE_FILE"] port = _get_free_port() container_sifile = mounted_to + "/" + Path(sifile).name + image_tag = os.getenv("FLUENT_IMAGE_TAG", "latest") try: subprocess.run( @@ -56,7 +57,7 @@ def start_fluent_container(mounted_from: str, mounted_to: str, args: List[str]) f"REMOTING_PORTS={port}/portspan=2", "-e", "FLUENT_LAUNCHED_FROM_PYFLUENT=1", - "ghcr.io/pyansys/pyfluent", + f"ghcr.io/pyansys/pyfluent:{image_tag}", "-gu", f"-sifile={container_sifile}", ] diff --git a/src/ansys/fluent/core/services/datamodel_tui.py b/src/ansys/fluent/core/services/datamodel_tui.py index 50640ac66ec..82a031b89cd 100644 --- a/src/ansys/fluent/core/services/datamodel_tui.py +++ b/src/ansys/fluent/core/services/datamodel_tui.py @@ -210,12 +210,12 @@ def get_static_info(self) -> Dict[str, Any]: DataModelProtoModule.StaticInfo static info """ - if hasattr(DataModelProtoModule, "GetStaticInfoRequest"): + try: request = DataModelProtoModule.GetStaticInfoRequest() request.path = self._path response = self._service.get_static_info(request) return MessageToDict(response.info, including_default_value_fields=True) - else: + except RuntimeError: return _get_static_info_at_level(self) From 1e62a19ac7420134c12e88101e515266ede29f90 Mon Sep 17 00:00:00 2001 From: Mainak Kundu Date: Fri, 19 Aug 2022 12:30:51 +0530 Subject: [PATCH 05/12] Disable fail-fast --- .github/workflows/ci.yml | 2 ++ .github/workflows/nightly-doc-build.yml | 1 + 2 files changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5928e8f537d..f5d092e4f84 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,7 @@ jobs: name: Smoke Tests runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [windows-latest, ubuntu-latest] python-version: ['3.7', '3.8', '3.9', '3.10'] @@ -234,6 +235,7 @@ jobs: needs: test-import runs-on: ubuntu-latest strategy: + fail-fast: false matrix: image-tag: [v22.2.0, v23.1.0] diff --git a/.github/workflows/nightly-doc-build.yml b/.github/workflows/nightly-doc-build.yml index f1c1afe112e..2e4697735bb 100644 --- a/.github/workflows/nightly-doc-build.yml +++ b/.github/workflows/nightly-doc-build.yml @@ -9,6 +9,7 @@ jobs: nightly_docs_build: runs-on: [self-hosted, pyfluent] strategy: + fail-fast: false matrix: image-tag: [v22.2.0, v23.1.0] From e6dfce12ece330fa32258ef4d2c6273e8d0e3bdc Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Fri, 19 Aug 2022 15:34:54 +0530 Subject: [PATCH 06/12] user_creatable settings object - True - 22.2 --- src/ansys/fluent/core/services/datamodel_se.py | 16 +++++++++++----- src/ansys/fluent/core/solver/flobject.py | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/ansys/fluent/core/services/datamodel_se.py b/src/ansys/fluent/core/services/datamodel_se.py index 760c3b5e7a0..404a220bddd 100644 --- a/src/ansys/fluent/core/services/datamodel_se.py +++ b/src/ansys/fluent/core/services/datamodel_se.py @@ -1,8 +1,8 @@ """Wrappers over StateEngine based datamodel gRPC service of Fluent.""" - from enum import Enum import itertools from typing import Any, Dict, Iterator, List, Tuple +import warnings import grpc @@ -641,10 +641,16 @@ def _create_command_arguments(self): return response.commandid def new(self): - id = self._create_command_arguments() - return PyCommandArguments( - self.service, self.rules, self.command, self.path.copy(), id - ) + try: + id = self._create_command_arguments() + return PyCommandArguments( + self.service, self.rules, self.command, self.path.copy(), id + ) + except RuntimeError: + warnings.warn( + "Create command arguments object is available from 23.1 onwards" + ) + pass class PyCommandArgumentsSubItem(PyCallableStateObject): diff --git a/src/ansys/fluent/core/solver/flobject.py b/src/ansys/fluent/core/solver/flobject.py index 376ae2360df..82bc1850949 100644 --- a/src/ansys/fluent/core/solver/flobject.py +++ b/src/ansys/fluent/core/solver/flobject.py @@ -851,7 +851,7 @@ def get_cls(name, info, parent=None): dct["__doc__"] = f"'{pname.strip('_')}' child." include_child_named_objects = info.get("include_child_named_objects", False) - user_creatable = info.get("user_creatable", False) + user_creatable = info.get("user_creatable", True) bases = (base,) if include_child_named_objects: From 5c52af9a0bbd4e1ed5b88b4bf30f3c03dd5610c7 Mon Sep 17 00:00:00 2001 From: Sean Pearson <93727996+seanpearsonuk@users.noreply.github.com> Date: Fri, 19 Aug 2022 22:15:49 +0100 Subject: [PATCH 07/12] fix tests (#739) * fix tests * fix tests * fix tests --- tests/test_solvermode/test_boundaries.py | 68 ++++++++++++------------ tests/test_solvermode/test_materials.py | 5 +- tests/util/solver.py | 38 +++++++++++++ 3 files changed, 75 insertions(+), 36 deletions(-) diff --git a/tests/test_solvermode/test_boundaries.py b/tests/test_solvermode/test_boundaries.py index 8c429210ad0..7dffa1bcfe7 100644 --- a/tests/test_solvermode/test_boundaries.py +++ b/tests/test_solvermode/test_boundaries.py @@ -4,6 +4,8 @@ import pytest from util.fixture_fluent import get_name_info +from util.solver import SettingsValDict as D +from util.solver import assign_settings_value_from_value_dict as assign_dict_val @pytest.mark.integration @@ -11,63 +13,61 @@ def test_boundaries_elbow(load_mixing_elbow_mesh): solver_session = load_mixing_elbow_mesh solver_session.setup.models.energy.enabled = True - assert solver_session.setup.boundary_conditions.velocity_inlet[ - "cold-inlet" - ].vmag() == {"option": "constant or expression", "constant": 0} - solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"].vmag = { - "option": "constant or expression", - "constant": 0.4, - } - assert solver_session.setup.boundary_conditions.velocity_inlet[ - "cold-inlet" - ].vmag() == {"option": "constant or expression", "constant": 0.4} + assert ( + D(0) + == solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"].vmag() + ) + assign_dict_val( + solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"].vmag, 0.4 + ) + assert ( + D(0.4) + == solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"].vmag() + ) solver_session.setup.boundary_conditions.velocity_inlet[ "cold-inlet" ].ke_spec = "Intensity and Hydraulic Diameter" solver_session.setup.boundary_conditions.velocity_inlet[ "cold-inlet" - ].turb_intensity = 5 + ].turb_intensity = 0.05 solver_session.setup.boundary_conditions.velocity_inlet[ "cold-inlet" ].turb_hydraulic_diam = "4 [in]" - solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"].t = { - "option": "constant or expression", - "constant": 293.15, - } - assert solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"]() == { + assign_dict_val( + solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"].t, 293.15 + ) + assert { "velocity_spec": "Magnitude, Normal to Boundary", "frame_of_reference": "Absolute", - "vmag": {"option": "constant or expression", "constant": 0.4}, - "p_sup": {"option": "constant or expression", "constant": 0}, - "t": {"option": "constant or expression", "constant": 293.15}, + "vmag": D(0.4), + "p_sup": D(0), + "t": D(293.15), "ke_spec": "Intensity and Hydraulic Diameter", - "turb_intensity": 5, + "turb_intensity": 0.05, "turb_hydraulic_diam": {"constant": 1, "expression": "4 [in]"}, - } - solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"].vmag = { - "option": "constant or expression", - "constant": 1.2, - } + } == solver_session.setup.boundary_conditions.velocity_inlet["cold-inlet"]() + assign_dict_val( + solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"].vmag, 1.2 + ) solver_session.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].ke_spec = "Intensity and Hydraulic Diameter" solver_session.setup.boundary_conditions.velocity_inlet[ "hot-inlet" ].turb_hydraulic_diam = "1 [in]" - solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"].t = { - "option": "constant or expression", - "constant": 313.15, - } - assert solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"]() == { + assign_dict_val( + solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"].t, 313.15 + ) + assert { "velocity_spec": "Magnitude, Normal to Boundary", "frame_of_reference": "Absolute", - "vmag": {"option": "constant or expression", "constant": 1.2}, - "p_sup": {"option": "constant or expression", "constant": 0}, - "t": {"option": "constant or expression", "constant": 313.15}, + "vmag": D(1.2), + "p_sup": D(0), + "t": D(313.15), "ke_spec": "Intensity and Hydraulic Diameter", "turb_intensity": 0.05, "turb_hydraulic_diam": {"expression": "1 [in]", "constant": 1}, - } + } == solver_session.setup.boundary_conditions.velocity_inlet["hot-inlet"]() solver_session.setup.boundary_conditions.pressure_outlet[ "outlet" ].turb_viscosity_ratio = 4 diff --git a/tests/test_solvermode/test_materials.py b/tests/test_solvermode/test_materials.py index 8d2d173acd7..94fe0ec990f 100644 --- a/tests/test_solvermode/test_materials.py +++ b/tests/test_solvermode/test_materials.py @@ -1,4 +1,5 @@ import pytest +from util.solver import copy_database_material @pytest.mark.integration @@ -6,8 +7,8 @@ @pytest.mark.setup def test_solver_material(load_mixing_elbow_mesh): solver_session = load_mixing_elbow_mesh - solver_session.setup.materials.copy_database_material_by_name( - type="fluid", name="water-liquid" + copy_database_material( + materials=solver_session.setup.materials, type="fluid", name="water-liquid" ) assert ( "water-liquid" diff --git a/tests/util/solver.py b/tests/util/solver.py index b205135f96d..bd9e21b445c 100644 --- a/tests/util/solver.py +++ b/tests/util/solver.py @@ -7,3 +7,41 @@ def check_report_definition_result( ][0] == expected_result ) + + +def assign_settings_value_from_value_dict(setting, value): + try: + setting.set_state({"option": "value", "value": value}) + except RuntimeError: + setting.set_state({"option": "constant or expression", "constant": value}) + + +def settings_value_from_value_dict(dict_value) -> bool: + if "option" in dict_value: + option = dict_value["option"] + key = None + if option == "value": + key = "value" + elif option == "constant or expression": + key = "constant" + if key: + return dict_value[key] + + +def assert_settings_values_equal(left, right): + assert settings_value_from_value_dict(left) == right + + +class SettingsValDict: + def __init__(self, val): + self._val = val + + def __eq__(self, other): + return settings_value_from_value_dict(other) == self._val + + +def copy_database_material(materials, type, name): + try: + materials.database.copy_by_name(type=type, name=name) + except AttributeError: + materials.copy_database_material_by_name(type=type, name=name) From ce672278d606e98ac99c0af6caf10a801e3647d3 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Mon, 22 Aug 2022 15:12:50 +0530 Subject: [PATCH 08/12] Skip tests for 23.1 - trial_01 --- tests/test_optislang/test_optislang_integration.py | 8 +++++--- tests/test_solvermode/test_calculationactivities.py | 12 +++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/tests/test_optislang/test_optislang_integration.py b/tests/test_optislang/test_optislang_integration.py index 72ab45847ef..18e1bb1ba5e 100644 --- a/tests/test_optislang/test_optislang_integration.py +++ b/tests/test_optislang/test_optislang_integration.py @@ -48,9 +48,11 @@ def test_simple_solve(load_mixing_elbow_param_case_dat): # Step 4: Set a variation on these input parameters # variations/designs are generated by optiSLang based on # algorithm selected - solver_session.tui.define.parameters.input_parameters.edit( - "inlet2_temp", "inlet2_temp", 600 - ) + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(solver_session.get_fluent_version()[:-2]) < 23.0: + solver_session.tui.define.parameters.input_parameters.edit( + "inlet2_temp", "inlet2_temp", 600 + ) solver_session.tui.file.write_case("design_elbow_param.cas.h5") # Step 5: Solve diff --git a/tests/test_solvermode/test_calculationactivities.py b/tests/test_solvermode/test_calculationactivities.py index 35fba2101d5..a2a9801447a 100644 --- a/tests/test_solvermode/test_calculationactivities.py +++ b/tests/test_solvermode/test_calculationactivities.py @@ -9,11 +9,13 @@ def test_solver_calculation(load_mixing_elbow_mesh): solver_session.scheme_eval.scheme_eval("(client-get-var 'residuals/plot?)") == True ) - solver_session.tui.solve.monitors.residual.plot("no") - assert ( - solver_session.scheme_eval.scheme_eval("(client-get-var 'residuals/plot?)") - == False - ) + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(solver_session.get_fluent_version()[:-2]) < 23.0: + solver_session.tui.solve.monitors.residual.plot("no") + assert ( + solver_session.scheme_eval.scheme_eval("(client-get-var 'residuals/plot?)") + == False + ) assert solver_session.scheme_eval.scheme_eval("(data-valid?)") == False solver_session.solution.initialization.hybrid_initialize() assert solver_session.scheme_eval.scheme_eval("(data-valid?)") == True From 714ddfed3add29beec4d631deb3f7bbb7b2c125f Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Mon, 22 Aug 2022 16:15:43 +0530 Subject: [PATCH 09/12] Added get_fluent_version() in session.py --- src/ansys/fluent/core/session.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ansys/fluent/core/session.py b/src/ansys/fluent/core/session.py index db412932414..a3c8049ea95 100644 --- a/src/ansys/fluent/core/session.py +++ b/src/ansys/fluent/core/session.py @@ -126,6 +126,12 @@ def exit(self) -> None: """Close the Fluent connection and exit Fluent.""" self.fluent_connection.exit() + def get_fluent_version(self): + """Gets and returns the fluent version.""" + return ".".join( + map(str, self.fluent_connection.scheme_eval.scheme_eval("(cx-version)")) + ) + def __enter__(self): """Close the Fluent connection and exit Fluent.""" return self From 25ee6ca79cafe390903395f420119de8eb79cfee Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Mon, 22 Aug 2022 16:49:34 +0530 Subject: [PATCH 10/12] fix tests in 23.1 - set2 --- tests/test_cad_to_post_ftm.py | 4 +++- tests/test_cad_to_post_wtm.py | 4 +++- tests/test_meshing_workflow.py | 4 +++- tests/test_optislang/test_optislang_integration.py | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/test_cad_to_post_ftm.py b/tests/test_cad_to_post_ftm.py index d6c94971bb0..a1a719b207b 100644 --- a/tests/test_cad_to_post_ftm.py +++ b/tests/test_cad_to_post_ftm.py @@ -430,7 +430,9 @@ def test_exhaust_system(new_fault_tolerant_workflow_session, exhaust_system_geom ############################################################################### # Check the mesh in Meshing mode - meshing_session.tui.mesh.check_mesh() + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(meshing_session.get_fluent_version()[:-2]) < 23.0: + meshing_session.tui.mesh.check_mesh() ############################################################################### # Switch to Solution mode diff --git a/tests/test_cad_to_post_wtm.py b/tests/test_cad_to_post_wtm.py index 5ceeabf537f..1b968c78bde 100644 --- a/tests/test_cad_to_post_wtm.py +++ b/tests/test_cad_to_post_wtm.py @@ -125,7 +125,9 @@ def test_mixing_elbow(new_watertight_workflow_session, mixing_elbow_geometry): ############################################################################### # Check the mesh in Meshing mode - meshing_session.tui.mesh.check_mesh() + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(meshing_session.get_fluent_version()[:-2]) < 23.0: + meshing_session.tui.mesh.check_mesh() ############################################################################### # Switch to Solution mode diff --git a/tests/test_meshing_workflow.py b/tests/test_meshing_workflow.py index 6d341ddcb9a..6b93d8eac9f 100644 --- a/tests/test_meshing_workflow.py +++ b/tests/test_meshing_workflow.py @@ -120,7 +120,9 @@ def test_mixing_elbow_meshing_workflow( ############################################################################### # Check the mesh in Meshing mode - meshing_session.tui.mesh.check_mesh() + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(meshing_session.get_fluent_version()[:-2]) < 23.0: + meshing_session.tui.mesh.check_mesh() def test_meshing_workflow_raises_exception_on_invalid_task_name( diff --git a/tests/test_optislang/test_optislang_integration.py b/tests/test_optislang/test_optislang_integration.py index 18e1bb1ba5e..fde1c85f385 100644 --- a/tests/test_optislang/test_optislang_integration.py +++ b/tests/test_optislang/test_optislang_integration.py @@ -53,7 +53,7 @@ def test_simple_solve(load_mixing_elbow_param_case_dat): solver_session.tui.define.parameters.input_parameters.edit( "inlet2_temp", "inlet2_temp", 600 ) - solver_session.tui.file.write_case("design_elbow_param.cas.h5") + solver_session.tui.file.write_case("design_elbow_param.cas.h5") # Step 5: Solve solver_session.tui.solve.initialize.initialize_flow() From 6fb14e2eb276704db5459d49bbe250ec33ac3b61 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Mon, 22 Aug 2022 17:35:27 +0530 Subject: [PATCH 11/12] fix tests in 23.1 - set3 --- tests/test_cad_to_post_ftm.py | 34 ++--- tests/test_cad_to_post_wtm.py | 134 +++++++++--------- .../test_optislang_integration.py | 4 +- 3 files changed, 88 insertions(+), 84 deletions(-) diff --git a/tests/test_cad_to_post_ftm.py b/tests/test_cad_to_post_ftm.py index a1a719b207b..16d2455ed61 100644 --- a/tests/test_cad_to_post_ftm.py +++ b/tests/test_cad_to_post_ftm.py @@ -453,22 +453,24 @@ def test_exhaust_system(new_fault_tolerant_workflow_session, exhaust_system_geom ############################################################################### # Set the velocity and turbulence boundary conditions for the first inlet # (inlet-1). - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "inlet-1", [], "vmag", "no", 1, "quit" - ) - ############################################################################### - # Apply the same conditions for the other velocity inlet boundaries (inlet_2, - # and inlet_3). - solver_session.tui.define.boundary_conditions.copy_bc( - "inlet-1", "inlet-2", "inlet-3", () - ) - - ############################################################################### - # Set the boundary conditions at the outlet (outlet-1). - solver_session.tui.define.boundary_conditions.set.pressure_outlet( - "outlet-1", [], "turb-intensity", 5, "quit" - ) - solver_session.tui.solve.monitors.residual.plot("yes") + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(meshing_session.get_fluent_version()[:-2]) < 23.0: + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "inlet-1", [], "vmag", "no", 1, "quit" + ) + ############################################################################### + # Apply the same conditions for the other velocity inlet boundaries (inlet_2, + # and inlet_3). + solver_session.tui.define.boundary_conditions.copy_bc( + "inlet-1", "inlet-2", "inlet-3", () + ) + + ############################################################################### + # Set the boundary conditions at the outlet (outlet-1). + solver_session.tui.define.boundary_conditions.set.pressure_outlet( + "outlet-1", [], "turb-intensity", 5, "quit" + ) + solver_session.tui.solve.monitors.residual.plot("yes") ############################################################################### # Initialize the flow field using the Initialization diff --git a/tests/test_cad_to_post_wtm.py b/tests/test_cad_to_post_wtm.py index 1b968c78bde..3f5e5284fc1 100644 --- a/tests/test_cad_to_post_wtm.py +++ b/tests/test_cad_to_post_wtm.py @@ -152,72 +152,74 @@ def test_mixing_elbow(new_watertight_workflow_session, mixing_elbow_geometry): ############################################################################### # Set up the cell zone conditions for the fluid zone (elbow-fluid). Select # water-liquid from the Material list. - solver_session.tui.define.boundary_conditions.fluid( - "elbow-fluid", - "yes", - "water-liquid", - "no", - "no", - "no", - "no", - "0", - "no", - "0", - "no", - "0", - "no", - "0", - "no", - "0", - "no", - "1", - "no", - "no", - "no", - "no", - "no", - ) - - ############################################################################### - # Set up the boundary conditions - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "cold-inlet", [], "vmag", "no", 0.4, "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "cold-inlet", [], "ke-spec", "no", "no", "no", "yes", "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "cold-inlet", [], "turb-intensity", 5, "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "cold-inlet", [], "turb-hydraulic-diam", 4, "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "cold-inlet", [], "temperature", "no", 293.15, "quit" - ) - - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "hot-inlet", [], "vmag", "no", 1.2, "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "hot-inlet", [], "ke-spec", "no", "no", "no", "yes", "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "hot-inlet", [], "turb-intensity", 5, "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "hot-inlet", [], "turb-hydraulic-diam", 1, "quit" - ) - solver_session.tui.define.boundary_conditions.set.velocity_inlet( - "hot-inlet", [], "temperature", "no", 313.15, "quit" - ) - - solver_session.tui.define.boundary_conditions.set.pressure_outlet( - "outlet", [], "turb-intensity", 5, "quit" - ) - solver_session.tui.define.boundary_conditions.set.pressure_outlet( - "outlet", [], "turb-viscosity-ratio", 4, "quit" - ) + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(solver_session.get_fluent_version()[:-2]) < 23.0: + solver_session.tui.define.boundary_conditions.fluid( + "elbow-fluid", + "yes", + "water-liquid", + "no", + "no", + "no", + "no", + "0", + "no", + "0", + "no", + "0", + "no", + "0", + "no", + "0", + "no", + "1", + "no", + "no", + "no", + "no", + "no", + ) + + ############################################################################### + # Set up the boundary conditions + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "cold-inlet", [], "vmag", "no", 0.4, "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "cold-inlet", [], "ke-spec", "no", "no", "no", "yes", "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "cold-inlet", [], "turb-intensity", 5, "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "cold-inlet", [], "turb-hydraulic-diam", 4, "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "cold-inlet", [], "temperature", "no", 293.15, "quit" + ) + + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "hot-inlet", [], "vmag", "no", 1.2, "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "hot-inlet", [], "ke-spec", "no", "no", "no", "yes", "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "hot-inlet", [], "turb-intensity", 5, "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "hot-inlet", [], "turb-hydraulic-diam", 1, "quit" + ) + solver_session.tui.define.boundary_conditions.set.velocity_inlet( + "hot-inlet", [], "temperature", "no", 313.15, "quit" + ) + + solver_session.tui.define.boundary_conditions.set.pressure_outlet( + "outlet", [], "turb-intensity", 5, "quit" + ) + solver_session.tui.define.boundary_conditions.set.pressure_outlet( + "outlet", [], "turb-viscosity-ratio", 4, "quit" + ) ############################################################################### # Enable the plotting of residuals during the calculation. diff --git a/tests/test_optislang/test_optislang_integration.py b/tests/test_optislang/test_optislang_integration.py index fde1c85f385..91a76327805 100644 --- a/tests/test_optislang/test_optislang_integration.py +++ b/tests/test_optislang/test_optislang_integration.py @@ -55,8 +55,8 @@ def test_simple_solve(load_mixing_elbow_param_case_dat): ) solver_session.tui.file.write_case("design_elbow_param.cas.h5") - # Step 5: Solve - solver_session.tui.solve.initialize.initialize_flow() + # Step 5: Solve + solver_session.tui.solve.initialize.initialize_flow() # check if solution is steady or transient workflow = solver_session.scheme_eval.string_eval("(rp-unsteady?)") From 52d549c5d7631ca3bc21e3c0788ad597e2ea7130 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Mon, 22 Aug 2022 18:13:15 +0530 Subject: [PATCH 12/12] fix tests in 23.1 - set4 --- tests/test_cad_to_post_ftm.py | 98 ++++++++++--------- tests/test_cad_to_post_wtm.py | 88 ++++++++--------- .../test_optislang_integration.py | 56 +++++------ 3 files changed, 122 insertions(+), 120 deletions(-) diff --git a/tests/test_cad_to_post_ftm.py b/tests/test_cad_to_post_ftm.py index 16d2455ed61..1218a39910b 100644 --- a/tests/test_cad_to_post_ftm.py +++ b/tests/test_cad_to_post_ftm.py @@ -472,57 +472,59 @@ def test_exhaust_system(new_fault_tolerant_workflow_session, exhaust_system_geom ) solver_session.tui.solve.monitors.residual.plot("yes") - ############################################################################### - # Initialize the flow field using the Initialization - solver_session.tui.solve.initialize.hyb_initialization() + ############################################################################### + # Initialize the flow field using the Initialization + solver_session.tui.solve.initialize.hyb_initialization() - ############################################################################### - # Start the calculation by requesting 100 iterations - solver_session.tui.solve.set.number_of_iterations(100) - solver_session.tui.solve.iterate() + ############################################################################### + # Start the calculation by requesting 100 iterations + solver_session.tui.solve.set.number_of_iterations(100) + solver_session.tui.solve.iterate() - ############################################################################### - # Assert the returned mass flow rate report definition value - solver_session.solution.report_definitions.flux["mass_flow_rate"] = {} - solver_session.solution.report_definitions.flux["mass_flow_rate"].zone_names = [ - "inlet-1", - "inlet-2", - "inlet-3", - "outlet-1", - ] - - check_report_definition = partial( - check_report_definition_result, - report_definitions=solver_session.solution.report_definitions, - ) + ############################################################################### + # Assert the returned mass flow rate report definition value + solver_session.solution.report_definitions.flux["mass_flow_rate"] = {} + solver_session.solution.report_definitions.flux["mass_flow_rate"].zone_names = [ + "inlet-1", + "inlet-2", + "inlet-3", + "outlet-1", + ] - check_report_definition( - report_definition_name="mass_flow_rate", - expected_result=approx(-6.036667e-07, abs=1e-3), - ) + check_report_definition = partial( + check_report_definition_result, + report_definitions=solver_session.solution.report_definitions, + ) - ############################################################################### - # Assert the returned velocity-magnitude report definition value on the outlet - # surface - solver_session.solution.report_definitions.surface["velocity_magnitude_outlet"] = {} - solver_session.solution.report_definitions.surface[ - "velocity_magnitude_outlet" - ].report_type = "surface-areaavg" - solver_session.solution.report_definitions.surface[ - "velocity_magnitude_outlet" - ].field = "velocity-magnitude" - solver_session.solution.report_definitions.surface[ - "velocity_magnitude_outlet" - ].surface_names = ["outlet-1"] - - check_report_definition = partial( - check_report_definition_result, - report_definitions=solver_session.solution.report_definitions, - ) + check_report_definition( + report_definition_name="mass_flow_rate", + expected_result=approx(-6.036667e-07, abs=1e-3), + ) - check_report_definition( - report_definition_name="velocity_magnitude_outlet", - expected_result=approx(3.7988207, rel=1e-3), - ) + ############################################################################### + # Assert the returned velocity-magnitude report definition value on the outlet + # surface + solver_session.solution.report_definitions.surface[ + "velocity_magnitude_outlet" + ] = {} + solver_session.solution.report_definitions.surface[ + "velocity_magnitude_outlet" + ].report_type = "surface-areaavg" + solver_session.solution.report_definitions.surface[ + "velocity_magnitude_outlet" + ].field = "velocity-magnitude" + solver_session.solution.report_definitions.surface[ + "velocity_magnitude_outlet" + ].surface_names = ["outlet-1"] + + check_report_definition = partial( + check_report_definition_result, + report_definitions=solver_session.solution.report_definitions, + ) - ############################################################################### + check_report_definition( + report_definition_name="velocity_magnitude_outlet", + expected_result=approx(3.7988207, rel=1e-3), + ) + + ############################################################################### diff --git a/tests/test_cad_to_post_wtm.py b/tests/test_cad_to_post_wtm.py index 3f5e5284fc1..17c0d61758e 100644 --- a/tests/test_cad_to_post_wtm.py +++ b/tests/test_cad_to_post_wtm.py @@ -221,53 +221,53 @@ def test_mixing_elbow(new_watertight_workflow_session, mixing_elbow_geometry): "outlet", [], "turb-viscosity-ratio", 4, "quit" ) - ############################################################################### - # Enable the plotting of residuals during the calculation. - solver_session.tui.solve.monitors.residual.plot("yes") + ############################################################################### + # Enable the plotting of residuals during the calculation. + solver_session.tui.solve.monitors.residual.plot("yes") - ############################################################################### - # Initialize the flow field using the Hybrid Initialization - solver_session.tui.solve.initialize.hyb_initialization() + ############################################################################### + # Initialize the flow field using the Hybrid Initialization + solver_session.tui.solve.initialize.hyb_initialization() - ############################################################################### - # Solve for 250 Iterations. - solver_session.tui.solve.iterate(250) + ############################################################################### + # Solve for 250 Iterations. + solver_session.tui.solve.iterate(250) - ############################################################################### - # Assert the returned mass flow rate report definition value - solver_session.solution.report_definitions.flux["mass_flow_rate"] = {} - solver_session.solution.report_definitions.flux["mass_flow_rate"].zone_names = [ - "cold-inlet", - "hot-inlet", - "outlet", - ] - - check_report_definition = partial( - check_report_definition_result, - report_definitions=solver_session.solution.report_definitions, - ) + ############################################################################### + # Assert the returned mass flow rate report definition value + solver_session.solution.report_definitions.flux["mass_flow_rate"] = {} + solver_session.solution.report_definitions.flux["mass_flow_rate"].zone_names = [ + "cold-inlet", + "hot-inlet", + "outlet", + ] + + check_report_definition = partial( + check_report_definition_result, + report_definitions=solver_session.solution.report_definitions, + ) - check_report_definition( - report_definition_name="mass_flow_rate", - expected_result=approx(-2.985690364942784e-06, abs=1e-3), - ) + check_report_definition( + report_definition_name="mass_flow_rate", + expected_result=approx(-2.985690364942784e-06, abs=1e-3), + ) - ############################################################################### - # Assert the returned temperature report definition value on the outlet surface - solver_session.solution.report_definitions.surface["temperature_outlet"] = {} - solver_session.solution.report_definitions.surface[ - "temperature_outlet" - ].report_type = "surface-massavg" - solver_session.solution.report_definitions.surface[ - "temperature_outlet" - ].field = "temperature" - solver_session.solution.report_definitions.surface[ - "temperature_outlet" - ].surface_names = ["outlet"] - - check_report_definition( - report_definition_name="temperature_outlet", - expected_result=approx(296.229, rel=1e-3), - ) + ############################################################################### + # Assert the returned temperature report definition value on the outlet surface + solver_session.solution.report_definitions.surface["temperature_outlet"] = {} + solver_session.solution.report_definitions.surface[ + "temperature_outlet" + ].report_type = "surface-massavg" + solver_session.solution.report_definitions.surface[ + "temperature_outlet" + ].field = "temperature" + solver_session.solution.report_definitions.surface[ + "temperature_outlet" + ].surface_names = ["outlet"] + + check_report_definition( + report_definition_name="temperature_outlet", + expected_result=approx(296.229, rel=1e-3), + ) - ############################################################################### + ############################################################################### diff --git a/tests/test_optislang/test_optislang_integration.py b/tests/test_optislang/test_optislang_integration.py index 91a76327805..2c02334ce1d 100644 --- a/tests/test_optislang/test_optislang_integration.py +++ b/tests/test_optislang/test_optislang_integration.py @@ -58,37 +58,37 @@ def test_simple_solve(load_mixing_elbow_param_case_dat): # Step 5: Solve solver_session.tui.solve.initialize.initialize_flow() - # check if solution is steady or transient - workflow = solver_session.scheme_eval.string_eval("(rp-unsteady?)") + # check if solution is steady or transient + workflow = solver_session.scheme_eval.string_eval("(rp-unsteady?)") - # iterate workflow - if workflow == "#t": - solver_session.tui.solve.dual_time_iterate() - else: - solver_session.tui.solve.iterate() + # iterate workflow + if workflow == "#t": + solver_session.tui.solve.dual_time_iterate() + else: + solver_session.tui.solve.iterate() - convergence = solver_session.scheme_eval.string_eval( - "(rpgetvar 'solution/converged?)" - ) + convergence = solver_session.scheme_eval.string_eval( + "(rpgetvar 'solution/converged?)" + ) - # solution output (test conditional statement) - if convergence == "#f": # -> let user know - print("Failed to converge") - else: - print("Solution is converged") + # solution output (test conditional statement) + if convergence == "#f": # -> let user know + print("Failed to converge") + else: + print("Solution is converged") - assert convergence == "#t", "Solution failed to converge" + assert convergence == "#t", "Solution failed to converge" - # Step 6: Read the data again from the case and data file - solver_session.tui.file.read_case_data(case_path) - input_parameters2 = solver_session.scheme_eval.eval( - (Symbol("list-input-parameters"),) - ) - output_parameters2 = solver_session.scheme_eval.eval( - (Symbol("list-output-parameters"),) - ) - input_parameters2 = input_parameters2["inlet2_temp"] - output_parameters2 = output_parameters2["outlet_temp-op"] + # Step 6: Read the data again from the case and data file + solver_session.tui.file.read_case_data(case_path) + input_parameters2 = solver_session.scheme_eval.eval( + (Symbol("list-input-parameters"),) + ) + output_parameters2 = solver_session.scheme_eval.eval( + (Symbol("list-output-parameters"),) + ) + input_parameters2 = input_parameters2["inlet2_temp"] + output_parameters2 = output_parameters2["outlet_temp-op"] - assert input_parameters[0] == input_parameters2[0] - assert output_parameters[0] == output_parameters2[0] + assert input_parameters[0] == input_parameters2[0] + assert output_parameters[0] == output_parameters2[0]