Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .ci/fluent_test_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ def _run_single_test(
"""
logging.debug(f"journal_file: {journal_file}")
src_pyfluent_dir = str(Path(pyfluent.__file__).parent)
verion_for_file_name = FluentVersion.current_dev().number
dst_pyfluent_dir = f"/ansys_inc/v{verion_for_file_name}/commonfiles/CPython/3_10/linx64/Release/Ansys/PyFluentCore/ansys/fluent/core"
version_for_file_name = FluentVersion.current_dev().number
dst_pyfluent_dir = f"/ansys_inc/v{version_for_file_name}/commonfiles/CPython/3_10/linx64/Release/Ansys/PyFluentCore/ansys/fluent/core"
src_gen_dir = (
Path(pyfluent.__file__).parent / "ansys" / "fluent" / "core" / "generated"
)
dst_gen_dir = f"/ansys_inc/v{verion_for_file_name}/fluent/fluent{FluentVersion.current_dev()!r}/cortex/pylib/flapi/generated"
dst_gen_dir = f"/ansys_inc/v{version_for_file_name}/fluent/fluent{FluentVersion.current_dev()!r}/cortex/pylib/flapi/generated"
dst_test_dir = "/testing"
working_dir = Path(dst_test_dir)
parent = journal_file.parent
Expand Down
1 change: 1 addition & 0 deletions doc/changelog.d/4480.maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Update 26R1 meshing tests.
2 changes: 1 addition & 1 deletion doc/settings_rstgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
-- Populate a parents dictionary with current class file name (not class name) as key and list of parents file names (not class names) as value.
- Recursively Generate the rst files for classes starting with settings.root.
-- Add target reference as the file name for the given class. This is used by other classes to generate hyperlinks
-- Add properties like members, undoc-memebers, show-inheritence to the autoclass directive.
-- Add properties like members, undoc-members, show-inheritance to the autoclass directive.
-- Generate the tables of children, commands, arguments, and parents.
--- Get access to the respective properties and members on the class with get_attr.
--- Use the file name of the child class to generate the hyperlink to that class.
Expand Down
6 changes: 3 additions & 3 deletions examples/00-fluent/lunar_lander_thermal.py
Original file line number Diff line number Diff line change
Expand Up @@ -665,13 +665,13 @@ def get_surf_mean_temp(
)

# Simulate closing louvers below 273 K by changing emissivity
rad_emiss = solver_session.setup.boundary_conditions.wall[
rad_emission = solver_session.setup.boundary_conditions.wall[
"sc-radiator"
].radiation.internal_emissivity_band["thermal-ir"]
if rad_mean_temp < 273:
rad_emiss.value = 0.09
rad_emission.value = 0.09
else:
rad_emiss.value = 0.70
rad_emission.value = 0.70

# Run simulation for 1 timestep
solver_session.solution.run_calculation.calculate()
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ dependencies = [
"grpcio-health-checking>=1.30.0",
"grpcio-status>=1.26.0",
"nltk>=3.9.1",
"numpy>=1.14.0,<3.0.0",
"numpy>=1.14.0,<2.0.0",
"pandas>=1.1.0,<3.0.0",
"pyansys-tools-report>=0.8.1",
"pyyaml>=6.0",
Expand Down
2 changes: 1 addition & 1 deletion src/ansys/fluent/core/fluent_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ class MonitorThread(threading.Thread):
"""A class used for monitoring a Fluent session.

Daemon thread which will ensure cleanup of session objects, shutdown of
non-deamon threads etc.
non-daemon threads etc.

Attributes
----------
Expand Down
14 changes: 8 additions & 6 deletions tests/test_datamodel_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -387,11 +387,11 @@ def test_get_and_set_state_for_command_arg_instance(new_meshing_session):

assert x.LengthUnit.get_state() == "ft"

assert x.CadImportOptions.ExtractFeatures()
assert not x.ImportCadPreferences.ShowImportCadPreferences()

x.CadImportOptions.ExtractFeatures.set_state(False)
x.ImportCadPreferences.ShowImportCadPreferences.set_state(True)

assert not x.CadImportOptions.ExtractFeatures()
assert x.ImportCadPreferences.ShowImportCadPreferences()

x.set_state({"FileName": "dummy_file_name.dummy_extn"})

Expand Down Expand Up @@ -813,15 +813,17 @@ def test_set_command_args_and_sub_args(new_meshing_session):
meshing = new_meshing_session
ig = meshing.meshing.ImportGeometry.create_instance()

ig.FileFormat = "Mesh"

# Command Arguments
assert ig.MeshUnit() == "m"
ig.MeshUnit = "mm"
assert ig.MeshUnit() == "mm"

# Command Arguments SubItem
assert ig.CadImportOptions.OneZonePer() == "body"
ig.CadImportOptions.OneZonePer = "face"
assert ig.CadImportOptions.OneZonePer() == "face"
assert ig.ImportCadPreferences.ShowImportCadPreferences() is False
ig.ImportCadPreferences.ShowImportCadPreferences = True
assert ig.ImportCadPreferences.ShowImportCadPreferences() is True


@pytest.mark.fluent_version(">=24.1")
Expand Down
121 changes: 51 additions & 70 deletions tests/test_new_meshing_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,39 +455,6 @@ def test_new_2d_meshing_workflow(new_meshing_session_wo_exit):
assert solver.is_active() is False


@pytest.mark.codegen_required
@pytest.mark.fluent_version(">=23.2")
def test_updating_state_in_new_meshing_workflow(new_meshing_session):
# Import geometry
import_file_name = examples.download_file(
"mixing_elbow.pmdb", "pyfluent/mixing_elbow"
)
watertight = new_meshing_session.watertight()
assert watertight.import_geometry.length_unit() == "mm"
assert watertight.import_geometry.cad_import_options.feature_angle() == 40.0
assert (
watertight.import_geometry.cad_import_options.one_zone_per.allowed_values()
== ["body", "face", "object"]
)
assert watertight.import_geometry.cad_import_options.one_zone_per() == "body"
watertight.import_geometry.arguments = {
"file_name": import_file_name,
"length_unit": "in",
"cad_import_options": {"feature_angle": 35, "one_zone_per": "object"},
}
assert watertight.import_geometry.cad_import_options.feature_angle() == 35.0
assert (
watertight.import_geometry.cad_import_options.one_zone_per.get_state()
== "object"
)
assert watertight.import_geometry.length_unit.get_state() == "in"
watertight.import_geometry.cad_import_options.feature_angle = 25.0
assert watertight.import_geometry.cad_import_options.feature_angle() == 25.0
watertight.import_geometry.cad_import_options.one_zone_per = "face"
assert watertight.import_geometry.cad_import_options.one_zone_per() == "face"
watertight.import_geometry()


def _assert_snake_case_attrs(attrs: Iterable):
for attr in attrs:
assert str(attr).islower()
Expand Down Expand Up @@ -617,10 +584,19 @@ def test_watertight_workflow_dynamic_interface(
watertight = new_meshing_session.watertight()
watertight.import_geometry.file_name = mixing_elbow_geometry_filename
watertight.import_geometry()
create_volume_mesh = watertight.create_volume_mesh
if new_meshing_session.get_fluent_version() < FluentVersion.v261:
create_volume_mesh = watertight.create_volume_mesh
else:
create_volume_mesh = watertight.create_volume_mesh_wtm
assert create_volume_mesh is not None
watertight.delete_tasks(list_of_tasks=["create_volume_mesh"])
assert "create_volume_mesh" not in watertight.task_names()
if new_meshing_session.get_fluent_version() < FluentVersion.v261:
watertight.delete_tasks(list_of_tasks=["create_volume_mesh"])
vol_mesh_task_name = "<Insertable 'create_volume_mesh' task>"
assert "create_volume_mesh" not in watertight.task_names()
else:
watertight.delete_tasks(list_of_tasks=["create_volume_mesh_wtm"])
vol_mesh_task_name = "<Insertable 'create_volume_mesh_wtm' task>"
assert "create_volume_mesh_wtm" not in watertight.task_names()

assert sorted(
[repr(x) for x in watertight.add_boundary_layer.insertable_tasks()]
Expand All @@ -631,15 +607,20 @@ def test_watertight_workflow_dynamic_interface(
"<Insertable 'set_up_rotational_periodic_boundaries' task>",
"<Insertable 'modify_mesh_refinement' task>",
"<Insertable 'improve_surface_mesh' task>",
"<Insertable 'create_volume_mesh' task>",
vol_mesh_task_name,
"<Insertable 'manage_zones_ftm' task>",
"<Insertable 'update_regions' task>",
"<Insertable 'custom_journal_task' task>",
]
)
watertight.add_boundary_layer.insertable_tasks.create_volume_mesh.insert()
assert "create_volume_mesh" in watertight.task_names()
create_volume_mesh = watertight.create_volume_mesh
if new_meshing_session.get_fluent_version() < FluentVersion.v261:
watertight.add_boundary_layer.insertable_tasks.create_volume_mesh.insert()
assert "create_volume_mesh" in watertight.task_names()
create_volume_mesh = watertight.create_volume_mesh
else:
watertight.add_boundary_layer.insertable_tasks.create_volume_mesh_wtm.insert()
assert "create_volume_mesh_wtm" in watertight.task_names()
create_volume_mesh = watertight.create_volume_mesh_wtm
assert create_volume_mesh is not None

assert (
Expand All @@ -653,8 +634,12 @@ def test_watertight_workflow_dynamic_interface(
assert watertight.describe_geometry.enclose_fluid_regions
watertight.describe_geometry.enclose_fluid_regions.delete()
assert "enclose_fluid_regions" not in watertight.task_names()
watertight.create_volume_mesh.delete()
assert "create_volume_mesh" not in watertight.task_names()
if new_meshing_session.get_fluent_version() < FluentVersion.v261:
watertight.create_volume_mesh.delete()
assert "create_volume_mesh" not in watertight.task_names()
else:
watertight.create_volume_mesh_wtm.delete()
assert "create_volume_mesh_wtm" not in watertight.task_names()


@pytest.mark.fluent_version("==23.2")
Expand Down Expand Up @@ -687,7 +672,7 @@ def test_extended_wrapper(new_meshing_session, mixing_elbow_geometry_filename):
import_geometry = watertight.import_geometry
assert import_geometry.Arguments() == {}
import_geometry.Arguments = dict(FileName=mixing_elbow_geometry_filename)
assert 8 < len(import_geometry.arguments.get_state()) < 15
assert 7 <= len(import_geometry.arguments.get_state()) < 15
assert len(import_geometry.arguments.get_state(explicit_only=True)) == 1
import_geometry.arguments.set_state(dict(file_name=None))
time.sleep(5)
Expand Down Expand Up @@ -1095,7 +1080,10 @@ def test_new_meshing_workflow_without_dm_caching(
watertight.add_local_sizing.add_child_to_task()
watertight.add_local_sizing()

watertight.create_volume_mesh()
if new_meshing_session.get_fluent_version() < FluentVersion.v261:
watertight.create_volume_mesh()
else:
watertight.create_volume_mesh_wtm()

watertight.import_geometry.rename(new_name="import_geom_wtm")
time.sleep(2)
Expand Down Expand Up @@ -1236,6 +1224,10 @@ def test_duplicate_tasks_in_workflow(new_meshing_session):
watertight.import_geometry.insertable_tasks.import_boi_geometry.insert()
watertight.import_geometry.insertable_tasks.import_boi_geometry.insert()
watertight.import_geometry.insertable_tasks.import_boi_geometry.insert()
if meshing.get_fluent_version() < FluentVersion.v261:
_entry = "create_volume_mesh"
else:
_entry = "create_volume_mesh_wtm"
assert set(watertight.task_names()) == {
"import_geometry",
"create_surface_mesh",
Expand All @@ -1246,7 +1238,7 @@ def test_duplicate_tasks_in_workflow(new_meshing_session):
"create_regions",
"update_regions",
"add_boundary_layer",
"create_volume_mesh",
_entry,
"add_local_sizing",
"import_boi_geometry",
"import_boi_geometry_1",
Expand Down Expand Up @@ -1517,7 +1509,9 @@ def test_accessors_for_argument_sub_items(new_meshing_session):
meshing.workflow.TaskObject["Import Geometry"].Arguments = dict(LengthUnit="in")
assert import_geom.arguments.length_unit() == "in"

import_geom.arguments.file_format = "Mesh"
assert not import_geom.arguments.mesh_unit.is_read_only()
import_geom.arguments.file_format = "CAD"
assert import_geom.arguments.length_unit.is_active()
assert not import_geom.arguments.file_name.is_read_only()
assert not import_geom.arguments.file_name()
Expand All @@ -1529,23 +1523,21 @@ def test_accessors_for_argument_sub_items(new_meshing_session):
with pytest.raises(AttributeError):
import_geom.arguments.CadImportOptions.OneZonePer = "face"

assert import_geom.arguments.cad_import_options()
assert import_geom.arguments.cad_import_options.one_zone_per()
assert import_geom.arguments.import_cad_preferences()
assert (
not import_geom.arguments.import_cad_preferences.show_import_cad_preferences()
)

assert import_geom.arguments.file_format.get_attrib_value("allowedValues") == [
"CAD",
"Mesh",
]
assert import_geom.arguments.file_format.allowed_values() == ["CAD", "Mesh"]

assert not import_geom.arguments.cad_import_options.one_zone_per.is_read_only()
assert import_geom.arguments.cad_import_options.one_zone_per() == "body"
import_geom.arguments.cad_import_options.one_zone_per.set_state("face")
assert import_geom.arguments.cad_import_options.one_zone_per() == "face"
import_geom.arguments.cad_import_options.one_zone_per = "object"
assert import_geom.arguments.cad_import_options.one_zone_per() == "object"

volume_mesh_gen = watertight.create_volume_mesh
if meshing.get_fluent_version() < FluentVersion.v261:
volume_mesh_gen = watertight.create_volume_mesh
else:
volume_mesh_gen = watertight.create_volume_mesh_wtm
assert (
volume_mesh_gen.arguments.volume_fill_controls.cell_sizing.default_value()
== "Geometric"
Expand All @@ -1559,28 +1551,14 @@ def test_accessors_for_argument_sub_items(new_meshing_session):
"Geometric",
]
)
feat_angle = import_geom.arguments.cad_import_options.feature_angle
assert feat_angle.default_value() == 40.0

# Test particular to numerical type (min() only available in numerical types)
assert feat_angle.min() == 0.0

# Test intended to fail in numerical type (allowed_values() only available in string types)
with pytest.raises(AttributeError) as msg:
assert feat_angle.allowed_values()
assert (
msg.value.args[0] == "'_FeatureAngle' object has no attribute 'allowed_values'"
)

# Test intended to fail in numerical type (allowed_values() only available in string types)
with pytest.raises(AttributeError) as msg:
assert import_geom.arguments.num_parts.allowed_values()
assert msg.value.args[0] == "'_NumParts' object has no attribute 'allowed_values'"

# Test intended to fail in string type (min() only available in numerical types)
with pytest.raises(AttributeError) as msg:
assert import_geom.arguments.length_unit.min()
assert msg.value.args[0] == "'_LengthUnit' object has no attribute 'min'"


@pytest.mark.codegen_required
Expand All @@ -1594,7 +1572,10 @@ def test_scenario_with_common_python_names_from_fdl(new_meshing_session):
assert len(fault_tolerant.task_names()) == len(set(fault_tolerant.task_names()))

# APIName from fdl file
assert "create_volume_mesh" in fault_tolerant.task_names()
if meshing.get_fluent_version() < FluentVersion.v261:
assert "create_volume_mesh" in fault_tolerant.task_names()
else:
assert "create_volume_mesh_ftm" in fault_tolerant.task_names()
assert "generate_volume_mesh" in fault_tolerant.task_names()
assert "generate_surface_mesh" in fault_tolerant.task_names()

Expand Down
6 changes: 3 additions & 3 deletions tests/test_preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ def test_solver_preferences(new_solver_session):
ansys_logo.Visible = True
assert ansys_logo.Visible() is True

perfered_graphics = solver.preferences.Graphics
perfered_graphics.AnimationOption = "wireframe"
assert perfered_graphics.AnimationOption() == "wireframe"
preferred_graphics = solver.preferences.Graphics
preferred_graphics.AnimationOption = "wireframe"
assert preferred_graphics.AnimationOption() == "wireframe"

solver.exit()

Expand Down
2 changes: 1 addition & 1 deletion tests/test_reduction.py
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@ def test_reductions(
def test_reduction_does_not_modify_case(static_mixer_case_session: Any):
solver = static_mixer_case_session
solver.solution.initialization.hybrid_initialize()
# After reading the static-mixer case in Fluent, case-modifed? flag is somehow True
# After reading the static-mixer case in Fluent, case-modified? flag is somehow True
solver.scheme.eval("(%save-case-id)")
assert not solver.scheme.eval("(case-modified?)")
solver.reduction.area_average(
Expand Down
Loading