ansys-fluent-core 0.28.dev0__py3-none-any.whl → 0.28.2__py3-none-any.whl

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.

Potentially problematic release.


This version of ansys-fluent-core might be problematic. Click here for more details.

Files changed (63) hide show
  1. ansys/fluent/core/__init__.py +15 -16
  2. ansys/fluent/core/_version.py +1 -1
  3. ansys/fluent/core/codegen/allapigen.py +0 -3
  4. ansys/fluent/core/codegen/builtin_settingsgen.py +5 -20
  5. ansys/fluent/core/codegen/print_fluent_version.py +9 -14
  6. ansys/fluent/core/codegen/walk_api.py +57 -0
  7. ansys/fluent/core/fluent_connection.py +26 -22
  8. ansys/fluent/core/generated/api_tree/api_objects.json +1 -1
  9. ansys/fluent/core/generated/datamodel_252/meshing.py +21 -0
  10. ansys/fluent/core/generated/datamodel_252/preferences.py +14 -0
  11. ansys/fluent/core/generated/fluent_version_252.py +3 -3
  12. ansys/fluent/core/generated/meshing/tui_252.py +1451 -1396
  13. ansys/fluent/core/generated/solver/settings_252.py +9300 -6625
  14. ansys/fluent/core/generated/solver/settings_252.pyi +6625 -5423
  15. ansys/fluent/core/generated/solver/tui_252.py +5898 -5057
  16. ansys/fluent/core/journaling.py +4 -4
  17. ansys/fluent/core/launcher/fluent_container.py +31 -7
  18. ansys/fluent/core/launcher/launcher.py +3 -2
  19. ansys/fluent/core/launcher/launcher_utils.py +9 -0
  20. ansys/fluent/core/launcher/process_launch_string.py +8 -6
  21. ansys/fluent/core/launcher/pyfluent_enums.py +6 -3
  22. ansys/fluent/core/launcher/server_info.py +25 -2
  23. ansys/fluent/core/launcher/slurm_launcher.py +6 -3
  24. ansys/fluent/core/launcher/standalone_launcher.py +11 -9
  25. ansys/fluent/core/post_objects/post_helper.py +16 -10
  26. ansys/fluent/core/services/__init__.py +2 -0
  27. ansys/fluent/core/services/api_upgrade.py +11 -9
  28. ansys/fluent/core/services/app_utilities.py +408 -0
  29. ansys/fluent/core/services/datamodel_se.py +172 -58
  30. ansys/fluent/core/services/datamodel_tui.py +5 -2
  31. ansys/fluent/core/services/field_data.py +1 -0
  32. ansys/fluent/core/services/reduction.py +2 -0
  33. ansys/fluent/core/services/settings.py +5 -2
  34. ansys/fluent/core/session.py +27 -4
  35. ansys/fluent/core/session_pure_meshing.py +1 -1
  36. ansys/fluent/core/session_solver.py +0 -1
  37. ansys/fluent/core/solver/__init__.py +6 -0
  38. ansys/fluent/core/solver/flobject.py +15 -27
  39. ansys/fluent/core/solver/function/reduction.py +3 -0
  40. ansys/fluent/core/solver/settings_builtin_data.py +1 -1
  41. ansys/fluent/core/streaming_services/datamodel_event_streaming.py +13 -13
  42. ansys/fluent/core/streaming_services/events_streaming.py +336 -52
  43. ansys/fluent/tests/conftest.py +30 -0
  44. ansys/fluent/tests/test_builtin_settings.py +1 -1
  45. ansys/fluent/tests/test_codegen.py +0 -410
  46. ansys/fluent/tests/test_datamodel_api.py +429 -0
  47. ansys/fluent/tests/test_datamodel_service.py +64 -64
  48. ansys/fluent/tests/test_events_manager.py +24 -6
  49. ansys/fluent/tests/test_field_data.py +32 -0
  50. ansys/fluent/tests/test_launcher.py +30 -2
  51. ansys/fluent/tests/test_mapped_api.py +766 -0
  52. ansys/fluent/tests/test_reduction.py +30 -0
  53. ansys/fluent/tests/test_session.py +16 -1
  54. ansys/fluent/tests/test_settings_api.py +21 -0
  55. ansys/fluent/tests/test_solution_variables.py +27 -0
  56. ansys/fluent/tests/util/__init__.py +36 -0
  57. {ansys_fluent_core-0.28.dev0.dist-info → ansys_fluent_core-0.28.2.dist-info}/METADATA +4 -3
  58. {ansys_fluent_core-0.28.dev0.dist-info → ansys_fluent_core-0.28.2.dist-info}/RECORD +61 -58
  59. {ansys_fluent_core-0.28.dev0.dist-info → ansys_fluent_core-0.28.2.dist-info}/WHEEL +1 -1
  60. ansys/fluent/core/codegen/settingsgen_old.py +0 -535
  61. ansys/fluent/tests/fluent/test_version/test.py +0 -2
  62. {ansys_fluent_core-0.28.dev0.dist-info → ansys_fluent_core-0.28.2.dist-info}/AUTHORS +0 -0
  63. {ansys_fluent_core-0.28.dev0.dist-info → ansys_fluent_core-0.28.2.dist-info}/LICENSE +0 -0
