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
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
[tool.poetry]
# Check https://python-poetry.org/docs/pyproject/ for all available sections
name = "ansys-fluent-visualization"
version = "0.21.0"
version = "0.21.1"
description = "A python wrapper for ansys Fluent visualization"
license = "MIT"
authors = ["ANSYS, Inc. <ansys.support@ansys.com>"]
Expand All @@ -25,7 +25,7 @@ packages = [
[tool.poetry.dependencies]
python = ">=3.10,<4.0"
importlib-metadata = {version = "^4.0", python = "<3.9"}
ansys-fluent-core = "~=0.34.0"
ansys-fluent-core = "~=0.34.1"
pyvista = ">=0.44.0"
matplotlib = ">=3.6.0"
pyvistaqt = { version = "~=0.11.1", optional = true }
Expand Down
2 changes: 2 additions & 0 deletions src/ansys/fluent/interface/post_objects/meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,8 @@ def __new__(cls, name, bases, attrs):
attrs["root"] = property(lambda self: self.get_root())
attrs["path"] = property(lambda self: self.get_path())
attrs["session"] = property(lambda self: self.get_session())
attrs["field_data"] = property(lambda self: self.get_session().field_data)
attrs["monitors"] = property(lambda self: self.get_session().monitors)
attrs["session_handle"] = property(lambda self: self.get_session_handle())
return super(PyLocalBaseMeta, cls).__new__(cls, name, bases, attrs)

Expand Down
15 changes: 7 additions & 8 deletions src/ansys/fluent/interface/post_objects/post_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ def _get_api_handle(self):
return self.obj.get_root().session.results.surfaces

def _delete_if_exists_on_server(self):
field_info = self.obj._api_helper.field_info()
surfaces_list = list(field_info.get_surfaces_info().keys())
field_data = self.obj._api_helper.field_data()
surfaces_list = list(field_data.surfaces())
if self._surface_name_on_server in surfaces_list:
self.delete_surface_on_server()

Expand Down Expand Up @@ -130,8 +130,8 @@ def create_surface_on_server(self):
"method": method,
position: value,
}
field_info = self.obj._api_helper.field_info()
surfaces_list = list(field_info.get_surfaces_info().keys())
field_data = self.obj._api_helper.field_data()
surfaces_list = list(field_data.surfaces())
if self._surface_name_on_server not in surfaces_list:
raise SurfaceCreationError()

Expand All @@ -145,7 +145,6 @@ def delete_surface_on_server(self):
def __init__(self, obj):
"""__init__ method of PostAPIHelper class."""
self.obj = obj
self.field_info = lambda: obj.get_root().session.fields.field_info
self.field_data = lambda: obj.get_root().session.fields.field_data
if obj.__class__.__name__ == "Surface":
self.surface_api = PostAPIHelper._SurfaceAPI(obj)
Expand All @@ -163,14 +162,14 @@ def remote_surface_name(self, local_surface_name):
def get_field_unit(self, field):
"""Return the unit of the field."""
session = self.obj.get_root().session
if FluentVersion(session.scheme_eval.version) < FluentVersion.v252:
if FluentVersion(session.scheme.version) < FluentVersion.v252:
quantity = self._field_unit_quantity(field)
if quantity == "*null*":
return ""
scheme_eval_str = f"(units/get-pretty-wb-units-from-dimension (units/inquire-dimension '{quantity}))" # noqa: E501
return " ".join(self._scheme_str_to_py_list(scheme_eval_str))
else:
fields_info = self.field_info().get_scalar_fields_info()
fields_info = self.field_data().scalar_fields()
return get_si_unit_for_fluent_quantity(fields_info[field]["quantity_name"])

