ansys-fluent-core 0.34.dev0__py3-none-any.whl → 0.35.dev0__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 (108) hide show
  1. ansys/fluent/core/__init__.py +48 -84
  2. ansys/fluent/core/codegen/allapigen.py +2 -2
  3. ansys/fluent/core/codegen/builtin_settingsgen.py +41 -13
  4. ansys/fluent/core/codegen/datamodelgen.py +3 -1
  5. ansys/fluent/core/codegen/print_fluent_version.py +2 -2
  6. ansys/fluent/core/codegen/settingsgen.py +18 -6
  7. ansys/fluent/core/codegen/tuigen.py +6 -5
  8. ansys/fluent/core/data_model_cache.py +2 -2
  9. ansys/fluent/core/docker/docker_compose.py +11 -9
  10. ansys/fluent/core/docker/utils.py +35 -0
  11. ansys/fluent/core/examples/downloads.py +8 -11
  12. ansys/fluent/core/exceptions.py +13 -1
  13. ansys/fluent/core/field_data_interfaces.py +239 -38
  14. ansys/fluent/core/file_session.py +167 -61
  15. ansys/fluent/core/fluent_connection.py +41 -26
  16. ansys/fluent/core/generated/api_tree/api_objects.json +1 -1
  17. ansys/fluent/core/generated/datamodel_231/flicing.py +40 -40
  18. ansys/fluent/core/generated/datamodel_231/meshing.py +231 -231
  19. ansys/fluent/core/generated/datamodel_232/flicing.py +50 -50
  20. ansys/fluent/core/generated/datamodel_232/meshing.py +189 -189
  21. ansys/fluent/core/generated/datamodel_241/flicing.py +30 -30
  22. ansys/fluent/core/generated/datamodel_241/meshing.py +290 -290
  23. ansys/fluent/core/generated/datamodel_242/flicing.py +50 -50
  24. ansys/fluent/core/generated/datamodel_242/meshing.py +331 -331
  25. ansys/fluent/core/generated/datamodel_242/part_management.py +6 -6
  26. ansys/fluent/core/generated/datamodel_251/flicing.py +65 -65
  27. ansys/fluent/core/generated/datamodel_251/meshing.py +300 -300
  28. ansys/fluent/core/generated/datamodel_251/part_management.py +6 -6
  29. ansys/fluent/core/generated/datamodel_252/flicing.py +25 -25
  30. ansys/fluent/core/generated/datamodel_252/meshing.py +382 -382
  31. ansys/fluent/core/generated/datamodel_252/part_management.py +10 -10
  32. ansys/fluent/core/generated/datamodel_261/flicing.py +45 -45
  33. ansys/fluent/core/generated/datamodel_261/meshing.py +454 -435
  34. ansys/fluent/core/generated/datamodel_261/part_management.py +5 -5
  35. ansys/fluent/core/generated/datamodel_261/preferences.py +7 -0
  36. ansys/fluent/core/generated/fluent_version_252.py +1 -1
  37. ansys/fluent/core/generated/fluent_version_261.py +3 -3
  38. ansys/fluent/core/generated/meshing/tui_261.py +54 -3
  39. ansys/fluent/core/generated/solver/settings_231.py +1 -0
  40. ansys/fluent/core/generated/solver/settings_231.pyi +3025 -1
  41. ansys/fluent/core/generated/solver/settings_232.py +1 -0
  42. ansys/fluent/core/generated/solver/settings_232.pyi +3425 -1
  43. ansys/fluent/core/generated/solver/settings_241.py +1 -0
  44. ansys/fluent/core/generated/solver/settings_241.pyi +4423 -1
  45. ansys/fluent/core/generated/solver/settings_242.py +1 -0
  46. ansys/fluent/core/generated/solver/settings_242.pyi +5474 -1
  47. ansys/fluent/core/generated/solver/settings_251.py +11 -0
  48. ansys/fluent/core/generated/solver/settings_251.pyi +6006 -1
  49. ansys/fluent/core/generated/solver/settings_252.py +11 -1
  50. ansys/fluent/core/generated/solver/settings_252.pyi +6782 -2
  51. ansys/fluent/core/generated/solver/settings_261.py +5592 -2740
  52. ansys/fluent/core/generated/solver/settings_261.pyi +10335 -1994
  53. ansys/fluent/core/generated/solver/settings_builtin.py +560 -38
  54. ansys/fluent/core/generated/solver/settings_builtin.pyi +24 -18
  55. ansys/fluent/core/generated/solver/tui_261.py +409 -285
  56. ansys/fluent/core/launcher/container_launcher.py +25 -6
  57. ansys/fluent/core/launcher/error_handler.py +1 -1
  58. ansys/fluent/core/launcher/fluent_container.py +97 -45
  59. ansys/fluent/core/launcher/launch_options.py +5 -4
  60. ansys/fluent/core/launcher/launcher.py +18 -2
  61. ansys/fluent/core/launcher/launcher_utils.py +63 -15
  62. ansys/fluent/core/launcher/pim_launcher.py +17 -3
  63. ansys/fluent/core/launcher/process_launch_string.py +3 -2
  64. ansys/fluent/core/launcher/server_info.py +7 -3
  65. ansys/fluent/core/launcher/slurm_launcher.py +4 -2
  66. ansys/fluent/core/launcher/standalone_launcher.py +6 -3
  67. ansys/fluent/core/launcher/watchdog.py +6 -6
  68. ansys/fluent/core/launcher/watchdog_exec +1 -1
  69. ansys/fluent/core/logger.py +3 -1
  70. ansys/fluent/core/module_config.py +358 -0
  71. ansys/fluent/core/pyfluent_warnings.py +9 -3
  72. ansys/fluent/core/report.py +2 -2
  73. ansys/fluent/core/search.py +34 -13
  74. ansys/fluent/core/services/__init__.py +2 -2
  75. ansys/fluent/core/services/api_upgrade.py +3 -2
  76. ansys/fluent/core/services/app_utilities.py +39 -0
  77. ansys/fluent/core/services/datamodel_se.py +4 -2
  78. ansys/fluent/core/services/deprecated_field_data.py +4 -4
  79. ansys/fluent/core/services/field_data.py +185 -49
  80. ansys/fluent/core/services/health_check.py +3 -1
  81. ansys/fluent/core/services/interceptors.py +8 -6
  82. ansys/fluent/core/services/reduction.py +16 -5
  83. ansys/fluent/core/services/settings.py +1 -0
  84. ansys/fluent/core/session.py +47 -4
  85. ansys/fluent/core/session_pure_meshing.py +6 -6
  86. ansys/fluent/core/session_pure_meshing.pyi +1 -0
  87. ansys/fluent/core/session_shared.py +4 -4
  88. ansys/fluent/core/session_solver.py +41 -10
  89. ansys/fluent/core/session_solver.pyi +1 -0
  90. ansys/fluent/core/session_utilities.py +7 -0
  91. ansys/fluent/core/solver/error_message.py +2 -2
  92. ansys/fluent/core/solver/flobject.py +192 -123
  93. ansys/fluent/core/solver/function/reduction.py +37 -9
  94. ansys/fluent/core/solver/settings_builtin_bases.py +3 -3
  95. ansys/fluent/core/solver/settings_builtin_data.py +7 -17
  96. ansys/fluent/core/streaming_services/datamodel_event_streaming.py +3 -2
  97. ansys/fluent/core/streaming_services/datamodel_streaming.py +3 -1
  98. ansys/fluent/core/streaming_services/events_streaming.py +2 -18
  99. ansys/fluent/core/system_coupling.py +3 -1
  100. ansys/fluent/core/utils/__init__.py +0 -7
  101. ansys/fluent/core/utils/data_transfer.py +3 -3
  102. ansys/fluent/core/utils/file_transfer_service.py +24 -15
  103. ansys/fluent/core/utils/fluent_version.py +4 -6
  104. ansys/fluent/core/utils/networking.py +21 -11
  105. {ansys_fluent_core-0.34.dev0.dist-info → ansys_fluent_core-0.35.dev0.dist-info}/METADATA +10 -11
  106. {ansys_fluent_core-0.34.dev0.dist-info → ansys_fluent_core-0.35.dev0.dist-info}/RECORD +108 -106
  107. {ansys_fluent_core-0.34.dev0.dist-info → ansys_fluent_core-0.35.dev0.dist-info}/WHEEL +1 -1
  108. {ansys_fluent_core-0.34.dev0.dist-info/licenses → ansys_fluent_core-0.35.dev0.dist-info}/LICENSE +0 -0