@@ -10,6 +10,7 @@ import weakref
10
10
  from ansys.fluent.core.fluent_connection import FluentConnection
11
11
  from ansys.fluent.core.journaling import Journal
12
12
  from ansys.fluent.core.services import service_creator
13
+ from ansys.fluent.core.services.app_utilities import AppUtilitiesOld
13
14
  from ansys.fluent.core.services.field_data import FieldDataService
14
15
  from ansys.fluent.core.services.scheme_eval import SchemeEval
15
16
  from ansys.fluent.core.streaming_services.datamodel_event_streaming import (
@@ -52,6 +53,17 @@ class _IsDataValid:
52
53
  return self._scheme_eval.scheme_eval("(data-valid?)")
53
54
 
54
55
 
56
+ class _AppUtilitiesFactory:
57
+ """AppUtilities factory."""
58
+
59
+ @staticmethod
60
+ def _create_app_utilities(scheme_eval, fluent_connection):
61
+ if FluentVersion(scheme_eval.version) < FluentVersion.v252:
62
+ return AppUtilitiesOld(scheme_eval)
63
+ else:
64
+ return fluent_connection._connection_interface._app_utilities
65
+
66
+
55
67
  class BaseSession:
56
68
  """Encapsulates a Fluent session.
57
69
 
@@ -124,7 +136,6 @@ class BaseSession:
124
136
  self.scheme_eval = scheme_eval
125
137
  self.rp_vars = RPVars(self.scheme_eval.string_eval)
126
138
  self._preferences = None
127
- self.journal = Journal(self.scheme_eval)
128
139
 
129
140
  self._transcript_service = service_creator("transcript").create(
130
141
  fluent_connection._channel, fluent_connection._metadata
@@ -133,10 +144,17 @@ class BaseSession:
133
144
  if self._start_transcript:
134
145
  self.transcript.start()
135
146
 
147
+ self._app_utilities = _AppUtilitiesFactory._create_app_utilities(
148
+ self.scheme_eval, self._fluent_connection
149
+ )
150
+
151
+ self.journal = Journal(self._app_utilities)
152
+
136
153
  self._datamodel_service_tui = service_creator("tui").create(
137
154
  fluent_connection._channel,
138
155
  fluent_connection._metadata,
139
156
  self._error_state,
157
+ self._app_utilities,
140
158
  self.scheme_eval,
141
159
  )
142
160
 
@@ -175,13 +193,17 @@ class BaseSession:
175
193
 
176
194
  def __init__(self, _session):
177
195
  """Initialize Fields."""
196
+ self._is_solution_data_valid = (
197
+ _session._app_utilities.is_solution_data_available
198
+ )
178
199
  self.field_info = service_creator("field_info").create(
179
- _session._field_data_service, _IsDataValid(_session.scheme_eval)
200
+ _session._field_data_service,
201
+ self._is_solution_data_valid,
180
202
  )
181
203
  self.field_data = service_creator("field_data").create(
182
204
  _session._field_data_service,
183
205
  self.field_info,
184
- _IsDataValid(_session.scheme_eval),
206
+ self._is_solution_data_valid,
185
207
  _session.scheme_eval,
186
208
  )
187
209
  self.field_data_streaming = FieldDataStreaming(
@@ -190,7 +212,7 @@ class BaseSession:
190
212
  self.field_data_old = service_creator("field_data_old").create(
191
213
  _session._field_data_service,
192
214
  self.field_info,
193
- _IsDataValid(_session.scheme_eval),
215
+ self._is_solution_data_valid,
194
216
  _session.scheme_eval,
195
217
  )
196
218
 
@@ -199,6 +221,7 @@ class BaseSession:
199
221
  self._settings_service = service_creator("settings").create(
200
222
  fluent_connection._channel,
201
223
  fluent_connection._metadata,
224
+ self._app_utilities,
202
225
  self.scheme_eval,
203
226
  self._error_state,
204
227
  )
@@ -156,7 +156,7 @@ class PureMeshing(BaseSession):
156
156
  RuntimeError
157
157
  If beta features are not enabled in Fluent.
158
158
  """
159
- if not self.scheme_eval.scheme_eval("(is-beta-feature-available?)"):
159
+ if not self._app_utilities.is_beta_enabled():
160
160
  raise RuntimeError("Topology-based Meshing is a beta feature in Fluent.")
161
161
  self._base_meshing.topology_based_meshing_workflow.initialize()
162
162
  return self._base_meshing.topology_based_meshing_workflow
@@ -117,7 +117,6 @@ class Solver(BaseSession):
117
117
  ):
