ansys-fluent-core 0.31.dev1__py3-none-any.whl → 0.31.1__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 (59) hide show
  1. ansys/fluent/core/__init__.py +11 -3
  2. ansys/fluent/core/codegen/settingsgen.py +6 -0
  3. ansys/fluent/core/codegen/tuigen.py +1 -2
  4. ansys/fluent/core/docker/docker_compose.py +243 -0
  5. ansys/fluent/core/field_data_interfaces.py +6 -0
  6. ansys/fluent/core/file_session.py +158 -128
  7. ansys/fluent/core/filereader/data_file.py +11 -0
  8. ansys/fluent/core/filereader/pre_processor.py +22 -0
  9. ansys/fluent/core/fluent_connection.py +48 -20
  10. ansys/fluent/core/generated/api_tree/api_objects.json +1 -1
  11. ansys/fluent/core/generated/datamodel_231/flicing.py +35 -35
  12. ansys/fluent/core/generated/datamodel_231/meshing.py +189 -189
  13. ansys/fluent/core/generated/datamodel_232/flicing.py +35 -35
  14. ansys/fluent/core/generated/datamodel_232/meshing.py +237 -237
  15. ansys/fluent/core/generated/datamodel_241/flicing.py +45 -45
  16. ansys/fluent/core/generated/datamodel_241/meshing.py +295 -295
  17. ansys/fluent/core/generated/datamodel_242/flicing.py +60 -60
  18. ansys/fluent/core/generated/datamodel_242/meshing.py +285 -285
  19. ansys/fluent/core/generated/datamodel_242/part_management.py +6 -6
  20. ansys/fluent/core/generated/datamodel_251/flicing.py +55 -55
  21. ansys/fluent/core/generated/datamodel_251/meshing.py +370 -370
  22. ansys/fluent/core/generated/datamodel_251/part_management.py +6 -6
  23. ansys/fluent/core/generated/datamodel_252/flicing.py +55 -55
  24. ansys/fluent/core/generated/datamodel_252/meshing.py +790 -428
  25. ansys/fluent/core/generated/datamodel_252/part_management.py +10 -10
  26. ansys/fluent/core/generated/datamodel_252/preferences.py +1 -1
  27. ansys/fluent/core/generated/fluent_version_252.py +4 -4
  28. ansys/fluent/core/generated/meshing/tui_252.py +1133 -1178
  29. ansys/fluent/core/generated/solver/settings_252.py +2241 -1649
  30. ansys/fluent/core/generated/solver/settings_252.pyi +1785 -1430
  31. ansys/fluent/core/generated/solver/settings_builtin.pyi +104 -0
  32. ansys/fluent/core/generated/solver/tui_252.py +2174 -2005
  33. ansys/fluent/core/launcher/container_launcher.py +39 -8
  34. ansys/fluent/core/launcher/fluent_container.py +61 -22
  35. ansys/fluent/core/launcher/launcher.py +24 -13
  36. ansys/fluent/core/launcher/launcher_utils.py +8 -0
  37. ansys/fluent/core/launcher/process_launch_string.py +2 -6
  38. ansys/fluent/core/launcher/slurm_launcher.py +1 -0
  39. ansys/fluent/core/report.py +2 -0
  40. ansys/fluent/core/services/deprecated_field_data.py +74 -46
  41. ansys/fluent/core/services/field_data.py +104 -69
  42. ansys/fluent/core/services/reduction.py +55 -66
  43. ansys/fluent/core/services/solution_variables.py +9 -1
  44. ansys/fluent/core/session.py +15 -12
  45. ansys/fluent/core/session_meshing.py +3 -0
  46. ansys/fluent/core/session_solver.py +20 -43
  47. ansys/fluent/core/session_utilities.py +429 -0
  48. ansys/fluent/core/solver/flobject.py +28 -0
  49. ansys/fluent/core/utils/deprecate.py +46 -0
  50. ansys/fluent/core/utils/file_transfer_service.py +19 -3
  51. ansys/fluent/core/utils/fluent_version.py +42 -11
  52. ansys/fluent/core/variable_strategies/__init__.py +29 -0
  53. ansys/fluent/core/variable_strategies/expr.py +186 -0
  54. ansys/fluent/core/variable_strategies/field.py +186 -0
  55. ansys/fluent/core/variable_strategies/svar.py +61 -0
  56. {ansys_fluent_core-0.31.dev1.dist-info → ansys_fluent_core-0.31.1.dist-info}/METADATA +9 -6
  57. {ansys_fluent_core-0.31.dev1.dist-info → ansys_fluent_core-0.31.1.dist-info}/RECORD +59 -53
  58. {ansys_fluent_core-0.31.dev1.dist-info → ansys_fluent_core-0.31.1.dist-info}/WHEEL +1 -1
  59. {ansys_fluent_core-0.31.dev1.dist-info → ansys_fluent_core-0.31.1.dist-info/licenses}/LICENSE +0 -0
