ansys-fluent-visualization 0.21.dev0__tar.gz → 0.21.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/PKG-INFO +1 -1
  2. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/pyproject.toml +1 -1
  3. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/post_objects/meta.py +0 -18
  4. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/post_objects/post_object_definitions.py +19 -8
  5. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/__init__.py +1 -1
  6. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/config.py +2 -2
  7. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/containers.py +1 -1
  8. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/graphics/graphics_windows_manager.py +7 -3
  9. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/matplotlib/plotter_defns.py +3 -1
  10. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/plotter_windows_manager.py +27 -9
  11. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/post_data_extractor.py +10 -10
  12. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/AUTHORS +0 -0
  13. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/LICENSE +0 -0
  14. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/README.rst +0 -0
  15. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/__init__.py +0 -0
  16. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/post_objects/__init__.py +0 -0
  17. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/post_objects/check_in_notebook.py +0 -0
  18. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/post_objects/post_helper.py +0 -0
  19. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/post_objects/post_objects_container.py +0 -0
  20. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/interface/post_objects/singleton_meta.py +0 -0
  21. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/abstract_renderer_defn.py +0 -0
  22. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/contour.py +0 -0
  23. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/graphics/__init__.py +0 -0
  24. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/graphics/graphics_objects.py +0 -0
  25. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/graphics/graphics_windows.py +0 -0
  26. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/graphics/pyvista/__init__.py +0 -0
  27. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/graphics/pyvista/graphics_defns.py +0 -0
  28. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/matplotlib/__init__.py +0 -0
  29. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/__init__.py +0 -0
  30. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/matplotlib/__init__.py +0 -0
  31. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/plotter_objects.py +0 -0
  32. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/plotter_windows.py +0 -0
  33. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/pyvista/__init__.py +0 -0
  34. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/plotter/pyvista/plotter_defns.py +0 -0
  35. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/pyvista/__init__.py +0 -0
  36. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/registrar.py +0 -0
  37. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/renderer.py +0 -0
  38. {ansys_fluent_visualization-0.21.dev0 → ansys_fluent_visualization-0.21.dev1}/src/ansys/fluent/visualization/visualization_windows_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ansys-fluent-visualization
3
- Version: 0.21.dev0
3
+ Version: 0.21.dev1
4
4
  Summary: A python wrapper for ansys Fluent visualization
5
5
  License: MIT
6
6
  Author: ANSYS, Inc.
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
5
5
  [tool.poetry]
6
6
  # Check https://python-poetry.org/docs/pyproject/ for all available sections
7
7
  name = "ansys-fluent-visualization"
8
- version = "0.21.dev0"
8
+ version = "0.21.dev1"
9
9
  description = "A python wrapper for ansys Fluent visualization"
10
10
  license = "MIT"
11
11
  authors = ["ANSYS, Inc. <ansys.support@ansys.com>"]
@@ -25,7 +25,6 @@
25
25
  from abc import ABCMeta
26
26
  from collections.abc import MutableMapping
27
27
  import inspect
28
- from pprint import pformat
29
28
  from typing import List
30
29
 
31
30
  from ansys.fluent.core.exceptions import DisallowedValuesError, InvalidArgument
@@ -357,18 +356,9 @@ class PyLocalPropertyMeta(PyLocalBaseMeta):
357
356
 
358
357
  return wrapper
359
358
 
360
- @classmethod
361
- def __create_repr(cls):
362
- def wrapper(self):
363
- data = self()
364
- return f"{data}"
365
-
366
- return wrapper
367
-
368
359
  def __new__(cls, name, bases, attrs):
369
360
  attrs["__init__"] = cls.__create_init()
370
361
  attrs["__call__"] = cls.__create_get_state()
371
- attrs["__repr__"] = cls.__create_repr()
372
362
  attrs["_validate"] = cls.__create_validate()
373
363
  attrs["_register_on_change_cb"] = cls.__create_register_on_change()
374
364
  attrs["set_state"] = cls.__create_set_state()
@@ -624,20 +614,12 @@ class PyLocalObjectMeta(PyLocalBaseMeta):
624
614
 
625
615
  return wrapper
626
616
 
627
- @classmethod
628
- def __create_repr(cls):
629
- def wrapper(self):
630
- return pformat(self(True), depth=1, indent=2)
631
-
632
- return wrapper
633
-
634
617
  def __new__(cls, name, bases, attrs):
635
618
  attrs["__getattribute__"] = cls.__create_getattribute()
636
619
  attrs["__init__"] = attrs.get("__init__", cls.__create_init())
637
620
  if "__call__" not in attrs:
638
621
  attrs["__call__"] = cls.__create_get_state()
639
622
  attrs["__setattr__"] = cls.__create_setattr()