118
118
  self._tui_service = self._datamodel_service_tui
119
119
  self._se_service = self._datamodel_service_se
120
- self._settings_service = self._settings_service
121
120
  self._tui = None
122
121
  self._workflow = None
123
122
  self._system_coupling = None
@@ -0,0 +1,6 @@
1
+ """The top-level module of PyFluent providing solver-related functionality."""
2
+
3
+ try:
4
+ from ansys.fluent.core.generated.solver.settings_builtin import * # noqa: F401, F403
5
+ except (ImportError, AttributeError, SyntaxError):
6
+ pass
@@ -46,7 +46,6 @@ from typing import (
46
46
  )
47
47
  import warnings
48
48
  import weakref
49
- from zipimport import zipimporter
50
49
 
51
50
  import ansys.fluent.core as pyfluent
52
51
  from ansys.fluent.core.utils.fluent_version import FluentVersion
@@ -470,6 +469,8 @@ class Base:
470
469
  return nullcontext()
471
470
 
472
471
  def __eq__(self, other):
472
+ if not isinstance(other, self.__class__):
473
+ return False
473
474
  return self.flproxy == other.flproxy and self.path == other.path
474
475
 
475
476
 
@@ -1164,7 +1165,7 @@ class WildcardPath(Group):
1164
1165
  except KeyError as ex:
1165
1166
  raise AttributeError(
1166
1167
  allowed_name_error_message(
1167
- context=self._state_cls.__name__,
1168
+ context=self._state_cls._python_name,
1168
1169
  trial_name=name,
1169
1170
  allowed_values=self.get_active_child_names(),
1170
1171
  )
@@ -1365,7 +1366,7 @@ class NamedObject(SettingsBase[DictStateType], Generic[ChildTypeT]):
1365
1366
  )
1366
1367
  raise KeyError(
1367
1368
  allowed_name_error_message(
1368
- context=self.__class__.__name__,
1369
+ context=self.__class__._python_name,
1369
1370
  trial_name=name,
1370
1371
  allowed_values=self.get_object_names(),
1371
1372
  )
@@ -1672,7 +1673,7 @@ class BaseCommand(Action):
1672
1673
  command_name=self.python_name, value=value, kwargs=kwds
1673
1674
  )
1674
1675
  if (
1675
- self.obj_name == "create"
1676
+ self.obj_name in ["create", "make-a-copy"]
1676
1677
  and isinstance(self._parent, NamedObject)
1677
1678
  and ret in self._parent
1678
1679
  ):
