diff --git a/tests/test_optislang/test_optislang_integration.py b/tests/integration/test_optislang/test_optislang_integration.py similarity index 50% rename from tests/test_optislang/test_optislang_integration.py rename to tests/integration/test_optislang/test_optislang_integration.py index 7f9b333d34f4..32e2dfc9c066 100644 --- a/tests/test_optislang/test_optislang_integration.py +++ b/tests/integration/test_optislang/test_optislang_integration.py @@ -1,6 +1,9 @@ +import os from pathlib import Path +import shutil import pytest +from util.meshing_workflow import mixing_elbow_geometry # noqa: F401 import ansys.fluent.core as pyfluent @@ -10,7 +13,7 @@ def test_simple_solve(load_mixing_elbow_param_case_dat): """ - This optiSLang integration test performs these steps + Use case 1: This optiSLang integration test performs these steps - Reads a case file with and without data file - Gets input and output parameters and creates dictionary @@ -19,12 +22,14 @@ def test_simple_solve(load_mixing_elbow_param_case_dat): - Reread data This test queries the following using PyTest: + - Session health - Input parameters - Output parameters """ # Step 1: Setup logging pyfluent.set_log_level("ERROR") + pyfluent.enable_logging_to_stdout() # Step 2: Launch fluent session and read case file with and without data file solver_session = load_mixing_elbow_param_case_dat @@ -90,6 +95,73 @@ def test_simple_solve(load_mixing_elbow_param_case_dat): ) 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] + solver_session.exit() + + +@pytest.mark.optislang +@pytest.mark.integration +def test_generate_read_mesh(mixing_elbow_geometry): + + """ + Use case 2: This optiSLang integration test performs these steps + + - Launch Fluent in Meshing Mode + - Generate mesh with default workflow settings + - Read created mesh file + - Switch to solution and write case file + + This test queries the following using PyTest: + - Session health + """ + + # Step 1: Setup logging + pyfluent.set_log_level("ERROR") + pyfluent.enable_logging_to_stdout() + + # Step 2: Launch fluent session in meshing mode + session = pyfluent.launch_fluent( + meshing_mode=True, precision="double", processor_count=2 + ) + assert session.check_health() == "SERVING" + temporary_resource_path = os.path.join( + pyfluent.EXAMPLES_PATH, "test_generate_read_mesh_resources" + ) + if os.path.exists(temporary_resource_path): + shutil.rmtree(temporary_resource_path, ignore_errors=True) + if not os.path.exists(temporary_resource_path): + os.mkdir(temporary_resource_path) + + # TODO: Remove the if condition after a stable version of 23.1 is available and update the commands as required. + if float(session.get_fluent_version()[:-2]) < 23.0: + # Step 3 Generate mesh from geometry with default workflow settings + session.meshing.workflow.InitializeWorkflow(WorkflowType="Watertight Geometry") + session.meshing.workflow.TaskObject["Import Geometry"].Arguments = dict( + FileName=mixing_elbow_geometry + ) + session.meshing.workflow.TaskObject["Import Geometry"].Execute() + session.meshing.workflow.TaskObject["Generate the Volume Mesh"].Execute() + session.meshing.tui.mesh.check_mesh() + gz_path = str(Path(temporary_resource_path) / "default_mesh.msh.gz") + h5_path = str(Path(temporary_resource_path) / "default_mesh.msh.h5") + session.meshing.tui.file.write_mesh(gz_path) + session.meshing.tui.file.write_mesh(h5_path) + assert (Path(temporary_resource_path) / "default_mesh.msh.gz").exists() == True + assert (Path(temporary_resource_path) / "default_mesh.msh.h5").exists() == True + + # Step 4: use created mesh file - .msh.gz/.msh.h5 + session.meshing.tui.file.read_mesh(gz_path, "ok") + session.meshing.tui.file.read_mesh(h5_path, "ok") + + # Step 5: Switch to solution and Write case file + session.meshing.tui.switch_to_solution_mode("yes") + session.solver.tui.solve.initialize.hyb_initialization() + gz_path = str(Path(temporary_resource_path) / "default_case.cas.gz") + h5_path = str(Path(temporary_resource_path) / "default_case.cas.h5") + session.solver.tui.file.write_case(gz_path) + session.solver.tui.file.write_case(h5_path) + assert (Path(temporary_resource_path) / "default_case.cas.gz").exists() == True + assert (Path(temporary_resource_path) / "default_case.cas.h5").exists() == True + session.exit() + shutil.rmtree(temporary_resource_path, ignore_errors=True)