Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
2e84af0
stash chages.
prmukherj Feb 19, 2025
e13f50c
Merge branch 'main' into maint/default_new_dm_api
prmukherj Aug 18, 2025
cd9f1a6
workflow_api -> meshing_workflow
prmukherj Aug 18, 2025
e3c13f8
Update src/ansys/fluent/core/session_pure_meshing.py
prmukherj Aug 18, 2025
87e397e
Update tests/test_codegen.py
prmukherj Aug 18, 2025
f804880
Update tests/test_codegen.py
prmukherj Aug 18, 2025
c259abe
chore: adding changelog file 3748.added.md [dependabot-skip]
pyansys-ci-bot Aug 18, 2025
af1078a
Add test
prmukherj Aug 18, 2025
dc057bc
Merge branch 'maint/default_new_dm_api' of https://github.com/ansys/p…
prmukherj Aug 18, 2025
4f69815
Update tests.
prmukherj Aug 18, 2025
d78f01d
Update test.
prmukherj Aug 19, 2025
6f61b25
Merge branch 'main' into maint/default_new_dm_api
prmukherj Aug 20, 2025
9fa35a5
Merge branch 'maint/default_new_dm_api' of https://github.com/ansys/p…
prmukherj Aug 20, 2025
87f826d
Add 2d workflow test.
prmukherj Aug 20, 2025
653090f
Merge branch 'main' into maint/default_new_dm_api
prmukherj Aug 26, 2025
df143e9
Merge branch 'main' into maint/default_new_dm_api
prmukherj Sep 1, 2025
e272cce
Correct test.
prmukherj Sep 4, 2025
4c2c530
Merge branch 'main' into maint/default_new_dm_api
prmukherj Sep 10, 2025
81bb357
Fix 2d workflow test.
prmukherj Sep 11, 2025
f08f477
Merge branch 'main' into maint/default_new_dm_api
prmukherj Sep 11, 2025
8c8bc75
Merge branch 'main' into maint/default_new_dm_api
prmukherj Sep 15, 2025
052aa05
Update tests.
prmukherj Sep 19, 2025
160cc2e
Merge branch 'main' into maint/default_new_dm_api
prmukherj Sep 25, 2025
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