@@ -51,6 +51,7 @@ from ansys.fluent.core.field_data_interfaces import (
51
51
  _AllowedSurfaceNames,
52
52
  _AllowedVectorFieldNames,
53
53
  _ReturnFieldData,
54
+ _to_field_name_str,
54
55
  )
55
56
  from ansys.fluent.core.pyfluent_warnings import PyFluentDeprecationWarning
56
57
  from ansys.fluent.core.services.interceptors import (
@@ -60,7 +61,7 @@ from ansys.fluent.core.services.interceptors import (
60
61
  TracingInterceptor,
61
62
  )
62
63
  from ansys.fluent.core.services.streaming import StreamingService
63
- from ansys.fluent.core.utils.deprecate import deprecate_argument, deprecate_arguments
64
+ from ansys.fluent.core.utils.deprecate import all_deprecators
64
65
 
65
66
  logger = logging.getLogger("pyfluent.field_data")
66
67
 
@@ -428,7 +429,7 @@ class BaseFieldData:
428
429
  )
429
430
  ]
430
431
  return self._returned_data._scalar_data(
431
- kwargs.get("field_name"),
432
+ _to_field_name_str(kwargs.get("field_name")),
432
433
  kwargs.get("surfaces"),
433
434
  self.get_surface_ids(kwargs.get("surfaces")),
434
435
  scalar_field_data,
@@ -452,7 +453,7 @@ class BaseFieldData:
452
453
  ) -> Dict[int | str, np.array]:
453
454
  vector_field_data = self.data[(("type", "vector-field"),)]