640
- # attrs["__repr__"] = cls.__create_repr()
641
623
  attrs["update"] = cls.__create_updateitem()
642
624
  return super(PyLocalObjectMeta, cls).__new__(cls, name, bases, attrs)
643
625
 
@@ -425,22 +425,33 @@ class ContourDefn(GraphicsDefn):
425
425
 
426
426
  _value: bool = True
427
427
 
428
- @property
429
- def value(self):
430
- """Node value property setter."""
428
+ @Attribute
429
+ def is_active(self):
430
+ """Check whether current object is active or not."""
431
431
  filled = self.get_ancestors_by_type(ContourDefn).filled()
432
432
  auto_range_off = self.get_ancestors_by_type(
433
433
  ContourDefn
434
434
  ).range.auto_range_off
435
- if not filled or (auto_range_off and auto_range_off.clip_to_range()):
436
- logger.warning(
437
- "For unfilled and clipped contours node values are displayed."
438
- )
439
- self._value = True
435
+ if (
436
+ filled is False
437
+ or (auto_range_off and auto_range_off.clip_to_range()) is True
438
+ ):
439
+ return False
440
+ return True
441
+
442
+ @property
443
+ def value(self):
444
+ """Node value property setter."""
445
+ if self.is_active is False:
446
+ return True
440
447
  return self._value
441
448
 
442
449
  @value.setter
443
450
  def value(self, value):
451
+ if value is False and self.is_active is False:
452
+ raise ValueError(
453
+ "For unfilled and clipped contours, node values must be displayed. "
454
+ )
444
455
  self._value = value
445
456
 
446
457
  class boundary_values(metaclass=PyLocalPropertyMeta):
@@ -27,7 +27,7 @@ try:
27
27
  except ModuleNotFoundError:
28
28
  import importlib_metadata
29
29
 
30
- _VERSION_INFO = "Build date: May 29, 2025 14:16 UTC ShaID: ed02408"
30
+ _VERSION_INFO = "Build date: June 13, 2025 08:20 UTC ShaID: d5c70c4"
31
31
  __version__ = importlib_metadata.version(__name__.replace(".", "-"))
32
32
 
33
33
 
@@ -20,8 +20,8 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
  """Configuration variables for visualization."""
23
-
24
23
  from enum import Enum
24
+ import os
25
25
  import warnings
26
26
 
27
27
  from ansys.fluent.core import PyFluentDeprecationWarning
@@ -46,7 +46,7 @@ class Config:
46
46
 
47
47
  def __init__(self):
48
48
  """__init__ method of Config class."""
49
- self._interactive = True
49
+ self._interactive = os.getenv("PYFLUENT_VIZ_BLOCKING") != "1"
50
50
  self._view = View.ISOMETRIC
51
51
  self._single_window = False
52
52
  self._two_dimensional_renderer = "pyvista"
@@ -46,7 +46,7 @@ class Mesh(_GraphicsContainer):
46
46
  >>> # `solver_session` is a live Fluent session with a case
47
47
  >>> # and data which contains the following surfaces
48
48
 
