ansys-fluent-core 0.28.1__py3-none-any.whl → 0.29.0__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 (223) hide show
  1. ansys/fluent/core/__init__.py +26 -1
  2. ansys/fluent/core/_stand_alone_datamodel_client/_datamodel_client.py +22 -0
  3. ansys/fluent/core/_version.py +24 -2
  4. ansys/fluent/core/codegen/__init__.py +22 -0
  5. ansys/fluent/core/codegen/allapigen.py +38 -5
  6. ansys/fluent/core/codegen/builtin_settingsgen.py +22 -0
  7. ansys/fluent/core/codegen/data/__init__.py +21 -0
  8. ansys/fluent/core/codegen/data/fluent_gui_help_patch.py +22 -0
  9. ansys/fluent/core/codegen/data/meshing_utilities_examples.py +22 -0
  10. ansys/fluent/core/codegen/datamodelgen.py +40 -4
  11. ansys/fluent/core/codegen/print_fluent_version.py +22 -0
  12. ansys/fluent/core/codegen/settingsgen.py +67 -4
  13. ansys/fluent/core/codegen/tuigen.py +44 -6
  14. ansys/fluent/core/codegen/walk_api.py +67 -18
  15. ansys/fluent/core/codegen/write_settings_yaml.py +22 -0
  16. ansys/fluent/core/data_model_cache.py +22 -0
  17. ansys/fluent/core/examples/__init__.py +22 -0
  18. ansys/fluent/core/examples/downloads.py +22 -0
  19. ansys/fluent/core/exceptions.py +22 -0
  20. ansys/fluent/core/file_session.py +22 -0
  21. ansys/fluent/core/filereader/__init__.py +21 -0
  22. ansys/fluent/core/filereader/case_file.py +22 -0
  23. ansys/fluent/core/filereader/casereader.py +22 -0
  24. ansys/fluent/core/filereader/data_file.py +22 -0
  25. ansys/fluent/core/filereader/lispy.py +22 -0
  26. ansys/fluent/core/fluent_connection.py +23 -1
  27. ansys/fluent/core/generated/api_tree/api_objects.json +1 -1
  28. ansys/fluent/core/generated/datamodel_252/meshing.py +32 -0
  29. ansys/fluent/core/generated/datamodel_252/preferences.py +7 -0
  30. ansys/fluent/core/generated/fluent_version_252.py +3 -3
  31. ansys/fluent/core/generated/meshing/tui_252.py +395 -390
  32. ansys/fluent/core/generated/solver/settings_222.py +0 -72
  33. ansys/fluent/core/generated/solver/settings_222.pyi +0 -307
  34. ansys/fluent/core/generated/solver/settings_231.py +0 -574
  35. ansys/fluent/core/generated/solver/settings_231.pyi +0 -561
  36. ansys/fluent/core/generated/solver/settings_232.py +0 -527
  37. ansys/fluent/core/generated/solver/settings_232.pyi +0 -2803
  38. ansys/fluent/core/generated/solver/settings_241.py +0 -478
  39. ansys/fluent/core/generated/solver/settings_241.pyi +0 -522
  40. ansys/fluent/core/generated/solver/settings_242.py +0 -361
  41. ansys/fluent/core/generated/solver/settings_242.pyi +0 -591
  42. ansys/fluent/core/generated/solver/settings_251.py +0 -399
  43. ansys/fluent/core/generated/solver/settings_251.pyi +0 -629
  44. ansys/fluent/core/generated/solver/settings_252.py +8118 -4206
  45. ansys/fluent/core/generated/solver/settings_252.pyi +7229 -3259
  46. ansys/fluent/core/generated/solver/tui_252.py +4508 -3877
  47. ansys/fluent/core/get_build_details.py +22 -0
  48. ansys/fluent/core/journaling.py +38 -0
  49. ansys/fluent/core/launcher/__init__.py +22 -0
  50. ansys/fluent/core/launcher/container_launcher.py +65 -56
  51. ansys/fluent/core/launcher/error_handler.py +30 -0
  52. ansys/fluent/core/launcher/fluent_container.py +45 -20
  53. ansys/fluent/core/launcher/launcher.py +53 -5
  54. ansys/fluent/core/launcher/launcher_utils.py +22 -0
  55. ansys/fluent/core/launcher/pim_launcher.py +120 -86
  56. ansys/fluent/core/launcher/process_launch_string.py +22 -0
  57. ansys/fluent/core/launcher/pyfluent_enums.py +22 -0
  58. ansys/fluent/core/launcher/server_info.py +45 -3
  59. ansys/fluent/core/launcher/slurm_launcher.py +25 -3
  60. ansys/fluent/core/launcher/standalone_launcher.py +68 -63
  61. ansys/fluent/core/launcher/watchdog.py +22 -0
  62. ansys/fluent/core/logging.py +24 -0
  63. ansys/fluent/core/logging_config.yaml +3 -0
  64. ansys/fluent/core/meshing/meshing_workflow.py +22 -0
  65. ansys/fluent/core/parametric.py +22 -0
  66. ansys/fluent/core/post_objects/__init__.py +21 -0
  67. ansys/fluent/core/post_objects/check_in_notebook.py +22 -0
  68. ansys/fluent/core/post_objects/meta.py +22 -0
  69. ansys/fluent/core/post_objects/post_helper.py +22 -0
  70. ansys/fluent/core/post_objects/post_object_definitions.py +22 -0
  71. ansys/fluent/core/post_objects/post_objects_container.py +22 -0
  72. ansys/fluent/core/post_objects/singleton_meta.py +22 -0
  73. ansys/fluent/core/post_objects/timing_decorator.py +22 -0
  74. ansys/fluent/core/report.py +77 -0
  75. ansys/fluent/core/rpvars.py +22 -0
  76. ansys/fluent/core/scheduler/__init__.py +22 -0
  77. ansys/fluent/core/scheduler/load_machines.py +22 -0
  78. ansys/fluent/core/scheduler/machine_list.py +22 -0
  79. ansys/fluent/core/search.py +22 -0
  80. ansys/fluent/core/services/__init__.py +22 -0
  81. ansys/fluent/core/services/api_upgrade.py +22 -0
  82. ansys/fluent/core/services/app_utilities.py +38 -0
  83. ansys/fluent/core/services/batch_ops.py +22 -0
  84. ansys/fluent/core/services/datamodel_se.py +163 -61
  85. ansys/fluent/core/services/datamodel_tui.py +22 -0
  86. ansys/fluent/core/services/deprecated_field_data.py +23 -1
  87. ansys/fluent/core/services/events.py +22 -0
  88. ansys/fluent/core/services/field_data.py +285 -2
  89. ansys/fluent/core/services/health_check.py +22 -0
  90. ansys/fluent/core/services/interceptors.py +50 -2
  91. ansys/fluent/core/services/monitor.py +22 -0
  92. ansys/fluent/core/services/reduction.py +22 -0
  93. ansys/fluent/core/services/scheme_eval.py +22 -0
  94. ansys/fluent/core/services/settings.py +22 -0
  95. ansys/fluent/core/services/solution_variables.py +22 -0
  96. ansys/fluent/core/services/streaming.py +22 -0
  97. ansys/fluent/core/services/transcript.py +22 -0
  98. ansys/fluent/core/session.py +39 -2
  99. ansys/fluent/core/session_base_meshing.py +22 -0
  100. ansys/fluent/core/session_meshing.py +22 -0
  101. ansys/fluent/core/session_meshing.pyi +22 -0
  102. ansys/fluent/core/session_pure_meshing.py +22 -0
  103. ansys/fluent/core/session_pure_meshing.pyi +22 -0
  104. ansys/fluent/core/session_shared.py +22 -0
  105. ansys/fluent/core/session_solver.py +43 -0
  106. ansys/fluent/core/session_solver.pyi +22 -0
  107. ansys/fluent/core/session_solver_aero.py +22 -0
  108. ansys/fluent/core/session_solver_icing.py +22 -0
  109. ansys/fluent/core/session_solver_lite.py +22 -0
  110. ansys/fluent/core/solver/__init__.py +22 -0
  111. ansys/fluent/core/solver/error_message.py +22 -0
  112. ansys/fluent/core/solver/flobject.py +22 -0
  113. ansys/fluent/core/solver/flunits.py +22 -0
  114. ansys/fluent/core/solver/function/__init__.py +22 -0
  115. ansys/fluent/core/solver/function/reduction.py +22 -0
  116. ansys/fluent/core/solver/settings_builtin_bases.py +22 -0
  117. ansys/fluent/core/solver/settings_builtin_data.py +22 -0
  118. ansys/fluent/core/solver/settings_external.py +22 -0
  119. ansys/fluent/core/streaming_services/__init__.py +21 -0
  120. ansys/fluent/core/streaming_services/datamodel_event_streaming.py +34 -12
  121. ansys/fluent/core/streaming_services/datamodel_streaming.py +22 -0
  122. ansys/fluent/core/streaming_services/events_streaming.py +22 -0
  123. ansys/fluent/core/streaming_services/field_data_streaming.py +22 -0
  124. ansys/fluent/core/streaming_services/monitor_streaming.py +23 -1
  125. ansys/fluent/core/streaming_services/streaming.py +22 -0
  126. ansys/fluent/core/streaming_services/transcript_streaming.py +22 -0
  127. ansys/fluent/core/systemcoupling.py +22 -0
  128. ansys/fluent/core/utils/__init__.py +22 -0
  129. ansys/fluent/core/utils/data_transfer.py +22 -0
  130. ansys/fluent/core/utils/deprecate.py +24 -1
  131. ansys/fluent/core/utils/dictionary_operations.py +22 -0
  132. ansys/fluent/core/utils/dump_session_data.py +22 -0
  133. ansys/fluent/core/utils/event_loop.py +22 -0
  134. ansys/fluent/core/utils/execution.py +22 -0
  135. ansys/fluent/core/utils/file_transfer_service.py +22 -0
  136. ansys/fluent/core/utils/fix_doc.py +22 -0
  137. ansys/fluent/core/utils/fldoc.py +22 -0
  138. ansys/fluent/core/utils/fluent_version.py +22 -0
  139. ansys/fluent/core/utils/networking.py +22 -0
  140. ansys/fluent/core/utils/setup_for_fluent.py +22 -0
  141. ansys/fluent/core/warnings.py +22 -0
  142. ansys/fluent/core/workflow.py +22 -0
  143. {ansys_fluent_core-0.28.1.dist-info → ansys_fluent_core-0.29.0.dist-info}/LICENSE +8 -8
  144. {ansys_fluent_core-0.28.1.dist-info → ansys_fluent_core-0.29.0.dist-info}/METADATA +56 -33
  145. ansys_fluent_core-0.29.0.dist-info/RECORD +219 -0
  146. {ansys_fluent_core-0.28.1.dist-info → ansys_fluent_core-0.29.0.dist-info}/WHEEL +1 -1
  147. ansys/fluent/core/docs/README.rst +0 -155
  148. ansys/fluent/tests/conftest.py +0 -415
  149. ansys/fluent/tests/fluent_fixtures.py +0 -195
  150. ansys/fluent/tests/integration/test_optislang/test_optislang_integration.py +0 -263
  151. ansys/fluent/tests/parametric/test_local_parametric_run.py +0 -36
  152. ansys/fluent/tests/parametric/test_local_parametric_setup.py +0 -34
  153. ansys/fluent/tests/parametric/test_parametric_workflow.py +0 -279
  154. ansys/fluent/tests/test_aero_session.py +0 -88
  155. ansys/fluent/tests/test_batch_ops.py +0 -39
  156. ansys/fluent/tests/test_builtin_settings.py +0 -761
  157. ansys/fluent/tests/test_cad_to_post_ftm.py +0 -525
  158. ansys/fluent/tests/test_cad_to_post_wtm.py +0 -250
  159. ansys/fluent/tests/test_casereader.py +0 -324
  160. ansys/fluent/tests/test_codegen.py +0 -783
  161. ansys/fluent/tests/test_creatable.py +0 -31
  162. ansys/fluent/tests/test_data_model_cache.py +0 -434
  163. ansys/fluent/tests/test_datamodel_api.py +0 -449
  164. ansys/fluent/tests/test_datamodel_service.py +0 -814
  165. ansys/fluent/tests/test_datareader.py +0 -103
  166. ansys/fluent/tests/test_error_handling.py +0 -24
  167. ansys/fluent/tests/test_events_manager.py +0 -214
  168. ansys/fluent/tests/test_field_data.py +0 -466
  169. ansys/fluent/tests/test_file_session.py +0 -355
  170. ansys/fluent/tests/test_file_transfer_service.py +0 -165
  171. ansys/fluent/tests/test_fix_doc.py +0 -29
  172. ansys/fluent/tests/test_flobject.py +0 -1235
  173. ansys/fluent/tests/test_fluent_fixes.py +0 -106
  174. ansys/fluent/tests/test_fluent_session.py +0 -270
  175. ansys/fluent/tests/test_fluent_version.py +0 -66
  176. ansys/fluent/tests/test_fluent_version_marker.py +0 -65
  177. ansys/fluent/tests/test_icing_session.py +0 -9
  178. ansys/fluent/tests/test_launcher.py +0 -529
  179. ansys/fluent/tests/test_launcher_remote.py +0 -272
  180. ansys/fluent/tests/test_lispy.py +0 -40
  181. ansys/fluent/tests/test_logging.py +0 -16
  182. ansys/fluent/tests/test_mapped_api.py +0 -774
  183. ansys/fluent/tests/test_meshing_utilities.py +0 -2436
  184. ansys/fluent/tests/test_meshing_workflow.py +0 -421
  185. ansys/fluent/tests/test_meshingmode/test_meshing_launch.py +0 -168
  186. ansys/fluent/tests/test_new_meshing_workflow.py +0 -1801
  187. ansys/fluent/tests/test_preferences.py +0 -89
  188. ansys/fluent/tests/test_pure_mesh_vs_mesh_workflow.py +0 -101
  189. ansys/fluent/tests/test_reduction.py +0 -484
  190. ansys/fluent/tests/test_rp_vars.py +0 -77
  191. ansys/fluent/tests/test_scheduler.py +0 -471
  192. ansys/fluent/tests/test_scheme_eval_222.py +0 -338
  193. ansys/fluent/tests/test_scheme_eval_231.py +0 -243
  194. ansys/fluent/tests/test_search.py +0 -344
  195. ansys/fluent/tests/test_session.py +0 -594
  196. ansys/fluent/tests/test_settings_api.py +0 -606
  197. ansys/fluent/tests/test_settings_reader.py +0 -85
  198. ansys/fluent/tests/test_slurm_future.py +0 -67
  199. ansys/fluent/tests/test_solution_variables.py +0 -241
  200. ansys/fluent/tests/test_solver_monitors.py +0 -83
  201. ansys/fluent/tests/test_solvermode/boundaries_periodic_expDict +0 -1712
  202. ansys/fluent/tests/test_solvermode/test_boundaries.py +0 -127
  203. ansys/fluent/tests/test_solvermode/test_calculationactivities.py +0 -20
  204. ansys/fluent/tests/test_solvermode/test_controls.py +0 -131
  205. ansys/fluent/tests/test_solvermode/test_general.py +0 -109
  206. ansys/fluent/tests/test_solvermode/test_initialization.py +0 -83
  207. ansys/fluent/tests/test_solvermode/test_materials.py +0 -40
  208. ansys/fluent/tests/test_solvermode/test_methods.py +0 -65
  209. ansys/fluent/tests/test_solvermode/test_models.py +0 -99
  210. ansys/fluent/tests/test_solvermode/test_named_expressions.py +0 -35
  211. ansys/fluent/tests/test_solvermode/test_post_vector.py +0 -22
  212. ansys/fluent/tests/test_solvermode/test_species_model.py +0 -67
  213. ansys/fluent/tests/test_streaming_services.py +0 -52
  214. ansys/fluent/tests/test_systemcoupling.py +0 -44
  215. ansys/fluent/tests/test_topy.py +0 -179
  216. ansys/fluent/tests/test_tui_api.py +0 -70
  217. ansys/fluent/tests/test_type_stub.py +0 -37
  218. ansys/fluent/tests/test_utils.py +0 -82
  219. ansys/fluent/tests/util/__init__.py +0 -36
  220. ansys/fluent/tests/util/meshing_workflow.py +0 -33
  221. ansys/fluent/tests/util/solver.py +0 -72
  222. ansys_fluent_core-0.28.1.dist-info/AUTHORS +0 -12
  223. ansys_fluent_core-0.28.1.dist-info/RECORD +0 -294
