diff --git a/tests/util/fixture_fluent.py b/tests/util/fixture_fluent.py index 85f3ea719b09..3f8afa22d407 100644 --- a/tests/util/fixture_fluent.py +++ b/tests/util/fixture_fluent.py @@ -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( @@ -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()