49
- >>> mesh_object = Mesh(
49
+ >>> mesh = Mesh(
50
50
  >>> solver=solver_session, show_edges=True, surfaces=["in1", "in2", "in3"]
51
51
  >>> )
52
52
  """
@@ -333,7 +333,7 @@ class GraphicsWindow(VisualizationWindow):
333
333
  mesh.cell_data[field] = scalar_field
334
334
  glyphs = mesh.glyph(
335
335
  orient="vectors",
336
- scale="Velocity Magnitude",
336
+ scale=False,
337
337
  factor=vector_scale * obj.scale(),
338
338
  geom=pv.Arrow(),
339
339
  )
@@ -658,7 +658,7 @@ class GraphicsWindowsManager(metaclass=AbstractSingletonMeta):
658
658
  def refresh_windows(
659
659
  self,
660
660
  session_id: Optional[str] = "",
661
- windows_id: Optional[List[str]] = [],
661
+ windows_id=None,
662
662
  overlay: Optional[bool] = False,
663
663
  ) -> None:
664
664
  """Refresh windows.
@@ -675,6 +675,8 @@ class GraphicsWindowsManager(metaclass=AbstractSingletonMeta):
675
675
  overlay : bool, Optional
676
676
  Overlay graphics over existing graphics.
677
677
  """
678
+ if windows_id is None:
679
+ windows_id = []
678
680
  with self._condition:
679
681
  windows_id = self._get_windows_id(session_id, windows_id)
680
682
  for window_id in windows_id:
@@ -748,8 +750,10 @@ class GraphicsWindowsManager(metaclass=AbstractSingletonMeta):
748
750
  def _get_windows_id(
749
751
  self,
750
752
  session_id: Optional[str] = "",
751
- windows_id: Optional[List[str]] = [],
753
+ windows_id=None,
752
754
  ) -> List[str]:
755
+ if windows_id is None:
756
+ windows_id = []
753
757
  with self._condition:
754
758
  return [
755
759
  window_id
@@ -92,7 +92,7 @@ class Plotter(AbstractRenderer):
92
92
  return ret
93
93
 
94
94
  def render(
95
- self, data: dict, grid=(1, 1), position=0, show=True, subplot_titles=[]
95
+ self, data: dict, grid=(1, 1), position=0, show=True, subplot_titles=None
96
96
  ) -> None:
97
97
  """Draw plot in window.
98
98
 
@@ -102,6 +102,8 @@ class Plotter(AbstractRenderer):
102
102
  Data to plot. Data consists the list of x and y
103
103
  values for each curve.
104
104
  """
105
+ if subplot_titles is None:
106
+ subplot_titles = []
105
107
  if not data:
106
108
  return
107
109
  for curve in data:
@@ -64,7 +64,9 @@ class _ProcessPlotterHandle:
64
64
  self.plot_process.start()
65
65
  FluentConnection._monitor_thread.cbs.append(self.close)
66
66
 
67
- def render(self, data, grid=(1, 1), position=0, show=True, subplot_titles=[]):
67
+ def render(self, data, grid=(1, 1), position=0, show=True, subplot_titles=None):
68
+ if subplot_titles is None:
69
+ subplot_titles = []
68
70
  self.plot_pipe.send(
69
71
  {"data": data, "grid": grid, "position": position, "show": show}
70
72
  )
@@ -116,8 +118,10 @@ class PlotterWindow(VisualizationWindow):
116
118
  self.close: bool = False
117
119
  self.refresh: bool = False
118
120
 
119
- def plot(self, grid=(1, 1), position=(0, 0), show=True, subplot_titles=[]):
121
+ def plot(self, grid=(1, 1), position=(0, 0), show=True, subplot_titles=None):
120
122
  """Draw a plot."""
123
+ if subplot_titles is None:
124
+ subplot_titles = []
121
125
  if self.post_object is not None:
122
126
  plot = (
123
127
  _XYPlot(self.post_object, self.plotter)
@@ -178,8 +182,10 @@ class _XYPlot:
178
182
  self.post_object: XYPlotDefn = post_object
179
183
  self.plotter: Union[_ProcessPlotterHandle, "Plotter"] = plotter
180
184
 
181
- def __call__(self, grid=(1, 1), position=0, show=True, subplot_titles=[]):
185
+ def __call__(self, grid=(1, 1), position=0, show=True, subplot_titles=None):
182
186
  """Draw an XY plot."""
187
+ if subplot_titles is None:
188
+ subplot_titles = []
183
189
  if not self.post_object:
184
190
  return
185
191
  xy_data = XYPlotDataExtractor(self.post_object).fetch_data()
@@ -226,8 +232,10 @@ class _MonitorPlot:
226
232
  self.post_object: MonitorDefn = post_object
227
233
  self.plotter: Union[_ProcessPlotterHandle, "Plotter"] = plotter
228
234
 
229
- def __call__(self, grid=(1, 1), position=(0, 0), show=True, subplot_titles=[]):
235
+ def __call__(self, grid=(1, 1), position=(0, 0), show=True, subplot_titles=None):
230
236
  """Draw a monitor plot."""
237
+ if subplot_titles is None:
238
+ subplot_titles = []
231
239
  if not self.post_object:
232
240
  return
233
241
  monitors = self.post_object.session.monitors
@@ -321,7 +329,7 @@ class PlotterWindowsManager(
321
329
  window_id: Optional[str] = None,
322
330
  grid=(1, 1),
323
331
  position=(0, 0),
324
- subplot_titles=[],
332
+ subplot_titles=None,
325
333
  show=True,
326
334
  ) -> None:
327
335
  """Draw a plot.
@@ -339,6 +347,8 @@ class PlotterWindowsManager(
339
347
  RuntimeError
340
348
  If the window does not support the object.
341
349
  """
350
+ if subplot_titles is None:
351
+ subplot_titles = []
342
352
  if not isinstance(object, PlotDefn):
343
353
  raise RuntimeError("Object is not implemented.")
344
354
  if not window_id:
@@ -380,7 +390,7 @@ class PlotterWindowsManager(
380
390
  def refresh_windows(
381
391
  self,
382
392
  session_id: Optional[str] = "",
383
- windows_id: Optional[List[str]] = [],
393
+ windows_id=None,
384
394
  overlay: Optional[bool] = None,
385
395
  ) -> None:
386
396
  """Refresh windows.
@@ -395,6 +405,8 @@ class PlotterWindowsManager(
395
405
  IDs of the windows to refresh. The default is ``[]``, in which case
396
406
  all windows are refreshed.
397
407
  """
408
+ if windows_id is None:
409
+ windows_id = []
398
410
  windows_id = self._get_windows_id(session_id, windows_id)
399
411
  for window_id in windows_id:
400
412
  window = self._post_windows.get(window_id)
@@ -405,7 +417,7 @@ class PlotterWindowsManager(
405
417
  def animate_windows(
406
418
  self,
407
419
  session_id: Optional[str] = "",
408
- windows_id: Optional[List[str]] = [],
420
+ windows_id=None,
409
421
  ) -> None:
410
422
  """Animate windows.
411
423
 
@@ -423,12 +435,14 @@ class PlotterWindowsManager(
423
435
  NotImplementedError
424
436
  If not implemented.
425
437
  """
438
+ if windows_id is None:
439
+ windows_id = []
426
440
  raise NotImplementedError("animate_windows not implemented.")
427
441
 
428
442
  def close_windows(
429
443
  self,
430
444
  session_id: Optional[str] = "",
431
- windows_id: Optional[List[str]] = [],
445
+ windows_id=None,
432
446
  ) -> None:
433
447
  """Close windows.
434
448
 
@@ -442,6 +456,8 @@ class PlotterWindowsManager(
442
456
  List of IDs for the windows to close. The default is ``[]``, in which
443
457
  all windows are closed.
444
458
  """
459
+ if windows_id is None:
460
+ windows_id = []
445
461
  windows_id = self._get_windows_id(session_id, windows_id)
446
462
  for window_id in windows_id:
447
463
  window = self._post_windows.get(window_id)
@@ -468,8 +484,10 @@ class PlotterWindowsManager(
468
484
  def _get_windows_id(
469
485
  self,
470
486
  session_id: Optional[str] = "",
471
- windows_id: Optional[List[str]] = [],
487
+ windows_id=None,
472
488
  ) -> List[str]:
489
+ if windows_id is None:
490
+ windows_id = []
473
491
  return [
474
492
  window_id
475
493
  for window_id in [
@@ -87,8 +87,8 @@ class FieldDataExtractor:
87
87
  if not obj.surfaces():
88
88
  raise RuntimeError("Mesh definition is incomplete.")
89
89
  obj._pre_display()
90
- field_info = obj.session.field_info
91
- field_data = obj.session.field_data
90
+ field_info = obj.session.fields.field_info
91
+ field_data = obj.session.fields.field_data
92
92
  transaction = field_data.new_transaction()
93
93
  surfaces_info = field_info.get_surfaces_info()
94
94
  surface_ids = [
@@ -147,8 +147,8 @@ class FieldDataExtractor:
147
147
  node_values = obj.node_values()
148
148
  boundary_values = obj.boundary_values()
149
149
 
150
- field_info = obj.session.field_info
151
- field_data = obj.session.field_data
150
+ field_info = obj.session.fields.field_info
151
+ field_data = obj.session.fields.field_data
152
152
  transaction = field_data.new_transaction()
153
153
  surfaces_info = field_info.get_surfaces_info()
154
154
  surface_ids = [
@@ -189,8 +189,8 @@ class FieldDataExtractor:
189
189
  obj._pre_display()
190
190
  field = obj.field()
191
191
 
192
- field_info = obj.session.field_info
193
- field_data = obj.session.field_data
192
+ field_info = obj.session.fields.field_info
193
+ field_data = obj.session.fields.field_data
194
194
  surfaces_info = field_info.get_surfaces_info()
195
195
  transaction = field_data.new_transaction()
196
196
  surface_ids = [
@@ -219,8 +219,8 @@ class FieldDataExtractor:
219
219
  field = obj.field()
220
220
  if not field:
221
221
  field = obj.field = "velocity-magnitude"
222
- field_info = obj.session.field_info
223
- field_data = obj.session.field_data
222
+ field_info = obj.session.fields.field_info
223
+ field_data = obj.session.fields.field_data
224
224
 
225
225
  transaction = field_data.new_transaction()
226
226
 
@@ -303,8 +303,8 @@ class XYPlotDataExtractor:
303
303
  boundary_values = obj.boundary_values()
304
304
  direction_vector = obj.direction_vector()
305
305
  surfaces = obj.surfaces()
306
- field_info = obj.session.field_info
307
- field_data = obj.session.field_data
306
+ field_info = obj.session.fields.field_info
307
+ field_data = obj.session.fields.field_data
308
308
  transaction = field_data.new_transaction()
309
309
  surfaces_info = field_info.get_surfaces_info()
310
310
  surface_ids = [