ansys-systemcoupling-core 0.3.1__py3-none-any.whl → 0.4.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-systemcoupling-core might be problematic. Click here for more details.

Files changed (165) hide show
  1. ansys/systemcoupling/core/__init__.py +23 -1
  2. ansys/systemcoupling/core/_version.py +22 -0
  3. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_data_transfer_by_display_names.py +0 -3
  4. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_interface.py +21 -23
  5. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_interface_by_display_names.py +0 -3
  6. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_participant.py +40 -20
  7. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/analysis_control.py +0 -42
  8. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/avoid_data_reconstruction.py +0 -10
  9. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/case_root.py +7 -1
  10. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/coupling_participant_child.py +2 -97
  11. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/execution_control.py +1 -31
  12. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/fluent_input.py +0 -10
  13. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/fmu_parameter_child.py +0 -30
  14. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/has_input_file_changed.py +2 -2
  15. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/mapping_control.py +0 -10
  16. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/open_results_in_ensight.py +0 -28
  17. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/output_control.py +1 -6
  18. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/region_child.py +3 -2
  19. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/setup_root.py +1 -49
  20. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/solution_control.py +0 -24
  21. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/solution_root.py +1 -7
  22. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/start_participants.py +1 -1
  23. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/update_participant.py +8 -8
  24. ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/variable_child.py +1 -31
  25. ansys/systemcoupling/core/adaptor/api_24_1/add_data_transfer_by_display_names.py +3 -0
  26. ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/add_fsi_data_transfers.py +1 -12
  27. ansys/systemcoupling/core/adaptor/api_24_1/add_interface.py +23 -21
  28. ansys/systemcoupling/core/adaptor/api_24_1/add_interface_by_display_names.py +3 -0
  29. ansys/systemcoupling/core/adaptor/api_24_1/add_participant.py +20 -40
  30. ansys/systemcoupling/core/adaptor/api_24_1/analysis_control.py +42 -0
  31. ansys/systemcoupling/core/adaptor/api_24_1/avoid_data_reconstruction.py +10 -0
  32. ansys/systemcoupling/core/adaptor/api_24_1/case_root.py +1 -7
  33. ansys/systemcoupling/core/adaptor/api_24_1/coupling_participant_child.py +85 -2
  34. ansys/systemcoupling/core/adaptor/api_24_1/execution_control.py +11 -1
  35. ansys/systemcoupling/core/adaptor/api_24_1/fmu_parameter_child.py +30 -0
  36. ansys/systemcoupling/core/adaptor/api_24_1/has_input_file_changed.py +2 -2
  37. ansys/systemcoupling/core/adaptor/api_24_1/mapping_control.py +10 -0
  38. ansys/systemcoupling/core/adaptor/api_24_1/open_results_in_ensight.py +28 -0
  39. ansys/systemcoupling/core/adaptor/api_24_1/output_control.py +6 -1
  40. ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/record_interactions.py +0 -10
  41. ansys/systemcoupling/core/adaptor/api_24_1/region_child.py +2 -2
  42. ansys/systemcoupling/core/adaptor/api_24_1/setup_root.py +49 -1
  43. ansys/systemcoupling/core/adaptor/api_24_1/solution_control.py +24 -0
  44. ansys/systemcoupling/core/adaptor/api_24_1/solution_root.py +7 -1
  45. ansys/systemcoupling/core/adaptor/api_24_1/start_participants.py +1 -1
  46. ansys/systemcoupling/core/adaptor/api_24_1/update_participant.py +8 -8
  47. ansys/systemcoupling/core/adaptor/api_24_1/variable_child.py +31 -1
  48. ansys/systemcoupling/core/adaptor/impl/get_status_messages.py +22 -0
  49. ansys/systemcoupling/core/adaptor/impl/get_syc_version.py +26 -2
  50. ansys/systemcoupling/core/adaptor/impl/injected_commands.py +29 -0
  51. ansys/systemcoupling/core/adaptor/impl/root_source.py +22 -1
  52. ansys/systemcoupling/core/adaptor/impl/static_info.py +22 -0
  53. ansys/systemcoupling/core/adaptor/impl/syc_proxy.py +22 -0
  54. ansys/systemcoupling/core/adaptor/impl/syc_proxy_interface.py +22 -0
  55. ansys/systemcoupling/core/adaptor/impl/types.py +23 -0
  56. ansys/systemcoupling/core/client/grpc_client.py +22 -0
  57. ansys/systemcoupling/core/client/services/command_query.py +22 -0
  58. ansys/systemcoupling/core/client/services/output_stream.py +22 -0
  59. ansys/systemcoupling/core/client/services/process.py +22 -0
  60. ansys/systemcoupling/core/client/services/solution.py +22 -0
  61. ansys/systemcoupling/core/client/syc_container.py +22 -0
  62. ansys/systemcoupling/core/client/syc_process.py +22 -0
  63. ansys/systemcoupling/core/client/variant.py +22 -0
  64. ansys/systemcoupling/core/examples/__init__.py +22 -0
  65. ansys/systemcoupling/core/examples/downloads.py +23 -0
  66. ansys/systemcoupling/core/native_api/__init__.py +22 -0
  67. ansys/systemcoupling/core/native_api/command_metadata.py +23 -0
  68. ansys/systemcoupling/core/native_api/datamodel_metadata.py +22 -0
  69. ansys/systemcoupling/core/native_api/meta_wrapper.py +23 -0
  70. ansys/systemcoupling/core/native_api/native_api.py +22 -0
  71. ansys/systemcoupling/core/native_api/object_path.py +22 -0
  72. ansys/systemcoupling/core/participant/manager.py +22 -0
  73. ansys/systemcoupling/core/participant/mapdl.py +298 -0
  74. ansys/systemcoupling/core/participant/protocol.py +22 -0
  75. ansys/systemcoupling/core/session.py +22 -0
  76. ansys/systemcoupling/core/syc_version.py +22 -0
  77. ansys/systemcoupling/core/util/logging.py +22 -0
  78. ansys/systemcoupling/core/util/name_util.py +22 -0
  79. ansys/systemcoupling/core/util/pathstr.py +23 -1
  80. ansys/systemcoupling/core/util/state_keys.py +22 -0
  81. ansys/systemcoupling/core/util/yaml_helper.py +22 -0
  82. {ansys_systemcoupling_core-0.3.1.dist-info → ansys_systemcoupling_core-0.4.dev0.dist-info}/METADATA +19 -18
  83. {ansys_systemcoupling_core-0.3.1.dist-info → ansys_systemcoupling_core-0.4.dev0.dist-info}/RECORD +165 -164
  84. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/_add_participant.py +0 -0
  85. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/_solve.py +0 -0
  86. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/abort.py +0 -0
  87. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/activate_hidden.py +0 -0
  88. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_data_transfer.py +0 -0
  89. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_expression_function.py +0 -0
  90. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_named_expression.py +0 -0
  91. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_reference_frame.py +0 -0
  92. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/add_transformation.py +0 -0
  93. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/apip.py +0 -0
  94. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/ascii_output.py +0 -0
  95. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/attribute.py +0 -0
  96. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/attribute_child.py +0 -0
  97. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/available_ports.py +0 -0
  98. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/clear_state.py +0 -0
  99. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/coupling_interface.py +0 -0
  100. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/coupling_interface_child.py +0 -0
  101. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/coupling_participant.py +0 -0
  102. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/create_restart_point.py +0 -0
  103. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/data_transfer.py +0 -0
  104. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/data_transfer_child.py +0 -0
  105. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/delete_snapshot.py +0 -0
  106. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/delete_transformation.py +0 -0
  107. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/dimensionality.py +0 -0
  108. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/expression.py +0 -0
  109. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/expression_child.py +0 -0
  110. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/expression_function.py +0 -0
  111. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/expression_function_child.py +0 -0
  112. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/external_data_file.py +0 -0
  113. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/fmu_parameter.py +0 -0
  114. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/generate_input_file.py +0 -0
  115. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/get_execution_command.py +0 -0
  116. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/get_machines.py +0 -0
  117. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/get_region_names_for_participant.py +0 -0
  118. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/get_setup_summary.py +0 -0
  119. /ansys/systemcoupling/core/adaptor/{api_24_1 → api_23_1}/get_snapshots.py +0 -0
  120. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/get_status_messages.py +0 -0
  121. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/global_stabilization.py +0 -0
  122. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/import_system_coupling_input_file.py +0 -0
  123. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/initialize.py +0 -0
  124. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/instancing.py +0 -0
  125. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/instancing_child.py +0 -0
  126. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/interrupt.py +0 -0
  127. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/library.py +0 -0
  128. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/open.py +0 -0
  129. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/open_snapshot.py +0 -0
  130. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/partition_participants.py +0 -0
  131. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/reference_frame.py +0 -0
  132. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/reference_frame_child.py +0 -0
  133. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/region.py +0 -0
  134. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/reload_expression_function_modules.py +0 -0
  135. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/results.py +0 -0
  136. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/save.py +0 -0
  137. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/save_snapshot.py +0 -0
  138. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/shutdown.py +0 -0
  139. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/side.py +0 -0
  140. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/side_child.py +0 -0
  141. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/solve.py +0 -0
  142. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/stabilization.py +0 -0
  143. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/step.py +0 -0
  144. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/transformation.py +0 -0
  145. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/transformation_child.py +0 -0
  146. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/type.py +0 -0
  147. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/unmapped_value_options.py +0 -0
  148. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/update_control.py +0 -0
  149. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/variable.py +0 -0
  150. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/write_csv_chart_files.py +0 -0
  151. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_23_1}/write_ensight.py +0 -0
  152. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/add_aerodamping_data_transfers.py +0 -0
  153. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/add_ordered_data_transfers.py +0 -0
  154. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/add_thermal_data_transfers.py +0 -0
  155. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/automatic_alignment_options.py +0 -0
  156. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/get_add_data_transfer_group_commands.py +0 -0
  157. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/get_mode_shape_variables.py +0 -0
  158. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/get_thermal_data_transfer_options.py +0 -0
  159. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/get_transformation.py +0 -0
  160. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/live_visualization.py +0 -0
  161. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/live_visualization_child.py +0 -0
  162. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/parameter.py +0 -0
  163. /ansys/systemcoupling/core/adaptor/{api_24_2 → api_24_1}/parameter_child.py +0 -0
  164. {ansys_systemcoupling_core-0.3.1.dist-info → ansys_systemcoupling_core-0.4.dev0.dist-info}/LICENSE +0 -0
  165. {ansys_systemcoupling_core-0.3.1.dist-info → ansys_systemcoupling_core-0.4.dev0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,298 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ from dataclasses import dataclass
24
+ from typing import List
25
+
26
+
27
+ class MapdlSystemCouplingInterface(object):
28
+ @dataclass
29
+ class Variable:
30
+ name: str
31
+ display_name: str
32
+ tensor_type: str
33
+ is_extensive: bool
34
+ location: str
35
+ quantity_type: str
36
+
37
+ @dataclass
38
+ class Region:
39
+ name: str
40
+ display_name: str
41
+ topology: str
42
+ input_variables: List[str]
43
+ output_variables: List[str]
44
+
45
+ def __init__(self, solver):
46
+ self._solver = solver
47
+ self.__clear()
48
+ if self._solver.version < 24.2:
49
+ msg = "PySystemCoupling integration requires MAPDL version 24.2 or later."
50
+ msg += f" Current version is {self._solver.version}"
51
+ raise RuntimeError(msg)
52
+
53
+ @property
54
+ def participant_type(self) -> str:
55
+ return "MAPDL"
56
+
57
+ def get_variables(self):
58
+ self._parse_setup()
59
+ return self.__variables
60
+
61
+ def get_regions(self):
62
+ self._parse_setup()
63
+ return self.__regions
64
+
65
+ def get_analysis_type(self) -> str:
66
+ analysis_type = int(self._solver.get(entity="ACTIVE", item1="ANTY"))
67
+ if analysis_type == 0:
68
+ return "Steady"
69
+ elif analysis_type == 4:
70
+ return "Transient"
71
+ else:
72
+ raise MapdlRuntimeError(f"Unsupported analysis type: {analysis_type}")
73
+
74
+ def connect(self, host, port, name):
75
+ self._solver.run(f"scconnect,{host},{port},{name}")
76
+
77
+ def solve(self):
78
+ self._solver.solve()
79
+
80
+ def __clear(self):
81
+ self.__regions = list()
82
+ self.__variables = list()
83
+ self.__structural = False
84
+ self.__thermal = False
85
+
86
+ def _parse_setup(self):
87
+ self.__clear()
88
+ # TODO: need to actually check element types connected to the FSI region
89
+ et_index = self._solver.get(entity="ACTIVE", item1="TYPE")
90
+ element_type = int(
91
+ self._solver.get(
92
+ entity="ETYP", entnum=et_index, item1="ATTR", it1num="ENAM"
93
+ )
94
+ )
95
+ # TODO: the elements list may not be complete
96
+ if element_type in {181, 185, 186, 187, 190, 225, 226, 227, 281, 285}:
97
+ self._activate_structural()
98
+ if element_type in {131, 132, 225, 226, 227, 278, 279, 291}:
99
+ self._activate_thermal()
100
+
101
+ num_comp = int(self._solver.get(entity="COMP", item1="NCOMP"))
102
+ for curr_comp in range(1, num_comp + 1):
103
+ region_name = self._solver.get(
104
+ entity="COMP", entnum=curr_comp, item1="NAME"
105
+ )
106
+ comp_type = int(
107
+ self._solver.get(entity="COMP", entnum=region_name, item1="TYPE")
108
+ )
109
+ # if type of component is "Nodes" (1), check for SF FSIN
110
+ if comp_type == 1:
111
+ res = self._solver.sflist(node=region_name, lab="FSIN")
112
+ if "There are no nodal fluid solid interfaces" not in str(res):
113
+ self._add_surface_region(region_name)
114
+ # if type of component is "Elements" (2), check for BFE FVIN
115
+ elif comp_type == 2:
116
+ res = self._solver.bfelist(node=region_name, lab="FVIN")
117
+ if "There are no" not in str(res):
118
+ self._add_volume_region(region_name)
119
+
120
+ def _add_surface_region(self, region_name):
121
+ region = MapdlSystemCouplingInterface.Region(
122
+ name=region_name,
123
+ display_name=f"System Coupling (Surface) Region {len(self.__regions)}",
124
+ topology="Surface",
125
+ input_variables=list(),
126
+ output_variables=list(),
127
+ )
128
+ if self.__structural:
129
+ region.input_variables.append("FORC")
130
+ region.input_variables.append("FDNS")
131
+ region.output_variables.append("INCD")
132
+ if self.__thermal:
133
+ region.input_variables.append("TEMP")
134
+ region.input_variables.append("TBULK")
135
+ region.input_variables.append("HCOEF")
136
+ region.input_variables.append("HFLW")
137
+ region.output_variables.append("TEMP")
138
+ region.output_variables.append("TBULK")
139
+ region.output_variables.append("HCOEF")
140
+ region.output_variables.append("HFLW")
141
+ self.__regions.append(region)
142
+
143
+ def _add_volume_region(self, region_name):
144
+ region = MapdlSystemCouplingInterface.Region(
145
+ name=region_name,
146
+ display_name=f"System Coupling (Volume) Region {len(self.__regions)}",
147
+ topology="Volume",
148
+ input_variables=list(),
149
+ output_variables=list(),
150
+ )
151
+ if self.__thermal:
152
+ region.input_variables.append("HGEN")
153
+ region.input_variables.append("TPLD")
154
+ region.output_variables.append("TEMP")
155
+ self.__regions.append(region)
156
+
157
+ def _activate_structural(self):
158
+ if not self.__structural:
159
+ self.__structural = True
160
+ self.__variables.append(
161
+ MapdlSystemCouplingInterface.Variable(
162
+ name="FORC",
163
+ display_name="Force",
164
+ tensor_type="Vector",
165
+ is_extensive=True,
166
+ location="Node",
167
+ quantity_type="Force",
168
+ )
169
+ )
170
+
171
+ self.__variables.append(
172
+ MapdlSystemCouplingInterface.Variable(
173
+ name="FDNS",
174
+ display_name="Force Density",
175
+ tensor_type="Vector",
176
+ is_extensive=False,
177
+ location="Element",
178
+ quantity_type="Force",
179
+ )
180
+ )
181
+
182
+ self.__variables.append(
183
+ MapdlSystemCouplingInterface.Variable(
184
+ name="INCD",
185
+ display_name="Incremental Displacement",
186
+ tensor_type="Vector",
187
+ is_extensive=False,
188
+ location="Node",
189
+ quantity_type="Incremental Displacement",
190
+ )
191
+ )
192
+
193
+ for region in self.__regions:
194
+ if region.topology == "Surface":
195
+ region.input_variables.append("FORC")
196
+ region.input_variables.append("FDNS")
197
+ region.output_variables.append("INCD")
198
+
199
+ def _activate_thermal(self):
200
+ if not self.__thermal:
201
+ self.__thermal = True
202
+ self.__variables.append(
203
+ MapdlSystemCouplingInterface.Variable(
204
+ name="TEMP",
205
+ display_name="Temperature",
206
+ tensor_type="Scalar",
207
+ is_extensive=False,
208
+ location="Node",
209
+ quantity_type="Temperature",
210
+ )
211
+ )
212
+
213
+ self.__variables.append(
214
+ MapdlSystemCouplingInterface.Variable(
215
+ name="TBULK",
216
+ display_name="Bulk Temperature",
217
+ tensor_type="Scalar",
218
+ is_extensive=False,
219
+ location="Node",
220
+ quantity_type="Convection Reference Temperature",
221
+ )
222
+ )
223
+
224
+ self.__variables.append(
225
+ MapdlSystemCouplingInterface.Variable(
226
+ name="HCOEF",
227
+ display_name="Heat Transfer Coefficient",
228
+ tensor_type="Scalar",
229
+ is_extensive=False,
230
+ location="Node",
231
+ quantity_type="Heat Transfer Coefficient",
232
+ )
233
+ )
234
+
235
+ self.__variables.append(
236
+ MapdlSystemCouplingInterface.Variable(
237
+ name="HFLW",
238
+ display_name="Heat Flow",
239
+ tensor_type="Scalar",
240
+ is_extensive=True,
241
+ location="Node",
242
+ quantity_type="Heat Rate",
243
+ )
244
+ )
245
+
246
+ self.__variables.append(
247
+ MapdlSystemCouplingInterface.Variable(
248
+ name="HGEN",
249
+ display_name="Heat Generation",
250
+ tensor_type="Scalar",
251
+ is_extensive=False,
252
+ location="Node",
253
+ quantity_type="Heat Rate",
254
+ )
255
+ )
256
+
257
+ self.__variables.append(
258
+ MapdlSystemCouplingInterface.Variable(
259
+ name="TPLD",
260
+ display_name="Temperature Load",
261
+ tensor_type="Scalar",
262
+ is_extensive=False,
263
+ location="Node",
264
+ quantity_type="Temperature",
265
+ )
266
+ )
267
+
268
+ self.__variables.append(
269
+ MapdlSystemCouplingInterface.Variable(
270
+ name="TEMP",
271
+ display_name="Temperature",
272
+ tensor_type="Scalar",
273
+ is_extensive=False,
274
+ location="Node",
275
+ quantity_type="Temperature",
276
+ )
277
+ )
278
+
279
+ for region in self.__regions:
280
+ if region.topology == "Surface":
281
+ region.input_variables.append("TEMP")
282
+ region.input_variables.append("TBULK")
283
+ region.input_variables.append("HCOEF")
284
+ region.input_variables.append("HFLW")
285
+ region.output_variables.append("TEMP")
286
+ region.output_variables.append("TBULK")
287
+ region.output_variables.append("HCOEF")
288
+ region.output_variables.append("HFLW")
289
+ elif region.topology == "Volume":
290
+ region.input_variables.append("HGEN")
291
+ region.input_variables.append("TPLD")
292
+ region.output_variables.append("TEMP")
293
+
294
+ def _set_steady(self):
295
+ self.__analysis_type = "Steady"
296
+
297
+ def _set_transient(self):
298
+ self.__analysis_type = "Transient"
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  from dataclasses import dataclass
2
24
  from typing import List, Protocol
3
25
 
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  import importlib
2
24
  import os
3
25
  from typing import Callable, Optional
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  from typing import Tuple
2
24
 
3
25
  # Define constants relating to the default/current version of System Coupling
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  """Logging module.
2
24
 
3
25
  This module provides a basic framework for logging in PySystemCoupling.
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  import re
2
24
 
3
25
 
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  from typing import Iterable, List
2
24
 
3
25
 
@@ -22,6 +44,6 @@ def join_path_strs(*path_strs: Iterable[str]) -> str:
22
44
 
23
45
  .. note::
24
46
  A leading empty path component is required for a
25
- leading path separtator (``/``) in the returned value.
47
+ leading path separator (``/``) in the returned value.
26
48
  """
27
49
  return "/".join(path_strs)
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  import copy
2
24
 
3
25
 
@@ -1,3 +1,25 @@
1
+ # Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
2
+ # SPDX-License-Identifier: MIT
3
+ #
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
1
23
  import io
2
24
  from typing import Any, TextIO
3
25
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ansys-systemcoupling-core
3
- Version: 0.3.1
3
+ Version: 0.4.dev0
4
4
  Summary: A Python wrapper for Ansys System Coupling.
5
5
  Author-email: "ANSYS, Inc." <pyansys.support@ansys.com>
6
6
  Maintainer-email: PyAnsys developers <pyansys.maintainers@ansys.com>
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.9
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Requires-Dist: ansys-api-systemcoupling==0.1.0
21
21
  Requires-Dist: grpcio>=1.30.0
22
- Requires-Dist: grpcio-status>=1.30.0,<1.58.1
22
+ Requires-Dist: grpcio-status>=1.30.0,<1.60.2
23
23
  Requires-Dist: googleapis-common-protos>=1.50.0
24
24
  Requires-Dist: protobuf>=3.20.1,<4.0.0
25
25
  Requires-Dist: psutil>=5.7.0
@@ -27,26 +27,26 @@ Requires-Dist: pyyaml
27
27
  Requires-Dist: appdirs>=1.4.0
28
28
  Requires-Dist: importlib-metadata>=4.0
29
29
  Requires-Dist: build ; extra == "build"
30
- Requires-Dist: black==23.7.0 ; extra == "classesgen"
31
- Requires-Dist: isort==5.12.0 ; extra == "classesgen"
32
- Requires-Dist: ansys-sphinx-theme==0.11.2 ; extra == "doc"
33
- Requires-Dist: jupyter_sphinx==0.4.0 ; extra == "doc"
30
+ Requires-Dist: black==24.1.1 ; extra == "classesgen"
31
+ Requires-Dist: isort==5.13.2 ; extra == "classesgen"
32
+ Requires-Dist: ansys-sphinx-theme==0.13.3 ; extra == "doc"
33
+ Requires-Dist: jupyter_sphinx==0.5.3 ; extra == "doc"
34
34
  Requires-Dist: matplotlib ; extra == "doc"
35
- Requires-Dist: numpydoc==1.5.0 ; extra == "doc"
36
- Requires-Dist: pypandoc==1.11 ; extra == "doc"
37
- Requires-Dist: pytest-sphinx==0.5.0 ; extra == "doc"
35
+ Requires-Dist: numpydoc==1.6.0 ; extra == "doc"
36
+ Requires-Dist: pypandoc==1.12 ; extra == "doc"
37
+ Requires-Dist: pytest-sphinx==0.6.0 ; extra == "doc"
38
38
  Requires-Dist: Sphinx==7.2.6 ; extra == "doc"
39
- Requires-Dist: sphinx-autobuild==2021.3.14 ; extra == "doc"
40
- Requires-Dist: sphinx-autodoc-typehints==1.24.0 ; extra == "doc"
39
+ Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc"
40
+ Requires-Dist: sphinx-autodoc-typehints==1.25.2 ; extra == "doc"
41
41
  Requires-Dist: sphinx-copybutton==0.5.2 ; extra == "doc"
42
- Requires-Dist: sphinx-gallery==0.14.0 ; extra == "doc"
42
+ Requires-Dist: sphinx-gallery==0.15.0 ; extra == "doc"
43
43
  Requires-Dist: sphinx-notfound-page==1.0.0 ; extra == "doc"
44
- Requires-Dist: sphinxcontrib-websupport==1.2.6 ; extra == "doc"
45
- Requires-Dist: sphinxemoji==0.2.0 ; extra == "doc"
44
+ Requires-Dist: sphinxcontrib-websupport==1.2.7 ; extra == "doc"
45
+ Requires-Dist: sphinxemoji==0.3.1 ; extra == "doc"
46
46
  Requires-Dist: ansys-fluent-core ; extra == "doc"
47
47
  Requires-Dist: ansys-dpf-core ; extra == "doc"
48
- Requires-Dist: codespell==2.2.5 ; extra == "style"
49
- Requires-Dist: flake8==6.1.0 ; extra == "style"
48
+ Requires-Dist: codespell==2.2.6 ; extra == "style"
49
+ Requires-Dist: flake8==7.0.0 ; extra == "style"
50
50
  Requires-Dist: pytest ; extra == "tests"
51
51
  Requires-Dist: pytest-cov ; extra == "tests"
52
52
  Requires-Dist: psutil>=5.7.0 ; extra == "tests"
@@ -135,12 +135,12 @@ in this order:
135
135
 
136
136
  * ``SYSC_ROOT``
137
137
  * ``AWP_ROOT``
138
- * ``AWP_ROOT232``
138
+ * ``AWP_ROOT241``
139
139
 
140
140
  If a variable is set but does not refer to a valid installation, PySystemCoupling
141
141
  fails at that point, rather than attempting to use the next variable.
142
142
 
143
- In a standard user installation, the expectation is that only ``AWP_ROOT232`` is set.
143
+ In a standard user installation, the expectation is that only ``AWP_ROOT241`` is set.
144
144
 
145
145
  (It is also possible to provide a different version number as an argument to the ``launch()``
146
146
  function. This will affect which ``AWP_ROOT<version>`` environment variable is examined.)
@@ -157,6 +157,7 @@ However, if you are transitioning existing scripts, the native System Coupling A
157
157
  as a convenience.
158
158
 
159
159
  .. note::
160
+
160
161
  While most commands should work as expected via the native System Coupling API,
161
162
  no guarantees can be given because of the nature of how it is exposed.
162
163