@@ -41,16 +41,16 @@ from ansys.fluent.core.utils.fluent_version import (
41
41
 
42
42
  def _get_api_tree_data_file_path():
43
43
  """Get API tree data file."""
44
- from ansys.fluent.core import CODEGEN_OUTDIR
44
+ from ansys.fluent.core import config
45
45
 
46
- return (CODEGEN_OUTDIR / "api_tree" / "api_objects.json").resolve()
46
+ return (config.codegen_outdir / "api_tree" / "api_objects.json").resolve()
47
47
 
48
48
 
49
49
  def get_api_tree_file_name(version: str) -> Path:
50
50
  """Get API tree file name."""
51
- from ansys.fluent.core import CODEGEN_OUTDIR
51
+ from ansys.fluent.core import config
52
52
 
53
- return (CODEGEN_OUTDIR / f"api_tree_{version}.pickle").resolve()
53
+ return (config.codegen_outdir / f"api_tree_{version}.pickle").resolve()
54
54
 
55
55
 
56
56
  def _remove_suffix(input: str, suffix):
@@ -127,9 +127,9 @@ def _generate_api_data(
127
127
  from nltk.corpus import wordnet as wn
128
128
 
129
129
  _download_nltk_data()
130
- from ansys.fluent.core import CODEGEN_OUTDIR
130
+ from ansys.fluent.core import config
131
131
 
132
- json_file_folder = Path(os.path.join(CODEGEN_OUTDIR, "api_tree"))
132
+ json_file_folder = Path(os.path.join(config.codegen_outdir, "api_tree"))
133
133
  json_file_folder.mkdir(parents=True, exist_ok=True)
134
134
 
135
135
  all_api_object_name_synsets = dict()
@@ -164,7 +164,10 @@ def _get_api_tree_data():
164
164
 
165
165
 
166
166
  def _print_search_results(
167
- queries: list, api_tree_data: dict | None = None, api_path: str | None = None
167
+ queries: list,
168
+ api_tree_data: dict | None = None,
169
+ api_path: str | None = None,
170
+ match_whole_word: bool | None = None,
168
171
  ):
169
172
  """
170
173
  Print search results.
@@ -178,6 +181,9 @@ def _print_search_results(
178
181
  If None, it is retrieved using _get_api_tree_data().
179
182
  api_path : str, optional
180
183
  Specific path to restrict the search to. If None, searches the entire object hierarchy.
184
+ match_whole_word : bool, optional
185
+ If True, only exact matches are returned. If False, semantic search is performed.
186
+ The default is None, which means semantic search is performed.
181
187
  """
182
188
  api_tree_data = api_tree_data or _get_api_tree_data()
183
189
  api_sources = [api_tree_data["api_objects"], api_tree_data["api_tui_objects"]]
@@ -207,10 +213,22 @@ def _print_search_results(
207
213
  for query in queries:
208
214
  if isinstance(query, tuple):
209
215
  name, score = query
210
- if name in first_token and has_query(name, substrings):
211
- results.add((api_object, round(score, 2)))
216
+ if (
217
+ name in first_token
218
+ and has_query(name, substrings)
219
+ and name in substrings[-1]
220
+ ):
221
+ if score is not None:
222
+ results.add((api_object, round(score, 2)))
212
223
  else:
213
- if query in first_token and has_query(query, substrings):
224
+ name = query
225
+ score = None
226
+
227
+ if match_whole_word and (
228
+ first_token == name or first_token.endswith(f".{name}")
229
+ ):
230
+ results.add(api_object)
231
+ elif not match_whole_word and name in first_token:
214
232
  results.add(api_object)
215
233
 
216
234
  return sorted(results)
@@ -227,7 +245,7 @@ def _print_search_results(
227
245
  )
228
246
 
229
247
  results = final_results or all_results
230
- if pyfluent.PRINT_SEARCH_RESULTS:
248
+ if pyfluent.config.print_search_results:
231
249
  for result in results:
232
250
  print(result)
233
251
  elif results:
@@ -316,7 +334,7 @@ def _get_exact_match_for_word_from_names(
316
334
  -------
317
335
  List of exact match.
318
336
  """
319
- return list({name for name in names if word == name or word in name})
337
+ return list({name for name in names if word == name})
320
338
 
321
339
 
322
340
  def _get_capitalize_match_for_word_from_names(
@@ -453,7 +471,10 @@ def _search_whole_word(
453
471
  )
454
472
  if queries:
455
473
  return _print_search_results(
456
- queries, api_tree_data=api_tree_data, api_path=api_path
474
+ queries,
475
+ api_tree_data=api_tree_data,
476
+ api_path=api_path,
477
+ match_whole_word=match_whole_word,
457
478
  )
458
479
 
459
480
 
@@ -32,7 +32,7 @@ from ansys.fluent.core.services.datamodel_tui import (
32
32
  )
33
33
  from ansys.fluent.core.services.deprecated_field_data import DeprecatedFieldData
34
34
  from ansys.fluent.core.services.events import EventsService
35
- from ansys.fluent.core.services.field_data import FieldInfo, LiveFieldData
35
+ from ansys.fluent.core.services.field_data import LiveFieldData, _FieldInfo
36
36
  from ansys.fluent.core.services.health_check import HealthCheckService
37
37
  from ansys.fluent.core.services.monitor import MonitorsService
38
38
  from ansys.fluent.core.services.reduction import Reduction
@@ -54,7 +54,7 @@ _service_cls_by_name = {
54
54
  "events": EventsService,
55
55
  "field_data": LiveFieldData,
56
56
  "field_data_old": DeprecatedFieldData,
57
- "field_info": FieldInfo,
57
+ "field_info": _FieldInfo,
58
58
  "monitors": MonitorsService,
59
59
  "reduction": Reduction,
60
60
  "svar": SolutionVariableService,
@@ -22,7 +22,6 @@
22
22
 
23
23
  """Provides a module for the API upgrade advisor."""
24
24
 
25
- import os
26
25
  from typing import TypeVar
27
26
 
28
27
  from ansys.fluent.core.services.app_utilities import AppUtilities
@@ -47,8 +46,10 @@ class ApiUpgradeAdvisor:
47
46
  self._id = None
48
47
 
49
48
  def _can_advise(self) -> bool:
49
+ from ansys.fluent.core import config
50
+
50
51
  return (
51
- not os.getenv("PYFLUENT_SKIP_API_UPGRADE_ADVICE")
52
+ not config.skip_api_upgrade_advice
52
53
  and FluentVersion(self._version) >= FluentVersion.v231
53
54
  and self._mode == "solver"
54
55
  )
@@ -104,6 +104,12 @@ class AppUtilitiesService:
104
104
  """Is beta enabled RPC of AppUtilities service."""
105
105
  return self._stub.IsBetaEnabled(request, metadata=self._metadata)
106
106
 
107
+ def enable_beta(
108
+ self, request: AppUtilitiesProtoModule.EnableBetaRequest
109
+ ) -> AppUtilitiesProtoModule.EnableBetaResponse:
110
+ """Is beta enabled RPC of AppUtilities service."""
111
+ return self._stub.EnableBeta(request, metadata=self._metadata)
112
+
107
113
  def is_wildcard(
108
114
  self, request: AppUtilitiesProtoModule.IsWildcardRequest
109
115
  ) -> AppUtilitiesProtoModule.IsWildcardResponse:
@@ -255,6 +261,18 @@ class AppUtilitiesOld:
255
261
  """Is beta enabled."""
256
262
  return self.scheme.eval("(is-beta-feature-available?)")
257
263
 
264
+ def enable_beta(self):
265
+ """Enable beta features.
266
+
267
+ Raises
268
+ ------
269
+ RuntimeError
270
+ Not supported before Fluent 2025 R2.
271
+ """
272
+ raise RuntimeError(
273
+ "Enabling beta is not supported by PyFluent for Fluent versions before 2025 R2."
274
+ )
275
+
258
276
  def is_wildcard(self, input: str | None = None) -> bool:
259
277
  """Is wildcard."""
260
278
  return self.scheme.eval(f'(has-fnmatch-wild-card? "{input}")')
@@ -405,6 +423,11 @@ class AppUtilities:
405
423
  response = self.service.is_beta_enabled(request)
406
424
  return response.is_beta_enabled
407
425
 
426
+ def enable_beta(self) -> None:
427
+ """Enable beta features."""
428
+ request = AppUtilitiesProtoModule.EnableBetaRequest()
429
+ self.service.enable_beta(request)
430
+
408
431
  def is_wildcard(self, input: str | None = None) -> bool:
409
432
  """Is wildcard."""
410
433
  request = AppUtilitiesProtoModule.IsWildcardRequest()
@@ -456,3 +479,19 @@ class AppUtilities:
456
479
  request = AppUtilitiesProtoModule.SetWorkingDirectoryRequest()
457
480
  request.path = path
458
481
  self.service.set_working_directory(request)
482
+
483
+
484
+ class AppUtilitiesV252(AppUtilities):
485
+ """AppUtilitiesV252.
486
+ This is for methods whose implementations are missing in the 25R2 server.
487
+ """
488
+
489
+ def __init__(self, service: AppUtilitiesService, scheme):
490
+ super().__init__(service)
491
+ self.scheme = scheme
492
+
493
+ def enable_beta(self) -> None:
494
+ """Enable beta features."""
495
+ self.scheme.eval(
496
+ '(fl-execute-cmd "file" "beta-settings" (list (cons "enable?" #t)))'
497
+ )
@@ -514,7 +514,9 @@ class DatamodelService(StreamingService):
514
514
  self.event_streaming = None
515
515
  self.subscriptions = SubscriptionList()
516
516
  self.file_transfer_service = file_transfer_service
517
- self.cache = DataModelCache() if pyfluent.DATAMODEL_USE_STATE_CACHE else None
517
+ self.cache = (
518
+ DataModelCache() if pyfluent.config.datamodel_use_state_cache else None
519
+ )
518
520
  self.version = version
519
521
 
520
522
  def get_attribute_value(self, rules: str, path: str, attribute: str) -> ValueT:
@@ -1096,7 +1098,7 @@ class PyStateContainer(PyCallableStateObject):
1096
1098
  Any
1097
1099
  Value of the attribute.
1098
1100
  """
1099
- if pyfluent.DATAMODEL_USE_ATTR_CACHE:
1101
+ if pyfluent.config.datamodel_use_attr_cache:
1100
1102
  return self._get_cached_attr(attrib)
1101
1103
  return self._get_remote_attr(attrib)
1102
1104
 
@@ -28,15 +28,15 @@ import warnings
28
28
  from ansys.api.fluent.v0 import field_data_pb2 as FieldDataProtoModule
29
29
  from ansys.fluent.core.pyfluent_warnings import PyFluentDeprecationWarning
30
30
  from ansys.fluent.core.services.field_data import (
31
+ Batch,
31
32
  ChunkParser,
32
33
  FieldDataService,
33
- FieldInfo,
34
34
  SurfaceDataType,
35
- Transaction,
36
35
  _AllowedScalarFieldNames,
37
36
  _AllowedSurfaceIDs,
38
37
  _AllowedSurfaceNames,
39
38
  _AllowedVectorFieldNames,
39
+ _FieldInfo,
40
40
  _FieldMethod,
41
41
  _get_surface_ids,
42
42
  get_fields_request,
@@ -223,7 +223,7 @@ class DeprecatedFieldData:
223
223
  def __init__(
224
224
  self,
225
225
  service: FieldDataService,
226
- field_info: FieldInfo,
226
+ field_info: _FieldInfo,
227
227
  is_data_valid: Callable[[], bool],
228
228
  scheme_eval=None,
229
229
  ):
@@ -288,7 +288,7 @@ class DeprecatedFieldData:
288
288
  def new_transaction(self):
289
289
  """Create a new field transaction."""
290
290
  warnings.warn(DEPRECATION_MSG, PyFluentDeprecationWarning)
291
- return Transaction(
291
+ return Batch(
292
292
  self._service,
293
293
  self._field_info,
294
294
  self._allowed_surface_ids,