Skip to content
Merged
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
1 change: 1 addition & 0 deletions doc/changelog.d/4515.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Implement migration adapter check for textual settings parameters.
6 changes: 4 additions & 2 deletions src/ansys/fluent/core/solver/flobject.py
Original file line number Diff line number Diff line change
Expand Up @@ -686,9 +686,11 @@ def set_state(self, state: StateT | None = None, **kwargs):
allowed_types = (str, VariableDescriptor)

if not isinstance(state, allowed_types):
expected = " or ".join(t.__name__ for t in allowed_types)
if self._has_migration_adapter:
return self.base_set_state(state=state, **kwargs)
Comment on lines +689 to +690
Copy link
Preview

Copilot AI Oct 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The _has_migration_adapter property is not defined or documented in the visible code. Consider adding a comment explaining what this property represents and how it determines if a migration adapter is available.

Copilot uses AI. Check for mistakes.

raise TypeError(
f"Expected state to be {expected}, got {type(state).__name__}."
f"Expected state to be {' or '.join(t.__name__ for t in allowed_types)}, "
f"got {type(state).__name__}."
)
return self.base_set_state(state=_to_field_name_str(state), **kwargs)

Expand Down
36 changes: 36 additions & 0 deletions tests/test_settings_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -793,3 +793,39 @@ def test_setting_string_constants(mixing_elbow_settings_session):

with pytest.raises(ValueError):
viscous.k_epsilon_model = viscous.k_epsilon_model.EASM


@pytest.mark.fluent_version(">=26.1")
def test_migration_adapter_for_strings(mixing_elbow_settings_session):
solver = mixing_elbow_settings_session
solver.settings.setup.general.solver.time = "unsteady-2nd-order"
solver.settings.setup.models.discrete_phase.general_settings.interaction.enabled = (
True
)

solver.settings.setup.models.discrete_phase.general_settings.unsteady_tracking.enabled = (
True
)
solver.settings.setup.models.discrete_phase.general_settings.unsteady_tracking.option = (
"particle-time-step"
)
solver.settings.setup.models.discrete_phase.general_settings.unsteady_tracking.dpm_time_step_size = (
0.0002
)

# Migration adapter is set on the 'create_particles_at' to accept boolean values as well besides string
solver.settings.setup.models.discrete_phase.general_settings.unsteady_tracking.create_particles_at = (
False
)
assert (
solver.settings.setup.models.discrete_phase.general_settings.unsteady_tracking.create_particles_at()
== "fluid-flow-time-step"
)

solver.settings.setup.models.discrete_phase.general_settings.unsteady_tracking.create_particles_at = (
True
)
assert (
solver.settings.setup.models.discrete_phase.general_settings.unsteady_tracking.create_particles_at()
== "particle-time-step"
)