@@ -1909,7 +1910,7 @@ class _NonCreatableNamedObjectMixin(
1909
1910
  else:
1910
1911
  raise KeyError(
1911
1912
  allowed_name_error_message(
1912
- context=self.__class__.__name__,
1913
+ context=self.__class__._python_name,
1913
1914
  trial_name=name,
1914
1915
  allowed_values=self.get_object_names(),
1915
1916
  )
@@ -2161,30 +2162,17 @@ def get_root(
2161
2162
  RuntimeError
2162
2163
  If hash values are inconsistent.
2163
2164
  """
2164
- from ansys.fluent.core import CODEGEN_OUTDIR, CODEGEN_ZIP_SETTINGS, utils
2165
+ from ansys.fluent.core import CODEGEN_OUTDIR, utils
2165
2166
 
2166
- if os.getenv("PYFLUENT_USE_OLD_SETTINGSGEN") != "1":
2167
- try:
2168
- settings = utils.load_module(
2169
- f"settings_{version}",
2170
- CODEGEN_OUTDIR / "solver" / f"settings_{version}.py",
2171
- )
2172
- root_cls = settings.root
2173
- except FileNotFoundError:
2174
- obj_info = flproxy.get_static_info()
2175
- root_cls, _ = get_cls("", obj_info, version=version)
2176
- else:
2177
- if CODEGEN_ZIP_SETTINGS:
2178
- importer = zipimporter(
2179
- str(CODEGEN_OUTDIR / "solver" / f"settings_{version}.zip")
2180
- )
2181
- settings = importer.load_module("settings")
2182
- else:
2183
- settings = utils.load_module(
2184
- f"settings_{version}",
2185
- CODEGEN_OUTDIR / "solver" / f"settings_{version}" / "__init__.py",
2186
- )
2167
+ try:
2168
+ settings = utils.load_module(
2169
+ f"settings_{version}",
2170
+ CODEGEN_OUTDIR / "solver" / f"settings_{version}.py",
2171
+ )
2187
2172
  root_cls = settings.root
2173
+ except FileNotFoundError:
2174
+ obj_info = flproxy.get_static_info()
2175
+ root_cls, _ = get_cls("", obj_info, version=version)
2188
2176
  root = root_cls()
2189
2177
  root.set_flproxy(flproxy)
2190
2178
  root._set_on_interrupt(interrupt)
@@ -123,6 +123,9 @@ def _validate_locn_list(locn_list, ctxt):
123
123
 
124
124
 
125
125
  def _locns(locns, ctxt):
126
+ if locns == []:
127
+ # Raising 'RuntimeError' instead of 'ValueError' to address a limitation in the server-side implementation.
128
+ raise RuntimeError("No locations specified.")
126
129
  locn_names_and_objs = _locn_names_and_objs(locns)
127
130
  locn_list = []
128
131
  for name, obj in locn_names_and_objs:
@@ -1,6 +1,6 @@
1
1
  """Data for for builtin setting classes."""
2
2
 
3
- from ansys.fluent.core import FluentVersion
3
+ from ansys.fluent.core.utils.fluent_version import FluentVersion
4
4
 
5
5
  # {<class name>: (<kind>, <path>)}
6
6
  DATA = {
@@ -28,10 +28,10 @@ class DatamodelEvents(StreamingService):
28
28
  service.event_streaming = self
29
29
  self._lock = threading.RLock()
30
30
 
31
- def register_callback(self, tag: str, obj, cb: Callable):
31
+ def register_callback(self, tag: str, cb: Callable):
32
32
  """Register a callback."""
33
33
  with self._lock:
34
- self._cbs[tag] = obj, cb
34
+ self._cbs[tag] = cb
35
35
 
36
36
  def unregister_callback(self, tag: str):
37
37
  """Unregister a callback."""
@@ -58,25 +58,25 @@ class DatamodelEvents(StreamingService):
58
58
  if response.HasField("createdEventResponse"):
59
59
  childtype = response.createdEventResponse.childtype
60
60
  childname = response.createdEventResponse.childname
61
- child = getattr(cb[0], childtype)[childname]
62
- cb[1](child)
61
+ cb(childtype, childname)
63
62
  elif response.HasField("attributeChangedEventResponse"):
64
63
  value = response.attributeChangedEventResponse.value
65
- cb[1](_convert_variant_to_value(value))
64
+ cb(_convert_variant_to_value(value))
66
65
  elif response.HasField("commandAttributeChangedEventResponse"):
67
66
  value = response.commandAttributeChangedEventResponse.value
68
- cb[1](_convert_variant_to_value(value))
69
- elif (
70
- response.HasField("modifiedEventResponse")
71
- or response.HasField("deletedEventResponse")
72
- or response.HasField("affectedEventResponse")
73
- ):
74
- cb[1](cb[0])
67
+ cb(_convert_variant_to_value(value))
68
+ elif response.HasField("modifiedEventResponse"):
69
+ value = response.modifiedEventResponse.value
70
+ cb(_convert_variant_to_value(value))
71
+ elif response.HasField("affectedEventResponse"):
72
+ cb()
73
+ elif response.HasField("deletedEventResponse"):
74
+ cb()
75
75
  elif response.HasField("commandExecutedEventResponse"):
76
76
  command = response.commandExecutedEventResponse.command
77
77
  args = _convert_variant_to_value(
78
78
  response.commandExecutedEventResponse.args
79
79
  )
80
- cb[1](cb[0], command, args)
80
+ cb(command, args)
81
81
  except StopIteration:
82
82
  break