Skip to content
193 changes: 99 additions & 94 deletions tests/util/fixture_fluent.py
Original file line number Diff line number Diff line change
@@ -1,90 +1,129 @@
from pathlib import Path

import pytest

import ansys.fluent.core as pyfluent
from ansys.fluent.core.examples import download_file


@pytest.fixture
def exhaust_system_geometry():
global _exhaust_system_geometry_filename
if not _exhaust_system_geometry_filename:
_exhaust_system_geometry_filename = download_file(
filename="exhaust_system.fmd", directory="pyfluent/exhaust_system"
def get_file_type(full_file_name):
if ".msh" in full_file_name:
return "mesh"
if ".cas" in full_file_name:
return "case"
if ".dat" in full_file_name:
return "data"
if Path(full_file_name).suffix in (".fmd", ".scdoc", ".pmdb", ".agdb"):
return "geometry"


def download_input_file(directory_name, full_file_name, data_file_name=None):
file_type = get_file_type(full_file_name)
file_name = "_%s_%s_filename" % (full_file_name.split(".")[0], file_type)
globals()[file_name] = None
if not globals()[file_name]:
globals()[file_name] = download_file(
filename=full_file_name,
directory=directory_name,
)
return _exhaust_system_geometry_filename
file_name = globals()[file_name]
if data_file_name:
dat_file_type = get_file_type(data_file_name)
dat_name = "_%s_%s_filename" % (data_file_name.split(".")[0], dat_file_type)
globals()[dat_name] = None
if not globals()[dat_name]:
globals()[dat_name] = download_file(
filename=full_file_name,
directory=directory_name,
)
file_type = "case-data"
return file_type, file_name


_mixing_elbow_mesh_filename = None
_mixing_elbow_geom_filename = None
def get_name_info(allnamesdict, namescheck):
name_selected = {}
for names, details in allnamesdict.items():
if isinstance(details, dict):
for name in namescheck:
if name in details.values() or name in details or name in names:
name_selected[name] = details
return name_selected


@pytest.fixture
def load_mixing_elbow_mesh(with_launching_container):
def sample_solver_session(with_launching_container):
solver_session = pyfluent.launch_fluent(mode="solver")
yield solver_session
solver_session.exit()


@pytest.fixture
def launch_fluent_solver_3ddp_t2(with_launching_container):
solver_session = pyfluent.launch_fluent(
precision="double", processor_count=2, mode="solver"
)
global _mixing_elbow_mesh_filename
if not _mixing_elbow_mesh_filename:
_mixing_elbow_mesh_filename = download_file(
filename="mixing_elbow.msh.h5", directory="pyfluent/mixing_elbow"
)
solver_session.file.read(file_type="case", file_name=_mixing_elbow_mesh_filename)
yield solver_session
solver_session.exit()


_mixing_elbow_case_filename = None
_mixing_elbow_dat_filename = None


@pytest.fixture
def load_mixing_elbow_case_dat(with_launching_container):
def launch_fluent_solver_2ddp_t2(with_launching_container):
solver_session = pyfluent.launch_fluent(
precision="double", processor_count=2, mode="solver"
"2d", precision="double", processor_count=2, mode="solver"
)
global _mixing_elbow_case_filename
if not _mixing_elbow_case_filename:
_mixing_elbow_case_filename = download_file(
filename="mixing_elbow.cas.h5", directory="pyfluent/mixing_elbow"
)
global _mixing_elbow_dat_filename
if not _mixing_elbow_dat_filename:
_mixing_elbow_dat_filename = download_file(
filename="mixing_elbow.dat.h5", directory="pyfluent/mixing_elbow"
yield solver_session
solver_session.exit()


_exhaust_system_geometry_filename = None


@pytest.fixture
def exhaust_system_geometry():
global _exhaust_system_geometry_filename
if not _exhaust_system_geometry_filename:
_exhaust_system_geometry_filename = download_file(
filename="exhaust_system.fmd", directory="pyfluent/exhaust_system"
)
solver_session.file.read(
file_type="case-data", file_name=_mixing_elbow_case_filename
return _exhaust_system_geometry_filename


@pytest.fixture
def load_mixing_elbow_mesh(launch_fluent_solver_3ddp_t2):
solver_session = launch_fluent_solver_3ddp_t2
input_type, input_name = download_input_file(
"pyfluent/mixing_elbow", "mixing_elbow.msh.h5"
)
solver_session.file.read(file_type=input_type, file_name=input_name)
yield solver_session
solver_session.exit()


_mixing_elbow_param_case_filename = None
_mixing_elbow_param_dat_filename = None
@pytest.fixture
def load_mixing_elbow_case_dat(launch_fluent_solver_3ddp_t2):
solver_session = launch_fluent_solver_3ddp_t2
input_type, input_name = download_input_file(
"pyfluent/mixing_elbow", "mixing_elbow.cas.h5", "mixing_elbow.dat.h5"
)
solver_session.file.read(file_type=input_type, file_name=input_name)
yield solver_session
solver_session.exit()


@pytest.fixture
def load_mixing_elbow_param_case_dat(with_launching_container):
solver_session = pyfluent.launch_fluent(
precision="double", processor_count=2, mode="solver"
)
global _mixing_elbow_param_case_filename
if not _mixing_elbow_param_case_filename:
_mixing_elbow_param_case_filename = download_file(
filename="elbow_param.cas.h5", directory="pyfluent/mixing_elbow"
)
global _mixing_elbow_param_dat_filename
if not _mixing_elbow_param_dat_filename:
_mixing_elbow_param_dat_filename = download_file(
filename="elbow_param.dat.h5", directory="pyfluent/mixing_elbow"
)
solver_session.file.read(
file_type="case-data", file_name=_mixing_elbow_param_case_filename
def load_mixing_elbow_param_case_dat(launch_fluent_solver_3ddp_t2):
solver_session = launch_fluent_solver_3ddp_t2
input_type, input_name = download_input_file(
"pyfluent/mixing_elbow", "elbow_param.cas.h5", "elbow_param.dat.h5"
)
solver_session.file.read(file_type=input_type, file_name=input_name)
yield solver_session
solver_session.exit()


_mixing_elbow_geom_filename = None


@pytest.fixture
def load_mixing_elbow_pure_meshing(with_launching_container):
pure_meshing_session = pyfluent.launch_fluent(
Expand Down Expand Up @@ -125,55 +164,21 @@ def load_mixing_elbow_meshing(with_launching_container):
meshing_session.exit()


_periodic_rot_case_filename = None


@pytest.fixture
def load_periodic_rot_cas(with_launching_container):
solver_session = pyfluent.launch_fluent(
precision="double", processor_count=2, mode="solver"
def load_periodic_rot_cas(launch_fluent_solver_3ddp_t2):
solver_session = launch_fluent_solver_3ddp_t2
input_type, input_name = download_input_file(
"pyfluent/periodic_rot", "periodic_rot.cas.h5"
)
global _periodic_rot_case_filename
if not _periodic_rot_case_filename:
_periodic_rot_case_filename = download_file(
filename="periodic_rot.cas.h5",
directory="pyfluent/periodic_rot",
)
solver_session.file.read(file_type="case", file_name=_periodic_rot_case_filename)
solver_session.file.read(file_type=input_type, file_name=input_name)
yield solver_session
solver_session.exit()


def get_name_info(allnamesdict, namescheck):
name_selected = {}
for names, details in allnamesdict.items():
if isinstance(details, dict):
for name in namescheck:
if name in details.values() or name in details or name in names:
name_selected[name] = details
return name_selected


@pytest.fixture
def sample_solver_session(with_launching_container):
solver_session = pyfluent.launch_fluent(mode="solver")
def load_disk_mesh(launch_fluent_solver_2ddp_t2):
solver_session = launch_fluent_solver_2ddp_t2
input_type, input_name = download_input_file("pyfluent/rotating_disk", "disk.msh")
solver_session.file.read(file_type=input_type, file_name=input_name)
yield solver_session
solver_session.exit()


_disk_mesh_filename = None


@pytest.fixture
def load_disk_mesh(with_launching_container):
session = pyfluent.launch_fluent(
precision="double", processor_count=2, version="2d"
)
global _disk_mesh_filename
if not _disk_mesh_filename:
_disk_mesh_filename = download_file(
filename="disk.msh", directory="pyfluent/rotating_disk"
)
session.solver.root.file.read(file_type="case", file_name=_disk_mesh_filename)
yield session
session.exit()