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
107 changes: 15 additions & 92 deletions src/ansys/fluent/core/meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,86 +7,6 @@
# pylint: disable=bad-mcs-classmethod-argument


class LocalObjectDataExtractor:
"""Class to extract data for local objects."""

class _SurfaceAPI:
"""Class providing APIs for surface operations."""

def __init__(self, obj):
self.obj = obj
self._surface_name_on_server = self.surface_name_in_server(obj._name)

@staticmethod
def surface_name_in_server(local_surface_name):
return "_dummy_surface_for_pyfluent:" + local_surface_name.lower()

def _get_api_handle(self):
return self.obj._get_top_most_parent().session.solver.tui.surface

def _delete_if_exist_on_server(self):
field_info = self.obj._data_extractor.field_info()
surfaces_list = list(field_info.get_surfaces_info().keys())
if self._surface_name_on_server in surfaces_list:
self.delete_surface_on_server()

def create_surface_on_server(self):
if self.obj.surface.type() == "iso-surface":
iso_surface = self.obj.surface.iso_surface
field = iso_surface.field()
iso_value = iso_surface.iso_value()
if not field:
raise RuntimeError("Iso surface definition is incomplete.")
self._delete_if_exist_on_server()
self._get_api_handle().iso_surface(
field, self._surface_name_on_server, (), (), iso_value, ()
)
elif self.obj.surface.type() == "plane-surface":
plane_surface = self.obj.surface.plane_surface
xy_plane = plane_surface.xy_plane
yz_plane = plane_surface.yz_plane
zx_plane = plane_surface.zx_plane
self._delete_if_exist_on_server()
self._get_api_handle().plane_surface(
self._surface_name_on_server,
"xy-plane" if xy_plane else "yz-plane" if yz_plane else "zx-plane",
xy_plane.z()
if xy_plane
else yz_plane.x()
if yz_plane
else zx_plane.y(),
)
field_info = self.obj._data_extractor.field_info()
surfaces_list = list(field_info.get_surfaces_info().keys())
if self._surface_name_on_server not in surfaces_list:
raise RuntimeError("Surface creation failed.")

def delete_surface_on_server(self):
self._get_api_handle().delete_surface(self._surface_name_on_server)

def __init__(self, obj):
self.obj = obj
self.field_info = lambda: obj._get_top_most_parent().session.field_info
self.field_data = lambda: obj._get_top_most_parent().session.field_data
self.monitors_manager = (
lambda: obj._get_top_most_parent().session.monitors_manager
)
self.id = lambda: obj._get_top_most_parent().session.id
if obj.__class__.__name__ == "Surface":
self.surface_api = LocalObjectDataExtractor._SurfaceAPI(obj)

def remote_surface_name(self, local_surface_name):
local_surfaces_provider = (
self.obj._get_top_most_parent()._local_surfaces_provider()
)
if local_surface_name in list(local_surfaces_provider):
return LocalObjectDataExtractor._SurfaceAPI.surface_name_in_server(
local_surface_name
)
else:
return local_surface_name


class Attribute:
VALID_NAMES = ["range", "allowed_values"]

Expand Down Expand Up @@ -180,8 +100,8 @@ def wrapper(self, value):

@classmethod
def __create_init(cls):
def wrapper(self, parent):
self._data_extractor = LocalObjectDataExtractor(self)
def wrapper(self, parent, api_helper):
self._api_helper = api_helper(self)
self._parent = parent
self._on_change_cbs = []
annotations = self.__class__.__dict__.get("__annotations__")
Expand Down Expand Up @@ -249,9 +169,9 @@ class PyLocalObjectMeta(PyLocalBaseMeta):

@classmethod
def __create_init(cls):
def wrapper(self, parent):
def wrapper(self, parent, api_helper):
self._parent = parent
self._data_extractor = LocalObjectDataExtractor(self)
self._api_helper = api_helper(self)

def update(clss):
for name, cls in clss.__dict__.items():
Expand All @@ -262,13 +182,13 @@ def update(clss):
setattr(
self,
name,
cls(self),
cls(self, api_helper),
)
if cls.__class__.__name__ == "PyLocalNamedObjectMeta":
setattr(
self,
cls.PLURAL,
PyLocalContainer(self, cls),
PyLocalContainer(self, cls, api_helper),
)
for base_class in clss.__bases__:
update(base_class)
Expand Down Expand Up @@ -381,9 +301,9 @@ class PyLocalNamedObjectMeta(PyLocalObjectMeta):

@classmethod
def __create_init(cls):
def wrapper(self, name, parent):
def wrapper(self, name, parent, api_helper):
self._name = name
self._data_extractor = LocalObjectDataExtractor(self)
self._api_helper = api_helper(self)
self._parent = parent

def update(clss):
Expand All @@ -395,13 +315,13 @@ def update(clss):
setattr(
self,
name,
cls(self),
cls(self, api_helper),
)
if cls.__class__.__name__ == "PyLocalNamedObjectMeta":
setattr(
self,
cls.PLURAL,
PyLocalContainer(self, cls),
PyLocalContainer(self, cls, api_helper),
)
for base_class in clss.__bases__:
update(base_class)
Expand All @@ -422,10 +342,11 @@ class PyLocalNamedObjectMetaAbstract(ABCMeta, PyLocalNamedObjectMeta):
class PyLocalContainer(MutableMapping):
"""Local container for named objects."""

def __init__(self, parent, object_class):
def __init__(self, parent, object_class, api_helper):
self._parent = parent
self.__object_class = object_class
self.__collection: dict = {}
self.__api_helper = api_helper

def __iter__(self):
return iter(self.__collection)
Expand All @@ -438,7 +359,9 @@ def __len__(self):
def __getitem__(self, name):
o = self.__collection.get(name, None)
if not o:
o = self.__collection[name] = self.__object_class(name, self)
o = self.__collection[name] = self.__object_class(
name, self, self.__api_helper
)
return o

# graphics = ansys.fluent.postprocessing.pyvista.Graphics(session1)
Expand Down
1 change: 0 additions & 1 deletion src/ansys/fluent/core/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,6 @@ def __init__(
self.events_manager.register_callback(
"DataReadEvent", self.monitors_manager.refresh
)

self._datamodel_service_tui = DatamodelService_TUI(
self._channel, self._metadata
)
Expand Down