454
455
  return self._returned_data._vector_data(
455
- kwargs.get("field_name"),
456
+ _to_field_name_str(kwargs.get("field_name")),
456
457
  kwargs.get("surfaces"),
457
458
  self.get_surface_ids(kwargs.get("surfaces")),
458
459
  vector_field_data,
@@ -465,11 +466,10 @@ class BaseFieldData:
465
466
  if kwargs.get("zones") is None:
466
467
  zones = []
467
468
  del zones
468
- pathlines_data = self.data[
469
- (("type", "pathlines-field"), ("field", kwargs.get("field_name")))
470
- ]
469
+ field_name = _to_field_name_str(kwargs.get("field_name"))
470
+ pathlines_data = self.data[(("type", "pathlines-field"), ("field", field_name))]
471
471
  return self._returned_data._pathlines_data(
472
- kwargs.get("field_name"),
472
+ field_name,
473
473
  kwargs.get("surfaces"),
474
474
  self.get_surface_ids(kwargs.get("surfaces")),
475
475
  pathlines_data,
@@ -637,11 +637,16 @@ class Transaction(FieldTransaction):
637
637
  raise ValueError("For 'path-lines' `field_name` should be unique.")
638
638
  else:
639
639
  self._pathline_field_data.append(field_name)
640
+ additional_field_name = kwargs.get("additional_field_name")
641
+ if additional_field_name:
642
+ additional_field_name = self._allowed_scalar_field_names.valid_name(
643
+ additional_field_name
644
+ )
640
645
  self._fields_request.pathlinesFieldRequest.extend(
641
646
  self._fetched_data._pathlines_data(
642
647
  field_name,
643
648
  kwargs.get("surfaces"),
644
- additionalField=kwargs.get("additional_field_name"),
649
+ additionalField=additional_field_name,
645
650
  provideParticleTimeField=kwargs.get("provide_particle_time_field"),
646
651
  dataLocation=(
647
652
  FieldDataProtoModule.DataLocation.Nodes
@@ -660,17 +665,24 @@ class Transaction(FieldTransaction):
660
665
  )
661
666
  )
662
667
 
663
- @deprecate_argument(
664
- old_arg="surface_names",
665
- new_arg="surfaces",
666
- converter=lambda old_arg_val: old_arg_val or [],
667
- )
668
- @deprecate_argument(
669
- old_arg="surface_ids",
670
- new_arg="surfaces",
671
- converter=lambda old_arg_val: old_arg_val or [],
668
+ @all_deprecators(
669
+ deprecate_arg_mappings=[
670
+ {
671
+ "old_arg": "surface_names",
672
+ "new_arg": "surfaces",
673
+ "converter": lambda old_arg_val: old_arg_val or [],
674
+ },
675
+ {
676
+ "old_arg": "surface_ids",
677
+ "new_arg": "surfaces",
678
+ "converter": lambda old_arg_val: old_arg_val or [],
679
+ },
680
+ ],
681
+ data_type_converter=_data_type_convertor,
682
+ deprecated_version="v0.23.dev0",
683
+ deprecated_reason="Old arguments 'surface_ids' and 'surface_names' are deprecated. Use 'surfaces' instead.",
684
+ warn_message="'add_surfaces_request' is deprecated, use 'add_requests' instead",
672
685
  )
673
- @deprecate_arguments(converter=_data_type_convertor)
674
686
  def add_surfaces_request(
675
687
  self,
676
688
  data_types: List[SurfaceDataType] | List[str],
@@ -679,25 +691,29 @@ class Transaction(FieldTransaction):
679
691
  ) -> None:
680
692
  """Add request to get surface data (vertices, face connectivity, centroids, and
681
693
  normals)."""
682
- warnings.warn(
683
- "'add_surfaces_request' is deprecated, use 'add_requests' instead",
684
- PyFluentDeprecationWarning,
685
- )
686
694
  self._add_surfaces_request(
687
695
  data_types=data_types,
688
696
  surfaces=self.get_surface_ids(surfaces),
689
697
  overset_mesh=overset_mesh,
690
698
  )
691
699
 
692
- @deprecate_argument(
693
- old_arg="surface_names",
694
- new_arg="surfaces",
695
- converter=lambda old_arg_val: old_arg_val or [],
696
- )
697
- @deprecate_argument(
698
- old_arg="surface_ids",
699
- new_arg="surfaces",
700
- converter=lambda old_arg_val: old_arg_val or [],
700
+ @all_deprecators(
701
+ deprecate_arg_mappings=[
702
+ {
703
+ "old_arg": "surface_names",
704
+ "new_arg": "surfaces",
705
+ "converter": lambda old_arg_val: old_arg_val or [],
706
+ },
707
+ {
708
+ "old_arg": "surface_ids",
709
+ "new_arg": "surfaces",
710
+ "converter": lambda old_arg_val: old_arg_val or [],
711
+ },
712
+ ],
713
+ data_type_converter=None,
714
+ deprecated_version="v0.23.dev0",
715
+ deprecated_reason="Old arguments 'surface_ids' and 'surface_names' are deprecated. Use 'surfaces' instead.",
716
+ warn_message="'add_scalar_fields_request' is deprecated, use 'add_requests' instead",
701
717
  )
702
718
  def add_scalar_fields_request(
703
719
  self,
@@ -707,10 +723,6 @@ class Transaction(FieldTransaction):
707
723
  boundary_value: bool | None = True,
708
724
  ) -> None:
709
725
  """Add request to get scalar field data on surfaces."""
710
- warnings.warn(
711
- "'add_scalar_fields_request' is deprecated, use 'add_requests' instead",
712
- PyFluentDeprecationWarning,
713
- )
714
726
  self._add_scalar_fields_request(
715
727
  field_name=field_name,
716
728
  surfaces=self.get_surface_ids(surfaces),
@@ -718,15 +730,23 @@ class Transaction(FieldTransaction):
718
730
  boundary_value=boundary_value,
719
731
  )
720
732
 
721
- @deprecate_argument(
722
- old_arg="surface_names",
723
- new_arg="surfaces",
724
- converter=lambda old_arg_val: old_arg_val or [],
725
- )
726
- @deprecate_argument(
727
- old_arg="surface_ids",
728
- new_arg="surfaces",
729
- converter=lambda old_arg_val: old_arg_val or [],
733
+ @all_deprecators(
734
+ deprecate_arg_mappings=[
735
+ {
736
+ "old_arg": "surface_names",
737
+ "new_arg": "surfaces",
738
+ "converter": lambda old_arg_val: old_arg_val or [],
739
+ },
740
+ {
741
+ "old_arg": "surface_ids",
742
+ "new_arg": "surfaces",
743
+ "converter": lambda old_arg_val: old_arg_val or [],
744
+ },
745
+ ],
746
+ data_type_converter=None,
747
+ deprecated_version="v0.23.dev0",
748
+ deprecated_reason="Old arguments 'surface_ids' and 'surface_names' are deprecated. Use 'surfaces' instead.",
749
+ warn_message="'add_vector_fields_request' is deprecated, use 'add_requests' instead",
730
750
  )
731
751
  def add_vector_fields_request(
732
752
  self,
@@ -734,23 +754,27 @@ class Transaction(FieldTransaction):
734
754
  surfaces: List[int | str],
735
755
  ) -> None:
736
756
  """Add request to get vector field data on surfaces."""
737
- warnings.warn(
738
- "'add_vector_fields_request' is deprecated, use 'add_requests' instead",
739
- PyFluentDeprecationWarning,
740
- )
741
757
  self._add_vector_fields_request(
742
758
  field_name=field_name, surfaces=self.get_surface_ids(surfaces)
743
759
  )
744
760
 
745
- @deprecate_argument(
746
- old_arg="surface_names",
747
- new_arg="surfaces",
748
- converter=lambda old_arg_val: old_arg_val or [],
749
- )
750
- @deprecate_argument(
751
- old_arg="surface_ids",
752
- new_arg="surfaces",
753
- converter=lambda old_arg_val: old_arg_val or [],
761
+ @all_deprecators(
762
+ deprecate_arg_mappings=[
763
+ {
764
+ "old_arg": "surface_names",
765
+ "new_arg": "surfaces",
766
+ "converter": lambda old_arg_val: old_arg_val or [],
767
+ },
768
+ {
769
+ "old_arg": "surface_ids",
770
+ "new_arg": "surfaces",
771
+ "converter": lambda old_arg_val: old_arg_val or [],
772
+ },
773
+ ],
774
+ data_type_converter=None,
775
+ deprecated_version="v0.23.dev0",
776
+ deprecated_reason="Old arguments 'surface_ids' and 'surface_names' are deprecated. Use 'surfaces' instead.",
777
+ warn_message="'add_pathlines_fields_request' is deprecated, use 'add_requests' instead",
754
778
  )
755
779
  def add_pathlines_fields_request(
756
780
  self,
@@ -770,10 +794,6 @@ class Transaction(FieldTransaction):
770
794
  zones: list | None = None,
771
795
  ) -> None:
772
796
  """Add request to get path-lines field on surfaces."""
773
- warnings.warn(
774
- "'add_pathlines_fields_request' is deprecated, use 'add_requests' instead",
775
- PyFluentDeprecationWarning,
776
- )
777
797
  self._add_pathlines_fields_request(
778
798
  field_name=field_name,
779
799
  surfaces=self.get_surface_ids(surfaces),
@@ -1247,6 +1267,7 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1247
1267
  self._field_info = field_info
1248
1268
  self.is_data_valid = is_data_valid
1249
1269
  self.scheme_eval = scheme_eval
1270
+
1250
1271
  self.get_zones_info = lambda: get_zones_info()()
1251
1272
 
1252
1273
  self._allowed_surface_names = _AllowedSurfaceNames(field_info)
@@ -1324,9 +1345,12 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1324
1345
  surfaces = kwargs.get("surfaces")
1325
1346
  surface_ids = self.get_surface_ids(surfaces)
1326
1347
  fields_request = get_fields_request()
1348
+ field_name = self._allowed_scalar_field_names.valid_name(
1349
+ kwargs.get("field_name")
1350
+ )
1327
1351
  fields_request.scalarFieldRequest.extend(
1328
1352
  self._fetched_data._scalar_data(
1329
- self._allowed_scalar_field_names.valid_name(kwargs.get("field_name")),
1353
+ field_name,
1330
1354
  self.get_surface_ids(surfaces),
1331
1355
  kwargs.get("node_value"),
1332
1356
  kwargs.get("boundary_value"),
@@ -1335,7 +1359,7 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1335
1359
  fields = ChunkParser().extract_fields(self._service.get_fields(fields_request))
1336
1360
  scalar_field_data = next(iter(fields.values()))
1337
1361
  return self._returned_data._scalar_data(
1338
- kwargs.get("field_name"), surfaces, surface_ids, scalar_field_data
1362
+ field_name, surfaces, surface_ids, scalar_field_data
1339
1363
  )
1340
1364
 
1341
1365
  def _get_surface_data(
@@ -1372,12 +1396,15 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1372
1396
  **kwargs,
1373
1397
  ) -> Dict[int | str, np.array]:
1374
1398
  surface_ids = self.get_surface_ids(kwargs.get("surfaces"))
1399
+ field_name = self._allowed_vector_field_names.valid_name(
1400
+ kwargs.get("field_name")
1401
+ )
1375
1402
  for surface_id in surface_ids:
1376
1403
  self.scheme_eval.string_eval(f"(surface? {surface_id})")
1377
1404
  fields_request = get_fields_request()
1378
1405
  fields_request.vectorFieldRequest.extend(
1379
1406
  self._fetched_data._vector_data(
1380
- self._allowed_vector_field_names.valid_name(kwargs.get("field_name")),
1407
+ field_name,
1381
1408
  surface_ids,
1382
1409
  )
1383
1410
  )
@@ -1385,7 +1412,7 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1385
1412
  vector_field_data = next(iter(fields.values()))
1386
1413
 
1387
1414
  return self._returned_data._vector_data(
1388
- kwargs.get("field_name"),
1415
+ field_name,
1389
1416
  kwargs.get("surfaces"),
1390
1417
  surface_ids,
1391
1418
  vector_field_data,
@@ -1398,12 +1425,20 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1398
1425
  if kwargs.get("zones") is None:
1399
1426
  zones = []
1400
1427
  surface_ids = self.get_surface_ids(kwargs.get("surfaces"))
1428
+ field_name = self._allowed_scalar_field_names.valid_name(
1429
+ kwargs.get("field_name")
1430
+ )
1401
1431
  fields_request = get_fields_request()
1432
+ additional_field_name = kwargs.get("additional_field_name")
1433
+ if additional_field_name:
1434
+ additional_field_name = self._allowed_scalar_field_names.valid_name(
1435
+ additional_field_name
1436
+ )
1402
1437
  fields_request.pathlinesFieldRequest.extend(
1403
1438
  self._fetched_data._pathlines_data(
1404
- self._allowed_scalar_field_names.valid_name(kwargs.get("field_name")),
1439
+ field_name,
1405
1440
  surface_ids,
1406
- additionalField=kwargs.get("additional_field_name"),
1441
+ additionalField=kwargs.get(additional_field_name),
1407
1442
  provideParticleTimeField=kwargs.get("provide_particle_time_field"),
1408
1443
  dataLocation=(
1409
1444
  FieldDataProtoModule.DataLocation.Nodes
@@ -1427,7 +1462,7 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1427
1462
  if self._deprecated_flag:
1428
1463
  self._deprecated_flag = False
1429
1464
  return self._returned_data._pathlines_data(
1430
- kwargs.get("field_name"),
1465
+ field_name,
1431
1466
  kwargs.get("surfaces"),
1432
1467
  surface_ids,
1433
1468
  pathlines_data,
@@ -1435,7 +1470,7 @@ class LiveFieldData(BaseFieldData, FieldDataSource):
1435
1470
  )
1436
1471
 
1437
1472
  return self._returned_data._pathlines_data(
1438
- kwargs.get("field_name"),
1473
+ field_name,
1439
1474
  kwargs.get("surfaces"),
1440
1475
  surface_ids,
1441
1476
  pathlines_data,
@@ -36,6 +36,9 @@ from ansys.fluent.core.services.interceptors import (
36
36
  GrpcErrorInterceptor,
37
37
  TracingInterceptor,
38
38
  )
39
+ from ansys.fluent.core.variable_strategies import (
40
+ FluentExprNamingStrategy as naming_strategy,
41
+ )
39
42
 
40
43
  Path = List[Tuple[str, str]]
41
44
 
@@ -273,6 +276,7 @@ class Reduction:
273
276
  """__init__ method of Reduction class."""
274
277
  self.service = service
275
278
  self.ctxt = weakref.proxy(ctxt)
279
+ self._to_str = naming_strategy().to_string if naming_strategy else lambda s: s
276
280
 
277
281
  def _validate_str_location(self, loc: str):
278
282
  if all(
@@ -295,174 +299,159 @@ class Reduction:
295
299
  except BadReductionRequest:
296
300
  return locations
297
301
 
302
+ def _make_request(
303
+ self,
304
+ requestName,
305
+ locations,
306
+ ctxt=None,
307
+ expression=None,
308
+ weight=None,
309
+ condition=None,
310
+ ) -> Any:
311
+ request = getattr(ReductionProtoModule, requestName)()
312
+ if expression is not None:
313
+ request.expression = self._to_str(expression)
314
+ if weight is not None:
315
+ request.weight = weight
316
+ if condition is not None:
317
+ request.condition = condition
318
+ request.locations.extend(self._get_location_string(locations, ctxt))
319
+ return request
320
+
298
321
  def area(self, locations, ctxt=None) -> Any:
299
322
  """Get area."""
300
- request = ReductionProtoModule.AreaRequest()
301
- request.locations.extend(self._get_location_string(locations, ctxt))
323
+ request = self._make_request("AreaRequest", locations, ctxt)
302
324
  response = self.service.area(request)
303
325
  return _convert_variant_to_value(response.value)
304
326
 
305
327
  def area_average(self, expression, locations, ctxt=None) -> Any:
306
328
  """Get area average."""
307
- request = ReductionProtoModule.AreaAveRequest()
308
- request.expression = expression
309
- request.locations.extend(self._get_location_string(locations, ctxt))
329
+ request = self._make_request("AreaAveRequest", locations, ctxt, expression)
310
330
  response = self.service.area_average(request)
311
331
  return _convert_variant_to_value(response.value)
312
332
 
313
333
  def area_integral(self, expression, locations, ctxt=None) -> Any:
314
334
  """Get area integral."""
315
- request = ReductionProtoModule.AreaIntRequest()
316
- request.expression = expression
317
- request.locations.extend(self._get_location_string(locations, ctxt))
335
+ request = self._make_request("AreaIntRequest", locations, ctxt, expression)
318
336
  response = self.service.area_integral(request)
319
337
  return _convert_variant_to_value(response.value)
320
338
 
321
339
  def centroid(self, locations, ctxt=None) -> Any:
322
340
  """Get centroid."""
323
- request = ReductionProtoModule.CentroidRequest()
324
- request.locations.extend(self._get_location_string(locations, ctxt))
341
+ request = self._make_request("CentroidRequest", locations, ctxt)
325
342
  response = self.service.centroid(request)
326
343
  return (response.value.x, response.value.y, response.value.z)
327
344
 
328
345
  def count(self, locations, ctxt=None) -> Any:
329
- """Get count."""
330
- request = ReductionProtoModule.CountRequest()
331
- request.locations.extend(self._get_location_string(locations, ctxt))
346
+ """Count the number of faces or cells within the locations."""
347
+ request = self._make_request("CountRequest", locations, ctxt)
332
348
  response = self.service.count(request)
333
349
  return _convert_variant_to_value(response.value)
334
350
 
335
351
  def count_if(self, condition, locations, ctxt=None) -> Any:
336
- """Get count if a particular condition satisfies."""
337
- request = ReductionProtoModule.CountIfRequest()
338
- request.expression = condition
339
- request.locations.extend(self._get_location_string(locations, ctxt))
352
+ """Count the number of faces or cells where the specified condition is satisfied."""
353
+ request = self._make_request(
354
+ "CountIfRequest", locations, ctxt, condition=condition
355
+ )
340
356
  response = self.service.count_if(request)
341
357
  return _convert_variant_to_value(response.value)
342
358
 
343
359
  def force(self, locations, ctxt=None) -> Any:
344
360
  """Get force."""
345
- request = ReductionProtoModule.ForceRequest()
346
- request.locations.extend(self._get_location_string(locations, ctxt))
361
+ request = self._make_request("ForceRequest", locations, ctxt)
347
362
  response = self.service.force(request)
348
363
  return (response.value.x, response.value.y, response.value.z)
349
364
 
350
365
  def mass_average(self, expression, locations, ctxt=None) -> Any:
351
366
  """Get mass average."""
352
- request = ReductionProtoModule.MassAveRequest()
353
- request.expression = expression
354
- request.locations.extend(self._get_location_string(locations, ctxt))
367
+ request = self._make_request("MassAveRequest", locations, ctxt, expression)
355
368
  response = self.service.mass_average(request)
356
369
  return _convert_variant_to_value(response.value)
357
370
 
358
371
  def mass_flow_average(self, expression, locations, ctxt=None) -> Any:
359
372
  """Get mass flow average."""
360
- request = ReductionProtoModule.MassFlowAveRequest()
361
- request.expression = expression
362
- request.locations.extend(self._get_location_string(locations, ctxt))
373
+ request = self._make_request("MassFlowAveRequest", locations, ctxt, expression)
363
374
  response = self.service.mass_flow_average(request)
364
375
  return _convert_variant_to_value(response.value)
365
376
 
366
377
  def mass_flow_average_absolute(self, expression, locations, ctxt=None) -> Any:
367
- """Get absolute mass flow average."""
368
- request = ReductionProtoModule.MassFlowAveAbsRequest()
369
- request.expression = expression
370
- request.locations.extend(self._get_location_string(locations, ctxt))
378
+ """Compute the mass flow average of the absolute value of the given expression."""
379
+ request = self._make_request(
380
+ "MassFlowAveAbsRequest", locations, ctxt, expression
381
+ )
371
382
  response = self.service.mass_flow_average_absolute(request)
372
383
  return _convert_variant_to_value(response.value)
373
384
 
374
385
  def mass_flow_integral(self, expression, locations, ctxt=None) -> Any:
375
386
  """Get mass flow integral."""
376
- request = ReductionProtoModule.MassFlowIntRequest()
377
- request.expression = expression
378
- request.locations.extend(self._get_location_string(locations, ctxt))
387
+ request = self._make_request("MassFlowIntRequest", locations, ctxt, expression)
379
388
  response = self.service.mass_flow_integral(request)
380
389
  return _convert_variant_to_value(response.value)
381
390
 
382
391
  def mass_integral(self, expression, locations, ctxt=None) -> Any:
383
392
  """Get mass integral."""
384
- request = ReductionProtoModule.MassIntRequest()
385
- request.expression = expression
386
- request.locations.extend(self._get_location_string(locations, ctxt))
393
+ request = self._make_request("MassIntRequest", locations, ctxt, expression)
387
394
  response = self.service.mass_integral(request)
388
395
  return _convert_variant_to_value(response.value)
389
396
 
390
397
  def maximum(self, expression, locations, ctxt=None) -> Any:
391
398
  """Get maximum."""
392
- request = ReductionProtoModule.MaximumRequest()
393
- request.expression = expression
394
- request.locations.extend(self._get_location_string(locations, ctxt))
399
+ request = self._make_request("MaximumRequest", locations, ctxt, expression)
395
400
  response = self.service.maximum(request)
396
401
  return _convert_variant_to_value(response.value)
397
402
 
398
403
  def minimum(self, expression, locations, ctxt=None) -> Any:
399
404
  """Get minimum."""
400
- request = ReductionProtoModule.MinimumRequest()
401
- request.expression = expression
402
- request.locations.extend(self._get_location_string(locations, ctxt))
405
+ request = self._make_request("MinimumRequest", locations, ctxt, expression)
403
406
  response = self.service.minimum(request)
404
407
  return _convert_variant_to_value(response.value)
405
408
 
406
409
  def pressure_force(self, locations, ctxt=None) -> Any:
407
410
  """Get pressure force."""
408
- request = ReductionProtoModule.PressureForceRequest()
409
- request.locations.extend(self._get_location_string(locations, ctxt))
411
+ request = self._make_request("PressureForceRequest", locations, ctxt)
410
412
  response = self.service.pressure_force(request)
411
413
  return (response.value.x, response.value.y, response.value.z)
412
414
 
413
415
  def viscous_force(self, locations, ctxt=None) -> Any:
414
416
  """Get viscous force."""
415
- request = ReductionProtoModule.ViscousForceRequest()
416
- request.locations.extend(self._get_location_string(locations, ctxt))
417
+ request = self._make_request("ViscousForceRequest", locations, ctxt)
417
418
  response = self.service.viscous_force(request)
418
419
  return (response.value.x, response.value.y, response.value.z)
419
420
 
420
421
  def volume(self, locations, ctxt=None) -> Any:
421
422
  """Get volume."""
422
- request = ReductionProtoModule.VolumeRequest()
423
- request.locations.extend(self._get_location_string(locations, ctxt))
423
+ request = self._make_request("VolumeRequest", locations, ctxt)
424
424
  response = self.service.volume(request)
425
425
  return _convert_variant_to_value(response.value)
426
426
 
427
427
  def volume_average(self, expression, locations, ctxt=None) -> Any:
428
428
  """Get volume average."""
429
- request = ReductionProtoModule.VolumeAveRequest()
430
- request.expression = expression
431
- request.locations.extend(self._get_location_string(locations, ctxt))
429
+ request = self._make_request("VolumeRequest", locations, ctxt, expression)
432
430
  response = self.service.volume_average(request)
433
431
  return _convert_variant_to_value(response.value)
434
432
 
435
433
  def volume_integral(self, expression, locations, ctxt=None) -> Any:
436
434
  """Get volume integral."""
437
- request = ReductionProtoModule.VolumeIntRequest()
438
- request.expression = expression
439
- request.locations.extend(self._get_location_string(locations, ctxt))
435
+ request = self._make_request("VolumeIntRequest", locations, ctxt, expression)
440
436
  response = self.service.volume_integral(request)
441
437
  return _convert_variant_to_value(response.value)
442
438
 
443
439
  def moment(self, expression, locations, ctxt=None) -> Any:
444
440
  """Get moment."""
445
- request = ReductionProtoModule.MomentRequest()
446
- request.expression = expression
447
- request.locations.extend(self._get_location_string(locations, ctxt))
441
+ request = self._make_request("MomentRequest", locations, ctxt, expression)
448
442
  response = self.service.moment(request)
449
443
  return (response.value.x, response.value.y, response.value.z)
450
444
 
451
445
  def sum(self, expression, locations, weight, ctxt=None) -> Any:
452
446
  """Get sum."""
453
- request = ReductionProtoModule.SumRequest()
454
- request.expression = expression
455
- request.locations.extend(self._get_location_string(locations, ctxt))
456
- request.weight = weight
447
+ request = self._make_request("SumRequest", locations, ctxt, expression, weight)
457
448
  response = self.service.sum(request)
458
449
  return _convert_variant_to_value(response.value)
459
450
 
460
451
  def sum_if(self, expression, condition, locations, weight, ctxt=None) -> Any:
461
- """Get sum if a particular condition satisfies."""
462
- request = ReductionProtoModule.SumIfRequest()
463
- request.expression = expression
464
- request.condition = condition
465
- request.locations.extend(self._get_location_string(locations, ctxt))
466
- request.weight = weight
452
+ """Compute the weighted sum of the expression at locations where the given condition is satisfied."""
453
+ request = self._make_request(
454
+ "SumIfRequest", locations, ctxt, expression, weight, condition
455
+ )
467
456
  response = self.service.sum_if(request)
468
457
  return _convert_variant_to_value(response.value)
@@ -42,6 +42,11 @@ from ansys.fluent.core.services.interceptors import (
42
42
  TracingInterceptor,
43
43
  )
44
44
  from ansys.fluent.core.solver.error_message import allowed_name_error_message
45
+ from ansys.fluent.core.variable_strategies import (
46
+ FluentSVarNamingStrategy as naming_strategy,
47
+ )
48
+
49
+ _to_field_name_str = naming_strategy().to_string if naming_strategy else lambda s: s
45
50
 
46
51
 
47
52
  class SolutionVariableService:
@@ -354,6 +359,7 @@ class _AllowedSvarNames:
354
359
  SvarError
355
360
  If the given solution variable name is invalid.
356
361
  """
362
+ solution_variable_name = _to_field_name_str(solution_variable_name)
357
363
  if not self.is_valid(
358
364
  solution_variable_name, zone_names=zone_names, domain_name=domain_name
359
365
  ):
@@ -613,7 +619,9 @@ class SolutionVariableData:
613
619
  )
614
620
  svars_request.domainId = self._allowed_domain_names.valid_name(domain_name)
615
621
  svars_request.name = self._allowed_solution_variable_names.valid_name(
616
- solution_variable_name, zone_names, domain_name
622
+ solution_variable_name,
623
+ zone_names,
624
+ domain_name,
617
625
  )
618
626
  zone_id_name_map = {}
619
627
  for zone_name in zone_names: