Skip to content
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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)