@@ -1,355 +0,0 @@
1
- from pathlib import Path
2
-
3
- import pytest
4
-
5
- from ansys.fluent.core import examples
6
- from ansys.fluent.core.file_session import (
7
- FileSession,
8
- InvalidFieldName,
9
- InvalidMultiPhaseFieldName,
10
- )
11
- from ansys.fluent.core.services.field_data import SurfaceDataType
12
-
13
-
14
- def round_off_list_elements(input_list):
15
- for index, value in enumerate(input_list):
16
- input_list[index] = round(value, 6)
17
-
18
- return input_list
19
-
20
-
21
- def test_field_info_data_multi_phase():
22
- case_file_name = examples.download_file(
23
- "mixing_elbow_mul_ph.cas.h5",
24
- "pyfluent/file_session",
25
- return_without_path=False,
26
- )
27
- data_file_name = examples.download_file(
28
- "mixing_elbow_mul_ph.dat.h5",
29
- "pyfluent/file_session",
30
- return_without_path=False,
31
- )
32
- file_session = FileSession()
33
-
34
- # backward compatibility check
35
- assert file_session.fields.field_data == file_session.field_data
36
-
37
- assert Path(case_file_name).exists()
38
- assert Path(data_file_name).exists()
39
- file_session.read_case(case_file_name)
40
- file_session.read_data(data_file_name)
41
-
42
- sv_density = file_session.fields.field_data.get_scalar_field_data(
43
- field_name="phase-2:SV_DENSITY", surfaces=[33]
44
- )
45
- assert sv_density[33].shape == (268,)
46
- assert sv_density[33][130] == 1.225
47
- assert (
48
- round(
49
- file_session.fields.field_data.get_scalar_field_data(
50
- field_name="phase-2:SV_WALL_YPLUS", surfaces=[33]
51
- )[33][130],
52
- 5,
53
- )
54
- == 0.00103
55
- )
56
- vector_data = file_session.fields.field_data.get_vector_field_data
57
- assert vector_data(field_name="phase-2:velocity", surfaces=[33])[33].shape == (
58
- 268,
59
- 3,
60
- )
61
- assert vector_data(field_name="phase-1:velocity", surfaces=[34])[34].shape == (
62
- 2168,
63
- 3,
64
- )
65
-
66
-
67
- def test_field_info_data_single_phase():
68
- case_file_name = examples.download_file(
69
- "elbow1.cas.h5", "pyfluent/file_session", return_without_path=False
70
- )
71
- data_file_name = examples.download_file(
72
- "elbow1.dat.h5", "pyfluent/file_session", return_without_path=False
73
- )
74
- file_session = FileSession()
75
-
76
- # backward compatibility check
77
- assert file_session.fields.field_data == file_session.field_data
78
-
79
- file_session.read_case(case_file_name)
80
- file_session.read_data(data_file_name)
81
-
82
- assert round_off_list_elements(
83
- file_session.field_info.get_scalar_field_range("SV_P")
84
- ) == [-339.203452, 339.417934]
85
- assert len(file_session.field_info.get_scalar_fields_info()) == 29
86
- assert list(file_session.field_info.get_surfaces_info().keys()) == [
87
- "wall",
88
- "symmetry",
89
- "pressure-outlet-7",
90
- "velocity-inlet-6",
91
- "velocity-inlet-5",
92
- "default-interior",
93
- ]
94
- sv_t_wall = file_session.fields.field_data.get_scalar_field_data(
95
- "SV_T", surfaces=["wall"]
96
- )
97
- assert sv_t_wall["wall"].shape == (3630,)
98
- assert round(sv_t_wall["wall"][1800], 4) == 313.15
99
-
100
- surface_data = file_session.fields.field_data.get_surface_data
101
- surface_data_wall = surface_data(
102
- data_types=[SurfaceDataType.Vertices], surfaces=[3]
103
- )
104
- assert surface_data_wall[3].shape == (3810, 3)
105
- assert round(surface_data_wall[3][1500][0], 5) == 0.12406
106
- assert round(surface_data_wall[3][1500][1], 5) == 0.09525
107
- assert round(surface_data_wall[3][1500][2], 5) == 0.04216
108
-
109
- surface_data_symmetry = surface_data(
110
- data_types=[SurfaceDataType.FacesConnectivity], surfaces=["symmetry"]
111
- )
112
- assert len(surface_data_symmetry["symmetry"]) == 2018
113
- assert list(surface_data_symmetry["symmetry"][1000]) == [1259, 1260, 1227, 1226]
114
-
115
- vector_data = file_session.fields.field_data.get_vector_field_data
116
- assert vector_data("velocity", surfaces=["wall"])["wall"].shape == (3630, 3)
117
-
118
- vector_data_symmetry = vector_data("velocity", surfaces=["symmetry"])["symmetry"]
119
- assert vector_data_symmetry.shape == (2018, 3)
120
- assert round(vector_data_symmetry[1009][0], 5) == 0.0023
121
- assert round(vector_data_symmetry[1009][1], 5) == 1.22311
122
-
123
-
124
- def test_data_reader_single_phase():
125
- case_file_name = examples.download_file(
126
- "elbow1.cas.h5", "pyfluent/file_session", return_without_path=False
127
- )
128
- data_file_name = examples.download_file(
129
- "elbow1.dat.h5", "pyfluent/file_session", return_without_path=False
130
- )
131
- file_session = FileSession()
132
- file_session.read_case(case_file_name)
133
- file_session.read_data(data_file_name)
134
-
135
- data_file = file_session._data_file
136
- assert data_file.case_file == "elbow1.cas.h5"
137
- assert data_file.get_phases() == ["phase-1"]
138
- assert len(data_file.get_face_variables("phase-1")) == 30
139
- assert len(data_file.get_cell_variables("phase-1")) == 14
140
-
141
- assert data_file.get_cell_variables("phase-1") == [
142
- "SV_BF_V",
143
- "SV_D",
144
- "SV_DENSITY",
145
- "SV_H",
146
- "SV_K",
147
- "SV_LORENTZ_FORCE",
148
- "SV_MU_LAM",
149
- "SV_MU_T",
150
- "SV_P",
151
- "SV_T",
152
- "SV_U",
153
- "SV_V",
154
- "SV_W",
155
- "",
156
- ]
157
-
158
- assert len(data_file.get_face_scalar_field_data("phase-1", "SV_DENSITY", 3)) == 3630
159
-
160
-
161
- def test_data_reader_multi_phase():
162
- case_file_name = examples.download_file(
163
- "mixing_elbow_mul_ph.cas.h5",
164
- "pyfluent/file_session",
165
- return_without_path=False,
166
- )
167
- data_file_name = examples.download_file(
168
- "mixing_elbow_mul_ph.dat.h5",
169
- "pyfluent/file_session",
170
- return_without_path=False,
171
- )
172
- file_session = FileSession()
173
- file_session.read_case(case_file_name)
174
- file_session.read_data(data_file_name)
175
-
176
- data_file = file_session._data_file
177
- assert data_file.case_file == "mixing_elbow_mul_ph.cas.h5"
178
- assert data_file.get_phases() == [
179
- "phase-1",
180
- "phase-2",
181
- "phase-3",
182
- "phase-4",
183
- ]
184
- assert len(data_file.get_face_variables("phase-1")) == 23
185
- assert len(data_file.get_face_variables("phase-3")) == 13
186
- assert len(data_file.get_cell_variables("phase-2")) == 14
187
-
188
- assert data_file.get_cell_variables("phase-2") == [
189
- "SV_BF_V",
190
- "SV_DENSITY",
191
- "SV_DENSITY_M1",
192
- "SV_MU_LAM",
193
- "SV_MU_T",
194
- "SV_U",
195
- "SV_U_M1",
196
- "SV_V",
197
- "SV_VOF",
198
- "SV_VOF_M1",
199
- "SV_V_M1",
200
- "SV_W",
201
- "SV_W_M1",
202
- "",
203
- ]
204
-
205
- assert len(data_file.get_face_scalar_field_data("phase-1", "SV_DENSITY", 33)) == 268
206
-
207
-
208
- def test_transaction_request_single_phase():
209
- case_file_name = examples.download_file(
210
- "elbow1.cas.h5", "pyfluent/file_session", return_without_path=False
211
- )
212
- data_file_name = examples.download_file(
213
- "elbow1.dat.h5", "pyfluent/file_session", return_without_path=False
214
- )
215
- file_session = FileSession()
216
- file_session.read_case(case_file_name)
217
- file_session.read_data(data_file_name)
218
-
219
- field_data = file_session.fields.field_data
220
-
221
- transaction_1 = field_data.new_transaction()
222
-
223
- transaction_1.add_surfaces_request(surfaces=[3, 5])
224
-
225
- transaction_1.add_scalar_fields_request("SV_T", surfaces=[3, 5])
226
- transaction_1.add_scalar_fields_request("SV_T", surfaces=["wall", "symmetry"])
227
-
228
- transaction_1.add_vector_fields_request("velocity", surfaces=[3, 5])
229
-
230
- data = transaction_1.get_fields()
231
-
232
- assert data
233
-
234
- assert len(data) == 3
235
-
236
- # Surfaces Data
237
- surface_data = data[(("type", "surface-data"),)]
238
- assert len(surface_data) == 2
239
- assert list(surface_data[3].keys()) == ["faces", "vertices"]
240
-
241
- # Scalar Field Data
242
- scalar_field_tag = (
243
- ("type", "scalar-field"),
244
- ("dataLocation", 1),
245
- ("boundaryValues", False),
246
- )
247
- scalar_data = data[scalar_field_tag]
248
- assert len(scalar_data) == 3
249
- assert len(scalar_data[5]["SV_T"]) == 100
250
- assert round(scalar_data[5]["SV_T"][50], 2) == 295.43
251
-
252
- surf_id = file_session.field_info.get_surfaces_info()["symmetry"]["surface_id"][0]
253
- assert round(scalar_data[surf_id]["SV_T"][50], 2) == 293.15
254
-
255
- # Vector Field Data
256
- vector_data = data[(("type", "vector-field"),)]
257
- assert len(vector_data) == 2
258
- assert len(vector_data[5]["velocity"]) == 300
259
- assert round(vector_data[5]["velocity"][150], 5) == 0.03035
260
- assert round(vector_data[5]["velocity"][151], 5) == 0.49224
261
- assert round(vector_data[5]["velocity"][152], 5) == 0.00468
262
-
263
-
264
- def test_transaction_request_multi_phase():
265
- case_file_name = examples.download_file(
266
- "mixing_elbow_mul_ph.cas.h5",
267
- "pyfluent/file_session",
268
- return_without_path=False,
269
- )
270
- data_file_name = examples.download_file(
271
- "mixing_elbow_mul_ph.dat.h5",
272
- "pyfluent/file_session",
273
- return_without_path=False,
274
- )
275
- file_session = FileSession()
276
- file_session.read_case(case_file_name)
277
- file_session.read_data(data_file_name)
278
-
279
- field_data = file_session.fields.field_data
280
-
281
- transaction_1 = field_data.new_transaction()
282
-
283
- transaction_1.add_scalar_fields_request("phase-2:SV_WALL_YPLUS", surfaces=[29, 30])
284
-
285
- transaction_1.add_vector_fields_request("phase-3:velocity", surfaces=[31])
286
-
287
- data = transaction_1.get_fields()
288
-
289
- assert data
290
-
291
- assert len(data) == 2
292
-
293
- # Scalar Field Data
294
- scalar_field_tag = (
295
- ("type", "scalar-field"),
296
- ("dataLocation", 1),
297
- ("boundaryValues", False),
298
- )
299
-
300
- assert len(data[scalar_field_tag]) == 2
301
-
302
- # Vector Field Data
303
- vector_data = data[(("type", "vector-field"),)]
304
- assert len(vector_data) == 1
305
- assert len(vector_data[31]["phase-3:velocity"]) == 456
306
-
307
-
308
- def test_error_handling_single_phase():
309
- case_file_name = examples.download_file(
310
- "elbow1.cas.h5", "pyfluent/file_session", return_without_path=False
311
- )
312
- data_file_name = examples.download_file(
313
- "elbow1.dat.h5", "pyfluent/file_session", return_without_path=False
314
- )
315
- file_session = FileSession()
316
- file_session.read_case(case_file_name)
317
- file_session.read_data(data_file_name)
318
-
319
- field_data = file_session.fields.field_data
320
-
321
- transaction_1 = field_data.new_transaction()
322
-
323
- with pytest.raises(NotImplementedError):
324
- transaction_1.add_pathlines_fields_request("SV_T", surfaces=[3, 5])
325
-
326
- with pytest.raises(NotImplementedError):
327
- field_data.get_pathlines_field_data("SV_T", surfaces=[3, 5])
328
-
329
-
330
- def test_error_handling_multi_phase():
331
- case_file_name = examples.download_file(
332
- "mixing_elbow_mul_ph.cas.h5",
333
- "pyfluent/file_session",
334
- return_without_path=False,
335
- )
336
- data_file_name = examples.download_file(
337
- "mixing_elbow_mul_ph.dat.h5",
338
- "pyfluent/file_session",
339
- return_without_path=False,
340
- )
341
- file_session = FileSession()
342
- file_session.read_case(case_file_name)
343
- file_session.read_data(data_file_name)
344
-
345
- field_data = file_session.fields.field_data
346
-
347
- transaction_1 = field_data.new_transaction()
348
- with pytest.raises(InvalidMultiPhaseFieldName):
349
- transaction_1.add_scalar_fields_request("SV_WALL_YPLUS", surfaces=[29, 30])
350
-
351
- with pytest.raises(InvalidMultiPhaseFieldName):
352
- field_data.get_vector_field_data("velocity", surfaces=[34])[34].size
353
-
354
- with pytest.raises(InvalidFieldName):
355
- field_data.get_vector_field_data("phase-1:temperature", surfaces=[34])[34].size
@@ -1,165 +0,0 @@
1
- """Test file transfer service."""
2
-
3
- import os
4
- import pathlib
5
-
6
- import pytest
7
-
8
- from ansys.fluent.core import examples
9
- from ansys.fluent.core.utils.file_transfer_service import (
10
- LocalFileTransferStrategy,
11
- RemoteFileTransferStrategy,
12
- )
13
-
14
-
15
- def file_downloaded_to_the_client(file_name: str) -> bool:
16
- """Check if client file exists.
17
-
18
- Parameters
19
- ----------
20
- file_name: str
21
- File name.
22
-
23
- Returns
24
- -------
25
- Whether file exists.
26
- """
27
- full_file_name = pathlib.Path(
28
- "/home/runner/.local/share/ansys_fluent_core/examples"
29
- ) / os.path.basename(file_name)
30
- return full_file_name.is_file()
31
-
32
-
33
- @pytest.mark.codegen_required
34
- @pytest.mark.fluent_version(">=24.2")
35
- def test_remote_grpc_fts_container(
36
- monkeypatch, new_solver_session, new_meshing_session
37
- ):
38
- solver = new_solver_session
39
- import_case_file_name = examples.download_file(
40
- "mixing_elbow.cas.h5", "pyfluent/mixing_elbow"
41
- )
42
- import_mesh_file_name = examples.download_file(
43
- "mixing_elbow.msh.h5", "pyfluent/mixing_elbow"
44
- )
45
- solver.file.read_case(file_name=import_case_file_name)
46
- if solver._file_transfer_service:
47
- solver.file.write_case(file_name="downloaded_solver_mixing_elbow.cas.h5")
48
- assert solver.file_exists_on_remote("downloaded_solver_mixing_elbow.cas.h5")
49
- assert file_downloaded_to_the_client("downloaded_solver_mixing_elbow.cas.h5")
50
-
51
- meshing = new_meshing_session
52
- meshing.meshing.File.ReadMesh(FileName=import_mesh_file_name)
53
- if meshing._file_transfer_service:
54
- meshing.meshing.File.WriteMesh(
55
- FileName="downloaded_meshing_mixing_elbow.msh.h5"
56
- )
57
- assert meshing.file_exists_on_remote("downloaded_meshing_mixing_elbow.msh.h5")
58
- assert file_downloaded_to_the_client("downloaded_meshing_mixing_elbow.msh.h5")
59
-
60
-
61
- @pytest.mark.standalone
62
- def test_read_case_and_data(monkeypatch):
63
- import ansys.fluent.core as pyfluent
64
-
65
- monkeypatch.setattr(pyfluent, "USE_FILE_TRANSFER_SERVICE", True)
66
-
67
- case_file_name = examples.download_file(
68
- "mixing_elbow.cas.h5", "pyfluent/mixing_elbow"
69
- )
70
- data_file_name = examples.download_file(
71
- "mixing_elbow.dat.h5", "pyfluent/mixing_elbow"
72
- )
73
- assert case_file_name
74
- assert data_file_name
75
- solver = pyfluent.launch_fluent(file_transfer_service=LocalFileTransferStrategy())
76
-
77
- solver.file.read(file_type="case-data", file_name=case_file_name)
78
- solver.file.write(file_type="case-data", file_name="write_data.cas.h5")
79
-
80
- solver.file.read_case_data(file_name=case_file_name)
81
- solver.file.write_case_data(file_name="write_case_data.cas.h5")
82
- solver.exit()
83
-
84
- solver = pyfluent.launch_fluent(
85
- file_transfer_service=LocalFileTransferStrategy(server_cwd=os.getcwd())
86
- )
87
-
88
- solver.file.read(file_type="case-data", file_name=case_file_name)
89
- solver.file.write(file_type="case-data", file_name="write_data.cas.h5")
90
-
91
- solver.file.read_case_data(file_name=case_file_name)
92
- solver.file.write_case_data(file_name="write_case_data.cas.h5")
93
- solver.exit()
94
-
95
-
96
- @pytest.mark.skip(reason="Skips upload even after adding ImportGeometry task object.")
97
- def test_datamodel_execute():
98
- import ansys.fluent.core as pyfluent
99
-
100
- meshing = pyfluent.launch_fluent(
101
- mode="meshing", file_transfer_service=RemoteFileTransferStrategy()
102
- )
103
- meshing.workflow.InitializeWorkflow(WorkflowType="Watertight Geometry")
104
- import_geom = meshing.workflow.TaskObject["Import Geometry"]
105
- import_geom.Arguments = {"FileName": "geom"}
106
-
107
- with pytest.raises(RuntimeError):
108
- import_geom.Execute()
109
-
110
-
111
- def test_file_list_in_datamodel(fault_tolerant_workflow_session):
112
- meshing = fault_tolerant_workflow_session
113
- fmd_file = examples.download_file("exhaust_system.fmd", "pyfluent/exhaust_system")
114
- meshing.PartManagement.AppendFmdFiles(
115
- AssemblyParentNode=0,
116
- FilePath=[fmd_file],
117
- FileUnit="mm",
118
- IgnoreSolidNamesAppend=False,
119
- JtLOD="1",
120
- Options={
121
- "Line": False,
122
- "Solid": True,
123
- "Surface": True,
124
- },
125
- PartPerBody=False,
126
- PrefixParentName=False,
127
- RemoveEmptyParts=True,
128
- Route="Native",
129
- )
130
-
131
-
132
- @pytest.mark.standalone
133
- def test_local_file_transfer_in_datamodel(monkeypatch):
134
- import ansys.fluent.core as pyfluent
135
-
136
- monkeypatch.setattr(pyfluent, "USE_FILE_TRANSFER_SERVICE", True)
137
-
138
- fmd_file = examples.download_file("exhaust_system.fmd", "pyfluent/exhaust_system")
139
-
140
- assert fmd_file
141
-
142
- meshing = pyfluent.launch_fluent(
143
- mode=pyfluent.FluentMode.MESHING,
144
- file_transfer_service=LocalFileTransferStrategy(),
145
- )
146
-
147
- meshing.workflow.InitializeWorkflow(WorkflowType="Fault-tolerant Meshing")
148
-
149
- meshing.PartManagement.AppendFmdFiles(
150
- AssemblyParentNode=0,
151
- FilePath=[fmd_file],
152
- FileUnit="mm",
153
- IgnoreSolidNamesAppend=False,
154
- JtLOD="1",
155
- Options={
156
- "Line": False,
157
- "Solid": True,
158
- "Surface": True,
159
- },
160
- PartPerBody=False,
161
- PrefixParentName=False,
162
- RemoveEmptyParts=True,
163
- Route="Native",
164
- )
165
- meshing.exit()
@@ -1,29 +0,0 @@
1
- from ansys.fluent.core.utils.fix_doc import fix_settings_doc
2
-
3
-
4
- def test_fix_definition_list_in_settings_doc():
5
- old_doc = """Menu to define the rotor pitch and flapping angles.
6
- - blade-pitch-collective : ,
7
- - blade-pitch-cyclic-sin : ,
8
- - blade-pitch-cyclic-cos : ,
9
- For more details please consult the help option of the corresponding menu or TUI command."""
10
- new_doc = fix_settings_doc(old_doc)
11
- assert (
12
- new_doc
13
- == """Menu to define the rotor pitch and flapping angles.
14
-
15
- - blade-pitch-collective : ,
16
- - blade-pitch-cyclic-sin : ,
17
- - blade-pitch-cyclic-cos : ,
18
-
19
- For more details please consult the help option of the corresponding menu or TUI command."""
20
- )
21
-
22
-
23
- def test_fix_wildcards_in_settings_doc():
24
- old_doc = """Read boundary profile data (*.prof, *.csv). Default is *.prof."""
25
- new_doc = fix_settings_doc(old_doc)
26
- assert (
27
- new_doc
28
- == r"""Read boundary profile data (\\*.prof, \\*.csv). Default is \\*.prof."""
29
- )