def _field_unit_quantity(self, field):
Expand All @@ -180,7 +179,7 @@ def _field_unit_quantity(self, field):
def _scheme_str_to_py_list(self, scheme_eval_str):
session = self.obj.get_root().session
if hasattr(session, "scheme_eval"):
str_val = session.scheme_eval.string_eval(scheme_eval_str)
str_val = session.scheme.string_eval(scheme_eval_str)
return list(filter(None, re.split(r'[\s()"\']', str_val)))
else:
return ["*null*"]
68 changes: 27 additions & 41 deletions src/ansys/fluent/interface/post_objects/post_object_definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class monitor_set_name(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Monitor set allowed values."""
return self.session.monitors.get_monitor_set_names()
return self.monitors.get_monitor_set_names()


class XYPlotDefn(PlotDefn):
Expand Down Expand Up @@ -138,7 +138,7 @@ class y_axis_function(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Y axis function allowed values."""
return list(self.session.field_info.get_scalar_fields_info())
return list(self.field_data.scalar_fields())

class x_axis_function(metaclass=PyLocalPropertyMeta):
"""X Axis Function."""
Expand All @@ -158,7 +158,7 @@ class surfaces(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Surface list allowed values."""
return list(self.session.field_info.get_surfaces_info()) + list(
return list(self.field_data.surfaces()) + list(
self.get_root()._local_surfaces_provider()
)

Expand All @@ -176,7 +176,7 @@ class surfaces(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Surface list allowed values."""
return list(self.session.field_info.get_surfaces_info()) + list(
return list(self.field_data.surfaces()) + list(
self.get_root()._local_surfaces_provider()
)

Expand Down Expand Up @@ -209,7 +209,7 @@ class field(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Field allowed values."""
return list(self.session.field_info.get_scalar_fields_info())
return list(self.field_data.scalar_fields())

class surfaces(metaclass=PyLocalPropertyMeta):
"""List of surfaces for pathlines."""
Expand All @@ -219,7 +219,7 @@ class surfaces(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Surface list allowed values."""
return list(self.session.field_info.get_surfaces_info()) + list(
return list(self.field_data.surfaces()) + list(
self.get_root()._local_surfaces_provider()
)

Expand Down Expand Up @@ -286,9 +286,7 @@ class x(metaclass=PyLocalPropertyMeta):
@Attribute
def range(self):
"""X value range."""
return self.session.field_info.get_scalar_field_range(
"x-coordinate", True
)
return self.field_data.scalar_fields.range("x-coordinate", True)

class y(metaclass=PyLocalPropertyMeta):
"""Y value."""
Expand All @@ -298,9 +296,7 @@ class y(metaclass=PyLocalPropertyMeta):
@Attribute
def range(self):
"""Y value range."""
return self.session.field_info.get_scalar_field_range(
"y-coordinate", True
)
return self.field_data.scalar_fields.range("y-coordinate", True)

class z(metaclass=PyLocalPropertyMeta):
"""Z value."""
Expand All @@ -310,9 +306,7 @@ class z(metaclass=PyLocalPropertyMeta):
@Attribute
def range(self):
"""Z value range."""
return self.session.field_info.get_scalar_field_range(
"z-coordinate", True
)
return self.field_data.scalar_fields.range("z-coordinate", True)

class normal(metaclass=PyLocalObjectMeta):
"""Normal entry for point-and-normal surface."""
Expand Down Expand Up @@ -368,9 +362,7 @@ class z(metaclass=PyLocalPropertyMeta):
@Attribute
def range(self):
"""Z value range."""
return self.session.field_info.get_scalar_field_range(
"z-coordinate", True
)
return self.field_data.scalar_fields.range("z-coordinate", True)

class yz_plane(metaclass=PyLocalObjectMeta):
"""YZ Plane definition."""
Expand All @@ -388,9 +380,7 @@ class x(metaclass=PyLocalPropertyMeta):
@Attribute
def range(self):
"""X value range."""
return self.session.field_info.get_scalar_field_range(
"x-coordinate", True
)
return self.field_data.scalar_fields.range("x-coordinate", True)

class zx_plane(metaclass=PyLocalObjectMeta):
"""ZX Plane definition."""
Expand All @@ -408,9 +398,7 @@ class y(metaclass=PyLocalPropertyMeta):
@Attribute
def range(self):
"""Y value range."""
return self.session.field_info.get_scalar_field_range(
"y-coordinate", True
)
return self.field_data.scalar_fields.range("y-coordinate", True)

class iso_surface(metaclass=PyLocalObjectMeta):
"""Iso surface definition."""
Expand All @@ -428,7 +416,7 @@ class field(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Field allowed values."""
return list(self.session.field_info.get_scalar_fields_info())
return list(self.field_data.scalar_fields())

class rendering(metaclass=PyLocalPropertyMeta):
"""Iso surface rendering."""
Expand Down Expand Up @@ -465,9 +453,7 @@ def range(self):
"""Iso value range."""
field = self._parent.field()
if field:
return self.session.field_info.get_scalar_field_range(
field, True
)
return self.field_data.scalar_fields.range(field, True)


class ContourDefn(GraphicsDefn):
Expand All @@ -483,7 +469,7 @@ class field(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Field allowed values."""
return list(self.session.field_info.get_scalar_fields_info())
return list(self.field_data.scalar_fields())

class surfaces(metaclass=PyLocalPropertyMeta):
"""Contour surfaces."""
Expand All @@ -493,7 +479,7 @@ class surfaces(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Surfaces list allowed values."""
return list(self.session.field_info.get_surfaces_info()) + list(
return list(self.field_data.surfaces()) + list(
self.get_root()._local_surfaces_provider()
)

Expand Down Expand Up @@ -607,8 +593,8 @@ def value(self):
if getattr(self, "_value", None) is None:
field = self.get_ancestors_by_type(ContourDefn).field()
if field:
field_info = self.session.field_info
field_range = field_info.get_scalar_field_range(
field_data = self.field_data
field_range = field_data.scalar_fields.range(
field,
self.get_ancestors_by_type(ContourDefn).node_values(),
)
Expand Down Expand Up @@ -636,8 +622,8 @@ def value(self):
if getattr(self, "_value", None) is None:
field = self.get_ancestors_by_type(ContourDefn).field()
if field:
field_info = self.session.field_info
field_range = field_info.get_scalar_field_range(
field_data = self.field_data
field_range = field_data.scalar_fields.range(
field,
self.get_ancestors_by_type(ContourDefn).node_values(),
)
Expand All @@ -663,7 +649,7 @@ class vectors_of(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Vectors of allowed values."""
return list(self.session.field_info.get_vector_fields_info())
return list(self.field_data.vectors())

class field(metaclass=PyLocalPropertyMeta):
"""Vector color field."""
Expand All @@ -673,7 +659,7 @@ class field(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Field allowed values."""
return list(self.session.field_info.get_scalar_fields_info())
return list(self.field_data.scalar_fields())

class surfaces(metaclass=PyLocalPropertyMeta):
"""List of surfaces for vector graphics."""
Expand All @@ -683,7 +669,7 @@ class surfaces(metaclass=PyLocalPropertyMeta):
@Attribute
def allowed_values(self):
"""Surface list allowed values."""
return list(self.session.field_info.get_surfaces_info()) + list(
return list(self.field_data.surfaces()) + list(
self.get_root()._local_surfaces_provider()
)

Expand Down Expand Up @@ -750,8 +736,8 @@ class minimum(metaclass=PyLocalPropertyMeta):
def value(self):
"""Range minimum property setter."""
if getattr(self, "_value", None) is None:
field_info = self.session.field_info
field_range = field_info.get_scalar_field_range(
field_data = self.field_data
field_range = field_data.scalar_fields.range(
"velocity-magnitude",
False,
)
Expand All @@ -771,8 +757,8 @@ class maximum(metaclass=PyLocalPropertyMeta):
def value(self):
"""Range maximum property setter."""
if getattr(self, "_value", None) is None:
field_info = self.session.field_info
field_range = field_info.get_scalar_field_range(
field_data = self.field_data
field_range = field_data.scalar_fields.range(
"velocity-magnitude",
False,
)
Expand Down
28 changes: 10 additions & 18 deletions src/ansys/fluent/visualization/graphics/graphics_windows_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,28 +276,22 @@ def _fetch_monitor_data(self, obj):
"yscale": "log" if monitor_set_name == "residual" else "linear",
}

@staticmethod
def _pack_faces_connectivity_data(faces_data):
flat = []
for face in faces_data:
flat.append(len(face))
flat.extend(face)
return np.array(flat)

def _resolve_mesh_data(self, mesh_data):
if mesh_data.connectivity[0].shape[0] == 2: # Line
if mesh_data.connectivity.size == 0:
return pv.PolyData()
if mesh_data.connectivity[0] == 2: # Line
return pv.PolyData(
mesh_data.vertices,
lines=self._pack_faces_connectivity_data(mesh_data.connectivity),
lines=mesh_data.connectivity,
)
else: # Face
return pv.PolyData(
mesh_data.vertices,
faces=self._pack_faces_connectivity_data(mesh_data.connectivity),
faces=mesh_data.connectivity,
)

def _display_vector(self, obj, obj_dict):
field_info = obj.session.field_info
field_data = obj.session.field_data
vectors_of = obj.vectors_of()
# scalar bar properties
try:
Expand Down Expand Up @@ -339,7 +333,7 @@ def _display_vector(self, obj, obj_dict):
else:
auto_range_on = obj.range.auto_range_on
if auto_range_on.global_range():
range_ = field_info.get_scalar_field_range(obj.field(), False)
range_ = field_data.scalar_fields.range(obj.field(), False)
else:
range_ = [np.min(scalar_field), np.max(scalar_field)]

Expand Down Expand Up @@ -404,7 +398,7 @@ def _display_pathlines(self, obj, obj_dict):

mesh = pv.PolyData(
surface_data.vertices,
lines=self._pack_faces_connectivity_data(surface_data.lines),
lines=surface_data.lines,
)

mesh.point_data[field] = surface_data.scalar_field
Expand Down Expand Up @@ -527,12 +521,10 @@ def _display_contour(self, obj, obj_dict):
auto_range_on = obj.range.auto_range_on
if auto_range_on.global_range():
if filled:
field_info = obj.session.field_info
field_data = obj.session.field_data
_mesh_dict = {
"data": mesh,
"clim": field_info.get_scalar_field_range(
obj.field(), False
),
"clim": field_data.scalar_fields.range(obj.field(), False),
"scalars": field,
"show_edges": obj.show_edges(),
"scalar_bar_args": scalar_bar_args,
Expand Down
5 changes: 3 additions & 2 deletions src/ansys/fluent/visualization/graphics/pyvista/renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,9 @@ def render(self, meshes: list[list[dict]]):
)
del mesh_dict["position"]
if isinstance(mesh, pv.DataSet):
mesh_dict.update(mesh_dict.pop("kwargs"))
self.plotter.add_mesh(mesh, **mesh_dict)
if mesh.n_points > 0:
mesh_dict.update(mesh_dict.pop("kwargs"))
self.plotter.add_mesh(mesh, **mesh_dict)
else:
y_range = None
chart = pv.Chart2D()
Expand Down
Loading
Loading