diff --git a/Makefile b/Makefile index 5c0de42c6869..0145fab9b8c1 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ test-import: unittest: @echo "Running unittest" @pip install -r requirements/requirements_tests.txt - @pytest -v --cov=ansys.fluent --cov-report html:cov_html --cov-config=.coveragerc + @pytest -v -m "unmarked or integration" --cov=ansys.fluent --cov-report html:cov_html --cov-config=.coveragerc api-codegen: @echo "Running API codegen" diff --git a/pytest.ini b/pytest.ini index 0fe4ac8e0f3f..fd85683f6cd0 100644 --- a/pytest.ini +++ b/pytest.ini @@ -4,4 +4,5 @@ markers = quick:Run the quick tests setup:Tests checking general features after import solve:Test running end to end - mesh:Test meshing \ No newline at end of file + mesh:Test meshing + unmarked:All unmarked tests \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index 5a9320d53247..52dc63315987 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -5,6 +5,12 @@ ] +def pytest_collection_modifyitems(items, config): + for item in items: + if not any(item.iter_markers()): + item.add_marker("unmarked") + + @pytest.fixture def with_launching_container(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.setenv("PYFLUENT_LAUNCH_CONTAINER", "1") diff --git a/tests/test_solvermode/test_general.py b/tests/test_solvermode/test_general.py index d8bce7490622..307d40765d50 100644 --- a/tests/test_solvermode/test_general.py +++ b/tests/test_solvermode/test_general.py @@ -3,14 +3,69 @@ @pytest.mark.quick @pytest.mark.setup -def test_solver_import_mixingelbow(load_mixing_elbow_mesh): +def test_solver_import_mixing_elbow(load_mixing_elbow_mesh): session = load_mixing_elbow_mesh - assert session.solver.root.get_attr("active?") + solver = session.solver.root + assert solver.get_attr("active?") assert session.check_health() == "SERVING" ### - assert not session.solver.root.setup.models.energy.enabled() + assert not solver.setup.models.energy.enabled() assert session.scheme_eval.scheme_eval("(case-valid?)") ### session.solver.tui.mesh.check() session.solver.tui.define.units("length", "in") assert session.scheme_eval.scheme_eval('(units/quantity-info "length")')[-1] == "in" + + solver.setup.general.solver.get_active_child_names() + + solver.mesh.check() + solver.setup.general.solver.time.get_attr("allowed-values") + solver.setup.general.solver.time = "unsteady-2nd-order" + solver.setup.general.solver.time = "unsteady-1st-order" + solver.setup.general.solver.time = "unsteady-2nd-order-bounded" + solver.setup.general.solver.time = "steady" + + # solver.setup.general.gravity = {"gravity": True, "y_component": -9.81} + # solver.mesh.scale(x_scale=0.001, y_scale=0.001, z_scale=0.001) + solver.setup.general.solver.type.get_attr("allowed-values") + solver.setup.general.solver.type = "density-based-implicit" + assert solver.setup.general.solver.type() == "density-based-implicit" + solver.setup.general.solver.type = "density-based-explicit" + assert solver.setup.general.solver.type() == "density-based-explicit" + solver.setup.general.solver.type = "pressure-based" + assert solver.setup.general.solver.type() == "pressure-based" + + solver.file.auto_save.data_frequency = 10 + assert solver.file.auto_save.data_frequency() == 10 + solver.file.auto_save.case_frequency = "each-time" + assert solver.file.auto_save.case_frequency() == "each-time" + solver.file.auto_save.root_name = "file_auto_save" + assert solver.file.auto_save.root_name() == "file_auto_save" + solver.setup.reference_values.compute(from_zone_name="outlet") + + +@pytest.mark.quick +@pytest.mark.setup +def test_disk_2d_setup(load_disk_mesh): + session = load_disk_mesh + solver = session.solver.root + assert solver.get_attr("active?") + assert session.check_health() == "SERVING" + ### + assert not solver.setup.models.energy.enabled() + assert session.scheme_eval.scheme_eval("(case-valid?)") + solver.mesh.check() + assert solver.setup.general.solver.two_dim_space.get_attr("allowed-values") == [ + "swirl", + "axisymmetric", + "planar", + ] + assert solver.setup.general.solver.two_dim_space() == "planar" + solver.setup.general.solver.two_dim_space = "axisymmetric" + assert solver.setup.general.solver.two_dim_space() == "axisymmetric" + solver.setup.general.solver.two_dim_space = "swirl" + assert solver.setup.general.solver.two_dim_space() == "swirl" + solver.setup.general.solver.two_dim_space = "planar" + assert solver.setup.general.solver.two_dim_space() == "planar" + # Bug 682773 + # solver.setup.general.gravity = {"gravity": True, "x_component": -9.81} diff --git a/tests/test_solvermode/test_materials.py b/tests/test_solvermode/test_materials.py index 4456dd07f80e..389940715b8f 100644 --- a/tests/test_solvermode/test_materials.py +++ b/tests/test_solvermode/test_materials.py @@ -6,9 +6,11 @@ @pytest.mark.setup def test_solver_material(load_mixing_elbow_mesh): session = load_mixing_elbow_mesh - session.solver.root.setup.materials.copy_database_material_by_name( + # session.solver.root.setup.materials.copy_database_material_by_name(type="fluid", name="water-liquid") + session.solver.root.setup.materials.database.copy_by_name( type="fluid", name="water-liquid" ) + assert ( "water-liquid" not in session.solver.root.setup.cell_zone_conditions.fluid[ @@ -24,3 +26,48 @@ def test_solver_material(load_mixing_elbow_mesh): "elbow-fluid" ].material() ) + + session.solver.root.setup.materials.database.copy_by_name(type="fluid", name="air") + session.solver.root.setup.cell_zone_conditions.fluid["elbow-fluid"].material = "air" + assert ( + "air" + in session.solver.root.setup.cell_zone_conditions.fluid[ + "elbow-fluid" + ].material() + ) + assert ( + "air" + in session.solver.root.setup.cell_zone_conditions.fluid[ + "elbow-fluid" + ].material() + ) + assert session.solver.root.setup.materials.child_names == [ + "database", + "fluid", + "solid", + "mixture", + "inert_particle", + "droplet_particle", + "combusting_particle", + "particle_mixture", + ] + assert session.solver.root.setup.materials.database.get_active_command_names() == [ + "copy_by_formula", + "copy_by_name", + "list_materials", + "list_properties", + ] + + session.solver.root.setup.materials.database.copy_by_formula( + type="fluid", formula="c2h6" + ) + + session.solver.root.setup.cell_zone_conditions.fluid[ + "elbow-fluid" + ].material = "ethane" + assert ( + "ethane" + in session.solver.root.setup.cell_zone_conditions.fluid[ + "elbow-fluid" + ].material() + ) diff --git a/tests/test_solvermode/test_models.py b/tests/test_solvermode/test_models.py index 5f6c62ed310e..ea4c0c2fce08 100644 --- a/tests/test_solvermode/test_models.py +++ b/tests/test_solvermode/test_models.py @@ -9,3 +9,85 @@ def test_solver_models(load_mixing_elbow_mesh): assert not session.solver.root.setup.models.energy.enabled() session.solver.root.setup.models.energy.enabled = True assert session.solver.root.setup.models.energy.enabled() + + +@pytest.mark.quick +@pytest.mark.setup +def test_disk_2d_models(load_disk_mesh): + session = load_disk_mesh + solver = session.solver.root + solver.setup.general.solver.two_dim_space = "axisymmetric" + solver.setup.general.solver.two_dim_space = "swirl" + solver.setup.models.viscous.model = "k-epsilon" + assert solver.setup.models.viscous.model() == "k-epsilon" + solver.setup.models.viscous.near_wall_treatment.wall_function = ( + "enhanced-wall-treatment" + ) + assert ( + solver.setup.models.viscous.near_wall_treatment.wall_function() + == "enhanced-wall-treatment" + ) + solver.setup.models.viscous.near_wall_treatment.wall_function.get_attr( + "allowed-values" + ) + solver.setup.models.viscous.near_wall_treatment.wall_function = "standard-wall-fn" + assert ( + solver.setup.models.viscous.near_wall_treatment.wall_function() + == "standard-wall-fn" + ) + solver.setup.models.viscous.near_wall_treatment.wall_function = ( + "non-equilibrium-wall-fn" + ) + assert ( + solver.setup.models.viscous.near_wall_treatment.wall_function() + == "non-equilibrium-wall-fn" + ) + solver.setup.models.viscous.near_wall_treatment.wall_function = "menter-lechner" + assert ( + solver.setup.models.viscous.near_wall_treatment.wall_function() + == "menter-lechner" + ) + solver.setup.models.viscous.near_wall_treatment.wall_function = ( + "scalable-wall-functions" + ) + assert ( + solver.setup.models.viscous.near_wall_treatment.wall_function() + == "scalable-wall-functions" + ) + solver.setup.models.viscous.near_wall_treatment.wall_function = ( + "user-defined-wall-functions" + ) + # As udf is not available, so it will change automatically to standard wall function + assert ( + solver.setup.models.viscous.near_wall_treatment.wall_function() + == "standard-wall-fn" + ) + + solver.setup.models.viscous.model = "k-omega" + assert solver.setup.models.viscous.model() == "k-omega" + assert solver.setup.models.viscous.k_omega_model.get_attr("allowed-values") == [ + "standard", + "geko", + "bsl", + "sst", + ] + assert solver.setup.models.viscous.k_omega_model() == "standard" + solver.setup.models.viscous.k_omega_model = "geko" + assert solver.setup.models.viscous.k_omega_model() == "geko" + solver.setup.models.viscous.k_omega_model = "bsl" + assert solver.setup.models.viscous.k_omega_model() == "bsl" + solver.setup.models.viscous.k_omega_model = "sst" + assert solver.setup.models.viscous.k_omega_model() == "sst" + assert solver.setup.models.viscous.model.get_attr("allowed-values") == [ + "inviscid", + "laminar", + "k-epsilon", + "k-omega", + "mixing-length", + "spalart-allmaras", + "k-kl-w", + "transition-sst", + "reynolds-stress", + "scale-adaptive-simulation", + "detached-eddy-simulation", + ] diff --git a/tests/util/fixture_fluent.py b/tests/util/fixture_fluent.py index 670df9be39eb..a6291842c80c 100644 --- a/tests/util/fixture_fluent.py +++ b/tests/util/fixture_fluent.py @@ -54,3 +54,21 @@ def load_mixing_elbow_case_dat(with_launching_container): ) yield session 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/disk_tut" + ) + session.solver.root.file.read(file_type="case", file_name=_disk_mesh_filename) + yield session + session.exit()