Skip to content

Commit

Permalink
refactor: Customise enhanced meshing workflow (#2701)
Browse files Browse the repository at this point in the history
* Clean up.

* Handle an issue with camel_to_snake convertor.

* Clean up test and code.

* Clean up test and code.

* Update test.

* Update possible task list.

* Fix tests.

* Fix camel case conversion.

* Add test for duplicate tasks.

* Object oriented task insertion.

* Fix test.

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* feat: Load saved workflows. (#2718)

* feat: Load saved workflows.

* Update docstring.

* feat: Create new workflows (#2722)

* feat: Create new workflows

* Fix doc.

* fix behavior.

* Fix docs.

* Clean-up.

* Update behavior.

* Fix test.

* Update src/ansys/fluent/core/meshing/meshing_workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/meshing/meshing_workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/meshing/meshing_workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/session_base_meshing.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/session_pure_meshing.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* Update src/ansys/fluent/core/workflow.py

Co-authored-by: Kathy Pippert <[email protected]>

* rename -> insertable_tasks

* ordered_children -> tasks

* Renaming.

* Update doc.

* Refactor.

* Refactor.

* Fix tests.

* Refactor.

* Refactor.

* Rename.

---------

Co-authored-by: Kathy Pippert <[email protected]>
  • Loading branch information
prmukherj and PipKat authored Apr 22, 2024
1 parent baf63b8 commit b9be47b
Show file tree
Hide file tree
Showing 6 changed files with 520 additions and 260 deletions.
65 changes: 65 additions & 0 deletions src/ansys/fluent/core/meshing/meshing_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,3 +240,68 @@ class WorkflowMode(Enum):
FAULT_TOLERANT_MESHING_MODE = FaultTolerantMeshingWorkflow
TWO_DIMENSIONAL_MESHING_MODE = TwoDimensionalMeshingWorkflow
TOPOLOGY_BASED_MESHING_MODE = TopologyBasedMeshingWorkflow


class LoadWorkflow(Workflow):
"""Provides a specialization of the workflow wrapper for a loaded workflow."""

def __init__(
self,
workflow: PyMenuGeneric,
meshing: PyMenuGeneric,
file_path: str,
fluent_version: FluentVersion,
) -> None:
"""Initialize a ``LoadWorkflow`` instance.
Parameters
----------
workflow : PyMenuGeneric
Underlying workflow object.
meshing : PyMenuGeneric
Meshing object.
file_path: str
Path to the saved workflow.
fluent_version: FluentVersion
Version of Fluent in this session.
"""
super().__init__(
workflow=workflow, command_source=meshing, fluent_version=fluent_version
)
self._meshing = meshing
self._file_path = file_path

def load(self) -> None:
"""Load a workflow."""
self._load_workflow(file_path=self._file_path)


class CreateWorkflow(Workflow):
"""Provides a specialization of the workflow wrapper for a newly created
workflow."""

def __init__(
self,
workflow: PyMenuGeneric,
meshing: PyMenuGeneric,
fluent_version: FluentVersion,
) -> None:
"""Initialize a ``CreateWorkflow`` instance.
Parameters
----------
workflow : PyMenuGeneric
Underlying workflow object.
meshing : PyMenuGeneric
Meshing object.
fluent_version: FluentVersion
Version of Fluent in this session.
"""
super().__init__(
workflow=workflow, command_source=meshing, fluent_version=fluent_version
)
self._meshing = meshing

def create(self) -> None:
"""Create a workflow."""
self._create_workflow()
32 changes: 30 additions & 2 deletions src/ansys/fluent/core/session_base_meshing.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
import logging

from ansys.fluent.core.fluent_connection import FluentConnection
from ansys.fluent.core.meshing.meshing_workflow import WorkflowMode
from ansys.fluent.core.meshing.meshing_workflow import (
CreateWorkflow,
LoadWorkflow,
WorkflowMode,
)
from ansys.fluent.core.services.datamodel_se import PyMenuGeneric
from ansys.fluent.core.services.datamodel_tui import TUIMenu
from ansys.fluent.core.session_shared import _CODEGEN_MSG_DATAMODEL, _CODEGEN_MSG_TUI
Expand Down Expand Up @@ -48,6 +52,8 @@ def __init__(
self._ft_workflow = None
self._2dm_workflow = None
self._tb_workflow = None
self._loaded_workflow = None
self._created_workflow = None
self._part_management = None
self._pm_file_management = None
self._preferences = None
Expand Down Expand Up @@ -199,9 +205,31 @@ def topology_based_meshing_workflow(self):
)
return self._tb_workflow

def load_workflow(self, file_path: str):
"""Datamodel root of workflow exposed in object-oriented manner."""
if not self._loaded_workflow:
self._loaded_workflow = LoadWorkflow(
self._workflow_se,
self.meshing,
file_path,
self.get_fluent_version(),
)
return self._loaded_workflow

@property
def create_workflow(self):
"""Datamodel root of the workflow exposed in an object-oriented manner."""
if not self._created_workflow:
self._created_workflow = CreateWorkflow(
self._workflow_se,
self.meshing,
self.get_fluent_version(),
)
return self._created_workflow

@property
def PartManagement(self):
"""Datamdoel root of PartManagement."""
"""Datamodel root of ``PartManagement``."""
if self._part_management is None:
try:
pm_module = importlib.import_module(
Expand Down
10 changes: 10 additions & 0 deletions src/ansys/fluent/core/session_pure_meshing.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,16 @@ def two_dimensional_meshing(self):
self._base_meshing.two_dimensional_meshing_workflow.reinitialize()
return self._base_meshing.two_dimensional_meshing_workflow

def load_workflow(self, file_path: str):
"""Load a saved workflow."""
self._base_meshing.load_workflow(file_path=file_path).load()
return self._base_meshing.load_workflow(file_path=file_path)

def create_workflow(self):
"""Create a meshing workflow."""
self._base_meshing.create_workflow.create()
return self._base_meshing.create_workflow

def topology_based(self):
"""Get a new topology-based meshing workflow.
Expand Down
2 changes: 2 additions & 0 deletions src/ansys/fluent/core/session_pure_meshing.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class PureMeshing:
def fault_tolerant(self): ...
def two_dimensional_meshing(self): ...
def topology_based(self): ...
def load_workflow(self, file_path: str): ...
def create_workflow(self): ...
@property
def PartManagement(self) -> partmanagement_root: ...
@property
Expand Down
Loading

0 comments on commit b9be47b

Please sign in to comment.