Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
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
5 changes: 5 additions & 0 deletions codegen/allapigen.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
gt_222 = FluentVersion(version) > FluentVersion.v222
ge_231 = FluentVersion(version) >= FluentVersion.v231
ge_242 = FluentVersion(version) >= FluentVersion.v242
ge_261 = FluentVersion(version) >= FluentVersion.v261

static_infos = {
StaticInfoType.DATAMODEL_WORKFLOW: meshing._datamodel_service_se.get_static_info(
Expand All @@ -40,6 +41,10 @@
static_infos[StaticInfoType.DATAMODEL_MESHING_UTILITIES] = (
meshing._datamodel_service_se.get_static_info("MeshingUtilities")
)
if ge_261:
static_infos[StaticInfoType.DATAMODEL_MESHING_WORKFLOW] = (
meshing._datamodel_service_se.get_static_info("meshing_workflow")
)
meshing.exit()

solver = launch_fluent(
Expand Down
1 change: 1 addition & 0 deletions doc/changelog.d/3748.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Updates for the client side dm-api.
1 change: 1 addition & 0 deletions doc/datamodel_rstgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ def generate_meshing_datamodels():
"pm_file_management",
"preferences",
"workflow",
"meshing_workflow",
]
for meshing_datamodel in meshing_datamodels:
try:
Expand Down
1 change: 1 addition & 0 deletions src/ansys/fluent/core/codegen/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class StaticInfoType(Enum):
TUI_SOLVER = auto()
TUI_MESHING = auto()
DATAMODEL_WORKFLOW = auto()
DATAMODEL_MESHING_WORKFLOW = auto()
DATAMODEL_MESHING = auto()
DATAMODEL_PART_MANAGEMENT = auto()
DATAMODEL_PM_FILE_MANAGEMENT = auto()
Expand Down
12 changes: 12 additions & 0 deletions src/ansys/fluent/core/codegen/datamodelgen.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ def _build_command_query_docstring(
"MeshingUtilities": "meshing_utilities",
"flicing": "flicing",
"solverworkflow": "solver_workflow",
"meshing_workflow": "meshing_workflow",
}


Expand Down Expand Up @@ -242,6 +243,13 @@ def __init__(self, version, static_infos: dict, verbose: bool = False):
),
self.version,
)
if StaticInfoType.DATAMODEL_MESHING_WORKFLOW in static_infos:
self._static_info["meshing_workflow"] = DataModelStaticInfo(
StaticInfoType.DATAMODEL_MESHING_WORKFLOW,
"meshing_workflow",
("meshing",),
self.version,
)
if StaticInfoType.DATAMODEL_MESHING in static_infos:
self._static_info["meshing"] = DataModelStaticInfo(
StaticInfoType.DATAMODEL_MESHING, "meshing", ("meshing",), self.version
Expand Down Expand Up @@ -623,6 +631,10 @@ def generate(version, static_infos: dict, verbose: bool = False):
static_infos[StaticInfoType.DATAMODEL_MESHING_UTILITIES] = (
meshing._datamodel_service_se.get_static_info("MeshingUtilities")
)
if FluentVersion(version) >= FluentVersion.v261:
static_infos[StaticInfoType.DATAMODEL_MESHING_WORKFLOW] = (
meshing._datamodel_service_se.get_static_info("meshing_workflow")
)
parser = argparse.ArgumentParser(
description="A script to write Fluent API files with an optional verbose output."
)
Expand Down
86 changes: 86 additions & 0 deletions src/ansys/fluent/core/session_base_meshing.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ def __init__(
self._fluent_version = fluent_version
self._meshing_utilities = None
self._old_workflow = None
self._meshing_workflow = None
self._part_management = None
self._pm_file_management = None
self._preferences = None
Expand Down Expand Up @@ -127,6 +128,13 @@ def workflow(self):
self._old_workflow = _make_datamodel_module(self, "workflow")
return self._old_workflow

@property
def meshing_workflow(self):
"""Full API to meshing and meshing_workflow."""
if self._meshing_workflow is None:
self._meshing_workflow = _make_datamodel_module(self, "meshing_workflow")
return self._meshing_workflow

def watertight_workflow(self, initialize: bool = True):
"""Datamodel root of workflow."""
self._current_workflow = WorkflowMode.WATERTIGHT_MESHING_MODE.value(
Expand Down Expand Up @@ -248,3 +256,81 @@ def preferences(self):
if self._preferences is None:
self._preferences = _make_datamodel_module(self, "preferences")
return self._preferences


# class WorkflowWrapper:
# def __init__(self, workflow):
# self.workflow = workflow
#
# def __getattr__(self, name):
# try:
# return getattr(self.workflow, name)
# except AttributeError as ex:
# _task_object = self.workflow.task_object.get(name)
# if _task_object:
# return TaskWrapper(_task_object)
# else:
# raise ex
#
#
# class TaskWrapper:
# def __init__(self, task):
# self.task = task
#
# def __getattr__(self, name):
# try:
# return getattr(self.task, name)
# except AttributeError as ex:
# if name in self.task.arguments():
# return ArgumentWrapper(self.task, name, self.task.arguments().get(name))
# else:
# raise ex
#
# def __call__(self, *args, **kwargs):
# self.task.execute()
#
#
# class ArgumentWrapper:
# def __init__(self, task, arg_name, arg_state):
# self.__dict__.update(
# dict(
# tash=task,
# arg_name=arg_name,
# arg_state=arg_state,
# )
# )
#
# def __getattr__(self, name):
# # try:
# # return getattr(self.task.arguments()[self.arg_name], name)
# # except AttributeError as ex:
# try:
# if type(self.arg_state) is dict:
# return ArgumentWrapper(self.task, name, self.arg_state[name])
# else:
# return self.arg_state[name]
# except KeyError:
# raise AttributeError(f"{self.arg_name} has no object named {name}.")
#
# def __setattr__(self, name, value):
# try:
# # if type(self.arg_state) is dict:
# # ArgumentWrapper(self.task, self.arg_state[name])
# # else:
# self.task.arguments.update_dict(dict(name=value))
# except KeyError as ex:
# raise AttributeError(f"No object named {name}.") from ex
#
# def __call__(self, *args, **kwargs):
# return self.arg_state
#
#
# class SubArgumentWrapper:
# def __init__(self, arg_state):
# self.arg_state = arg_state
#
# def __getattr__(self, name):
# if type(self.arg_state[name]) is dict:
# return SubArgumentWrapper(self.arg_state[name])
# else:
# return self.arg_state[name]
5 changes: 5 additions & 0 deletions src/ansys/fluent/core/session_meshing.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,11 @@ def workflow(self):
"""Workflow datamodel root."""
return super(Meshing, self).workflow

@property
def meshing_workflow(self):
"""Full API to meshing and meshing_workflow."""
return super(Meshing, self).meshing_workflow

@property
def PartManagement(self):
"""Part management datamodel root."""
Expand Down
6 changes: 6 additions & 0 deletions src/ansys/fluent/core/session_pure_meshing.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class PureMeshing(BaseSession):

_rules = [
"workflow",
"meshing_workflow",
"meshing",
"MeshingUtilities",
"PartManagement",
Expand Down Expand Up @@ -146,6 +147,11 @@ def workflow(self):
"""Datamodel root of workflow."""
return self._base_meshing.workflow

@property
def meshing_workflow(self):
"""Full API to meshing and meshing_workflow."""
return self._base_meshing.meshing_workflow

def watertight(self):
"""Get a new watertight workflow."""
return self._base_meshing.watertight_workflow()
Expand Down
5 changes: 5 additions & 0 deletions src/ansys/fluent/core/session_pure_meshing.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ from ansys.fluent.core.generated.datamodel_252.preferences import (
Root as preferences_root,
)
from ansys.fluent.core.generated.datamodel_252.workflow import Root as workflow_root
from ansys.fluent.core.generated.datamodel_261.meshing_workflow import (
Root as meshing_workflow_root,
)
from ansys.fluent.core.generated.meshing.tui_252 import main_menu

class PureMeshing:
Expand All @@ -45,6 +48,8 @@ class PureMeshing:
def meshing_utilities(self) -> meshing_utilities_root: ...
@property
def workflow(self) -> workflow_root: ...
@property
def meshing_workflow(self) -> meshing_workflow_root: ...
def watertight(self): ...
def fault_tolerant(self): ...
def two_dimensional_meshing(self): ...
Expand Down
2 changes: 2 additions & 0 deletions tests/test_codegen.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ def test_codegen_with_tui_solver_static_info(mode, monkeypatch):

_static_info_type_by_rules = {
"workflow": StaticInfoType.DATAMODEL_WORKFLOW,
"meshing_workflow": StaticInfoType.DATAMODEL_MESHING_WORKFLOW,
"meshing": StaticInfoType.DATAMODEL_MESHING,
"PartManagement": StaticInfoType.DATAMODEL_PART_MANAGEMENT,
"PMFileManagement": StaticInfoType.DATAMODEL_PM_FILE_MANAGEMENT,
Expand Down Expand Up @@ -428,6 +429,7 @@ def test_codegen_with_datamodel_static_info(monkeypatch, rules):
api_tree_expected = {"<meshing_session>": {}, "<solver_session>": {}}
if rules in [
"workflow",
"meshing_workflow",
"meshing",
"PartManagement",
"PMFileManagement",
Expand Down
Loading
Loading