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
24 changes: 24 additions & 0 deletions src/ansys/fluent/core/meshing/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ def __init__(self, task_name):


class MeshingWorkflow:
class TaskContainer(PyCallableStateObject):
def __init__(self, meshing):
self._meshing_container = meshing
self._task_container = meshing._workflow.TaskObject

def __getitem__(self, name):
return MeshingWorkflow.Task(self._meshing_container, name)

def __getattr__(self, attr):
return getattr(self._task_container, attr)

def __dir__(self):
return sorted(
set(
list(self.__dict__.keys())
+ dir(type(self))
+ dir(self._task_container)
)
)

class Task(PyCallableStateObject):
def __init__(self, meshing, name):
self._workflow = meshing._workflow
Expand Down Expand Up @@ -53,6 +73,10 @@ def __init__(self, workflow, meshing):
def task(self, name):
return MeshingWorkflow.Task(self, name)

@property
def TaskObject(self):
return MeshingWorkflow.TaskContainer(self)

def __getattr__(self, attr):
return getattr(self._workflow, attr)

Expand Down
12 changes: 12 additions & 0 deletions tests/test_meshing_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,18 @@ def test_command_args_datamodel_se(new_mesh_session):
assert igt.CommandArguments.CadImportOptions.OneZonePer.getAttribValue("default")


@pytest.mark.skipif(os.getenv("FLUENT_IMAGE_TAG") == "v22.2.0", reason="Skip on 22.2")
def test_command_args_including_task_object_datamodel_se(new_mesh_session):
session_new = new_mesh_session
w = session_new.workflow
w.InitializeWorkflow(WorkflowType="Watertight Geometry")
igt = w.TaskObject["Import Geometry"]
assert igt.Arguments == {}
assert igt.CommandArguments.CadImportOptions()
assert igt.CommandArguments.CadImportOptions.OneZonePer()
assert igt.CommandArguments.CadImportOptions.OneZonePer.getAttribValue("default")


@pytest.mark.skipif(os.getenv("FLUENT_IMAGE_TAG") == "v22.2.0", reason="Skip on 22.2")
def test_meshing_object_commands(new_mesh_session, tmp_path=pyfluent.EXAMPLES_PATH):
session_new = new_mesh_session
Expand Down
5 changes: 3 additions & 2 deletions tests/test_pure_mesh_vs_mesh_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ def test_pure_meshing_mode(load_mixing_elbow_pure_meshing):
import_geometry_dir = dir(import_geometry)
for attr in ("AddChildToTask", "Arguments", "Execute", "setState"):
assert attr in import_geometry_dir
assert import_geometry.Execute()
with pytest.raises(AttributeError):
pure_meshing_session.switch_to_solver()

Expand All @@ -30,7 +29,9 @@ def test_meshing_mode(load_mixing_elbow_meshing):
session_dir = dir(meshing_session)
for attr in ("field_data", "field_info", "meshing", "workflow"):
assert attr in session_dir
assert meshing_session.workflow.TaskObject["Import Geometry"].Execute()
assert meshing_session.workflow.InitializeWorkflow(
WorkflowType="Watertight Geometry"
)
assert meshing_session.switch_to_solver()


Expand Down
2 changes: 1 addition & 1 deletion tests/util/meshing_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def assign_task_arguments(
task.Arguments = kwargs
if check_state:
# the state that we have set must be a subset of the total state
assert kwargs.items() <= task.Arguments().items()
assert kwargs.items() <= task.Arguments.items()


def check_task_execute_preconditions(task) -> None:
Expand Down