ansys-systemcoupling-core 0.8.0__py3-none-any.whl → 0.9.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-systemcoupling-core might be problematic. Click here for more details.
- ansys/systemcoupling/core/__init__.py +2 -2
- ansys/systemcoupling/core/_version.py +1 -1
- ansys/systemcoupling/core/adaptor/api_25_1/instancing.py +2 -0
- ansys/systemcoupling/core/adaptor/api_25_1/instancing_child.py +62 -10
- ansys/systemcoupling/core/adaptor/api_25_1/mapping_control.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_1/setup_root.py +1 -1
- ansys/systemcoupling/core/adaptor/api_25_1/update_participant.py +15 -15
- ansys/systemcoupling/core/adaptor/impl/get_status_messages.py +1 -1
- ansys/systemcoupling/core/adaptor/impl/get_syc_version.py +1 -1
- ansys/systemcoupling/core/adaptor/impl/injected_commands.py +1 -1
- ansys/systemcoupling/core/adaptor/impl/root_source.py +1 -1
- ansys/systemcoupling/core/adaptor/impl/static_info.py +13 -6
- ansys/systemcoupling/core/adaptor/impl/syc_proxy.py +35 -5
- ansys/systemcoupling/core/adaptor/impl/syc_proxy_interface.py +1 -1
- ansys/systemcoupling/core/adaptor/impl/types.py +1 -1
- ansys/systemcoupling/core/charts/chart_datatypes.py +1 -1
- ansys/systemcoupling/core/charts/csv_chartdata.py +18 -4
- ansys/systemcoupling/core/charts/live_csv_datasource.py +1 -1
- ansys/systemcoupling/core/charts/message_dispatcher.py +1 -1
- ansys/systemcoupling/core/charts/plot_functions.py +1 -1
- ansys/systemcoupling/core/charts/plotdefinition_manager.py +1 -1
- ansys/systemcoupling/core/charts/plotter.py +1 -1
- ansys/systemcoupling/core/client/grpc_client.py +11 -2
- ansys/systemcoupling/core/client/services/command_query.py +4 -13
- ansys/systemcoupling/core/client/services/handle_rpc_error.py +64 -0
- ansys/systemcoupling/core/client/services/output_stream.py +1 -1
- ansys/systemcoupling/core/client/services/process.py +1 -1
- ansys/systemcoupling/core/client/services/solution.py +4 -13
- ansys/systemcoupling/core/client/syc_container.py +4 -1
- ansys/systemcoupling/core/client/syc_process.py +5 -1
- ansys/systemcoupling/core/client/variant.py +1 -1
- ansys/systemcoupling/core/examples/__init__.py +1 -1
- ansys/systemcoupling/core/examples/downloads.py +1 -1
- ansys/systemcoupling/core/native_api/__init__.py +1 -1
- ansys/systemcoupling/core/native_api/command_metadata.py +1 -1
- ansys/systemcoupling/core/native_api/datamodel_metadata.py +1 -1
- ansys/systemcoupling/core/native_api/meta_wrapper.py +1 -1
- ansys/systemcoupling/core/native_api/native_api.py +1 -1
- ansys/systemcoupling/core/native_api/object_path.py +1 -1
- ansys/systemcoupling/core/participant/manager.py +1 -1
- ansys/systemcoupling/core/participant/mapdl.py +1 -1
- ansys/systemcoupling/core/participant/protocol.py +1 -1
- ansys/systemcoupling/core/session.py +1 -1
- ansys/systemcoupling/core/syc_version.py +3 -3
- ansys/systemcoupling/core/util/file_transfer.py +1 -1
- ansys/systemcoupling/core/util/logging.py +1 -1
- ansys/systemcoupling/core/util/name_util.py +1 -1
- ansys/systemcoupling/core/util/pathstr.py +1 -1
- ansys/systemcoupling/core/util/state_keys.py +12 -3
- ansys/systemcoupling/core/util/yaml_helper.py +1 -1
- {ansys_systemcoupling_core-0.8.0.dist-info → ansys_systemcoupling_core-0.9.1.dist-info}/METADATA +35 -21
- {ansys_systemcoupling_core-0.8.0.dist-info → ansys_systemcoupling_core-0.9.1.dist-info}/RECORD +54 -53
- {ansys_systemcoupling_core-0.8.0.dist-info → ansys_systemcoupling_core-0.9.1.dist-info}/WHEEL +1 -1
- {ansys_systemcoupling_core-0.8.0.dist-info → ansys_systemcoupling_core-0.9.1.dist-info/licenses}/LICENSE +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -72,7 +72,7 @@ def launch(
|
|
|
72
72
|
(The forms ``"24.1"`` and ``"24_1"`` are also acceptable.)
|
|
73
73
|
The version will be sought in the standard installation location. The
|
|
74
74
|
default is ``None``, which is equivalent to specifying
|
|
75
|
-
``"
|
|
75
|
+
``"251"`` ("2025 R1" release), unless either of the environment
|
|
76
76
|
variables ``SYSC_ROOT`` or ``AWP_ROOT`` has been set. It is considered
|
|
77
77
|
to be an error if either these is set *and* ``version`` is provided.
|
|
78
78
|
start_output: bool, optional
|
|
@@ -11,27 +11,31 @@ class instancing_child(Container):
|
|
|
11
11
|
|
|
12
12
|
Available when cylindrical geometry instancing has been added to
|
|
13
13
|
the data model.
|
|
14
|
+
|
|
15
|
+
``RotationAxis`` controls how the axis of rotation is defined.
|
|
14
16
|
"""
|
|
15
17
|
|
|
16
18
|
syc_name = "child_object_type"
|
|
17
19
|
|
|
18
20
|
property_names_types = [
|
|
19
|
-
("
|
|
21
|
+
("rotation_axis", "RotationAxis", "str"),
|
|
20
22
|
("instances_in_full_circle", "InstancesInFullCircle", "int"),
|
|
21
23
|
("instances_for_mapping", "InstancesForMapping", "int"),
|
|
24
|
+
("reference_frame", "ReferenceFrame", "str"),
|
|
25
|
+
("axis", "Axis", "str"),
|
|
26
|
+
("axis_from", "AxisFrom", "RealVectorType"),
|
|
27
|
+
("axis_to", "AxisTo", "RealVectorType"),
|
|
28
|
+
("rotational_offset", "RotationalOffset", "RealType"),
|
|
22
29
|
]
|
|
23
30
|
|
|
24
31
|
@property
|
|
25
|
-
def
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
Rotation will be around the z-axis of the reference frame,
|
|
29
|
-
following the right-hand rule."""
|
|
30
|
-
return self.get_property_state("reference_frame")
|
|
32
|
+
def rotation_axis(self) -> str:
|
|
33
|
+
"""UNDOCUMENTED"""
|
|
34
|
+
return self.get_property_state("rotation_axis")
|
|
31
35
|
|
|
32
|
-
@
|
|
33
|
-
def
|
|
34
|
-
self.set_property_state("
|
|
36
|
+
@rotation_axis.setter
|
|
37
|
+
def rotation_axis(self, value: str):
|
|
38
|
+
self.set_property_state("rotation_axis", value)
|
|
35
39
|
|
|
36
40
|
@property
|
|
37
41
|
def instances_in_full_circle(self) -> int:
|
|
@@ -60,3 +64,51 @@ class instancing_child(Container):
|
|
|
60
64
|
@instances_for_mapping.setter
|
|
61
65
|
def instances_for_mapping(self, value: int):
|
|
62
66
|
self.set_property_state("instances_for_mapping", value)
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def reference_frame(self) -> str:
|
|
70
|
+
"""Reference frame that defines the orientation of the instancing.
|
|
71
|
+
|
|
72
|
+
Rotation will be around the z-axis of the reference frame,
|
|
73
|
+
following the right-hand rule."""
|
|
74
|
+
return self.get_property_state("reference_frame")
|
|
75
|
+
|
|
76
|
+
@reference_frame.setter
|
|
77
|
+
def reference_frame(self, value: str):
|
|
78
|
+
self.set_property_state("reference_frame", value)
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def axis(self) -> str:
|
|
82
|
+
"""Principal axis of rotation for instancing"""
|
|
83
|
+
return self.get_property_state("axis")
|
|
84
|
+
|
|
85
|
+
@axis.setter
|
|
86
|
+
def axis(self, value: str):
|
|
87
|
+
self.set_property_state("axis", value)
|
|
88
|
+
|
|
89
|
+
@property
|
|
90
|
+
def axis_from(self) -> RealVectorType:
|
|
91
|
+
"""Define the starting point of a user-defined axis."""
|
|
92
|
+
return self.get_property_state("axis_from")
|
|
93
|
+
|
|
94
|
+
@axis_from.setter
|
|
95
|
+
def axis_from(self, value: RealVectorType):
|
|
96
|
+
self.set_property_state("axis_from", value)
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def axis_to(self) -> RealVectorType:
|
|
100
|
+
"""Define the end point of a user-defined axis."""
|
|
101
|
+
return self.get_property_state("axis_to")
|
|
102
|
+
|
|
103
|
+
@axis_to.setter
|
|
104
|
+
def axis_to(self, value: RealVectorType):
|
|
105
|
+
self.set_property_state("axis_to", value)
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def rotational_offset(self) -> RealType:
|
|
109
|
+
"""Offset (in radians) about the rotation axis for the first instance"""
|
|
110
|
+
return self.get_property_state("rotational_offset")
|
|
111
|
+
|
|
112
|
+
@rotational_offset.setter
|
|
113
|
+
def rotational_offset(self, value: RealType):
|
|
114
|
+
self.set_property_state("rotational_offset", value)
|
|
@@ -42,6 +42,8 @@ class mapping_control(Container):
|
|
|
42
42
|
("rbf_shape_parameter", "RBFShapeParameter", "RealType"),
|
|
43
43
|
("rbf_linear_correction", "RBFLinearCorrection", "bool"),
|
|
44
44
|
("rbf_clipping_scale", "RBFClippingScale", "RealType"),
|
|
45
|
+
("rbf_taper_init_factor", "RBFTaperInitFactor", "RealType"),
|
|
46
|
+
("rbf_max_extrapolation_factor", "RBFMaxExtrapolationFactor", "RealType"),
|
|
45
47
|
("clipping", "Clipping", "bool"),
|
|
46
48
|
]
|
|
47
49
|
|
|
@@ -229,6 +231,24 @@ class mapping_control(Container):
|
|
|
229
231
|
def rbf_clipping_scale(self, value: RealType):
|
|
230
232
|
self.set_property_state("rbf_clipping_scale", value)
|
|
231
233
|
|
|
234
|
+
@property
|
|
235
|
+
def rbf_taper_init_factor(self) -> RealType:
|
|
236
|
+
"""Length scale factor at which to start tapering the extrapolative effect for profile-preserving mapping."""
|
|
237
|
+
return self.get_property_state("rbf_taper_init_factor")
|
|
238
|
+
|
|
239
|
+
@rbf_taper_init_factor.setter
|
|
240
|
+
def rbf_taper_init_factor(self, value: RealType):
|
|
241
|
+
self.set_property_state("rbf_taper_init_factor", value)
|
|
242
|
+
|
|
243
|
+
@property
|
|
244
|
+
def rbf_max_extrapolation_factor(self) -> RealType:
|
|
245
|
+
"""Maximum factor allowed to extrapolate for profile-preserving mapping."""
|
|
246
|
+
return self.get_property_state("rbf_max_extrapolation_factor")
|
|
247
|
+
|
|
248
|
+
@rbf_max_extrapolation_factor.setter
|
|
249
|
+
def rbf_max_extrapolation_factor(self, value: RealType):
|
|
250
|
+
self.set_property_state("rbf_max_extrapolation_factor", value)
|
|
251
|
+
|
|
232
252
|
@property
|
|
233
253
|
def clipping(self) -> bool:
|
|
234
254
|
"""Controls whether to clip target values to the min/max of the local source values for profile-preserving transfers."""
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# This is an auto-generated file. DO NOT EDIT!
|
|
3
3
|
#
|
|
4
4
|
|
|
5
|
-
SHASH = "
|
|
5
|
+
SHASH = "b2cdc470c64043e9f6c2aed2ca2c63cf2ada211ba396b1c9aa4ebadb357d3b91"
|
|
6
6
|
|
|
7
7
|
from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
8
8
|
|
|
@@ -7,19 +7,21 @@ from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
|
7
7
|
|
|
8
8
|
class update_participant(Command):
|
|
9
9
|
"""
|
|
10
|
-
Given the name of a
|
|
10
|
+
Given the name of a participant, updates the state of the participant.
|
|
11
11
|
|
|
12
|
-
Available for
|
|
13
|
-
|
|
12
|
+
Available for DEFAULT-SRV, CFD-SRV, MECH-SRV, and SCDT-SRV and
|
|
13
|
+
AEDT participants.
|
|
14
14
|
|
|
15
|
-
As part of the update, System Coupling updates all regions
|
|
16
|
-
|
|
17
|
-
attributes.
|
|
18
|
-
may not be removed.
|
|
15
|
+
As part of the update, System Coupling updates all regions, variables,
|
|
16
|
+
and parameters defined in the participant, including all variable
|
|
17
|
+
attributes. Regions, variables, and parameters may be added to the
|
|
18
|
+
participant but may not be removed.
|
|
19
19
|
|
|
20
20
|
You may specify an input file using an optional argument. If an input
|
|
21
21
|
file is not provided, then the original input file will be reimported.
|
|
22
22
|
|
|
23
|
+
Note: AEDT participants must be updated using an scp file.
|
|
24
|
+
|
|
23
25
|
If the update process fails, System Coupling displays an error. In this
|
|
24
26
|
case, you can either update the setup in the participant application to
|
|
25
27
|
remove any issues with the update process or delete the participant
|
|
@@ -29,12 +31,11 @@ class update_participant(Command):
|
|
|
29
31
|
----------
|
|
30
32
|
participant_name : str
|
|
31
33
|
Participant name. Must be the name of an existing participant.
|
|
32
|
-
Participant type can be either DEFAULT-SRV, CFD-SRV, MECH-SRV, or SCDT-SRV.
|
|
33
34
|
input_file : str, optional
|
|
34
35
|
Name of the input file for the participant to be added.
|
|
35
|
-
Currently supported formats are SCP files,
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
Currently supported formats are SCP files, mechanical server
|
|
37
|
+
(\*.rst) files, cfd server (\*.csv) files, and system coupling
|
|
38
|
+
data server (\*.scdt/axdt/csv) files.
|
|
38
39
|
|
|
39
40
|
"""
|
|
40
41
|
|
|
@@ -45,7 +46,6 @@ class update_participant(Command):
|
|
|
45
46
|
class participant_name(String):
|
|
46
47
|
"""
|
|
47
48
|
Participant name. Must be the name of an existing participant.
|
|
48
|
-
Participant type can be either DEFAULT-SRV, CFD-SRV, MECH-SRV, or SCDT-SRV.
|
|
49
49
|
"""
|
|
50
50
|
|
|
51
51
|
syc_name = "ParticipantName"
|
|
@@ -53,9 +53,9 @@ class update_participant(Command):
|
|
|
53
53
|
class input_file(String):
|
|
54
54
|
"""
|
|
55
55
|
Name of the input file for the participant to be added.
|
|
56
|
-
Currently supported formats are SCP files,
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
Currently supported formats are SCP files, mechanical server
|
|
57
|
+
(\*.rst) files, cfd server (\*.csv) files, and system coupling
|
|
58
|
+
data server (\*.scdt/axdt/csv) files.
|
|
59
59
|
"""
|
|
60
60
|
|
|
61
61
|
syc_name = "InputFile"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -312,14 +312,21 @@ def get_extended_cmd_metadata(api) -> list:
|
|
|
312
312
|
"""
|
|
313
313
|
|
|
314
314
|
def fix_up_doc(cmd_metadata):
|
|
315
|
-
|
|
315
|
+
version = get_syc_version(api)
|
|
316
|
+
if version not in ("24.2", "25.1"):
|
|
316
317
|
return cmd_metadata
|
|
317
318
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
319
|
+
command_to_fix = None
|
|
320
|
+
if version == "24.2":
|
|
321
|
+
command_to_fix = "add_participant"
|
|
322
|
+
elif version == "25.1":
|
|
323
|
+
command_to_fix = "update_participant"
|
|
324
|
+
|
|
325
|
+
# There are bugs in doc text queried from 24.2 and 25.1 SyC.
|
|
326
|
+
# The "*" need to be escaped to avoid issues in Sphinx. This
|
|
327
|
+
# can be a surgical fix because these versions are frozen now.
|
|
321
328
|
for cmd in cmd_metadata:
|
|
322
|
-
if cmd["pyname"] ==
|
|
329
|
+
if cmd["pyname"] == command_to_fix:
|
|
323
330
|
add_part_cmd = cmd
|
|
324
331
|
for arg_name, arg_info in add_part_cmd["args"]:
|
|
325
332
|
if arg_name == "InputFile":
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -28,7 +28,10 @@ from ansys.systemcoupling.core.adaptor.impl.static_info import (
|
|
|
28
28
|
make_combined_metadata,
|
|
29
29
|
)
|
|
30
30
|
from ansys.systemcoupling.core.adaptor.impl.syc_proxy_interface import SycProxyInterface
|
|
31
|
-
from ansys.systemcoupling.core.util.state_keys import
|
|
31
|
+
from ansys.systemcoupling.core.util.state_keys import (
|
|
32
|
+
adapt_client_named_object_keys,
|
|
33
|
+
adapt_native_named_object_keys,
|
|
34
|
+
)
|
|
32
35
|
|
|
33
36
|
|
|
34
37
|
class SycProxy(SycProxyInterface):
|
|
@@ -37,13 +40,16 @@ class SycProxy(SycProxyInterface):
|
|
|
37
40
|
self.__injected_cmds = {}
|
|
38
41
|
self.__version = None
|
|
39
42
|
self.__defunct = False
|
|
43
|
+
self.__named_obj_level_map: Dict = {}
|
|
44
|
+
self.__datamodel_metadata = None
|
|
40
45
|
|
|
41
46
|
def reset_rpc(self, rpc):
|
|
42
47
|
"""Reset the original ``rpc`` instance with a new one if the remote connection is lost.
|
|
43
48
|
|
|
44
49
|
When a remote connection is lost, this method is called, providing an
|
|
45
50
|
``rpc`` instance that replaces the original one from the initializer.
|
|
46
|
-
|
|
51
|
+
The intent is that a sensible error will be raised if any attempt is
|
|
52
|
+
made to access any attributes on the replacement rpc.
|
|
47
53
|
|
|
48
54
|
The motivating use case is to catch attempted uses of stale
|
|
49
55
|
objects after the current session has ended.
|
|
@@ -66,8 +72,9 @@ class SycProxy(SycProxyInterface):
|
|
|
66
72
|
if category == "setup":
|
|
67
73
|
cmd_metadata = get_extended_cmd_metadata(self.__rpc)
|
|
68
74
|
root_type = "SystemCoupling"
|
|
69
|
-
|
|
70
|
-
|
|
75
|
+
metadata = make_combined_metadata(
|
|
76
|
+
self._get_datamodel_metadata(root_type), cmd_metadata, category
|
|
77
|
+
)
|
|
71
78
|
elif category in ("case", "solution"):
|
|
72
79
|
cmd_metadata = get_extended_cmd_metadata(self.__rpc)
|
|
73
80
|
metadata, root_type = make_cmdonly_metadata(cmd_metadata, category)
|
|
@@ -81,6 +88,9 @@ class SycProxy(SycProxyInterface):
|
|
|
81
88
|
return self.__version
|
|
82
89
|
|
|
83
90
|
def set_state(self, path, state):
|
|
91
|
+
state = adapt_client_named_object_keys(
|
|
92
|
+
state, self._get_named_object_level_map(), path.count("/") - 1
|
|
93
|
+
)
|
|
84
94
|
self.__rpc.SetState(ObjectPath=path, State=state)
|
|
85
95
|
|
|
86
96
|
def get_state(self, path):
|
|
@@ -116,3 +126,23 @@ class SycProxy(SycProxyInterface):
|
|
|
116
126
|
cmd_name = args[1]
|
|
117
127
|
cmd = self.__injected_cmds.get(cmd_name, None)
|
|
118
128
|
return cmd(**kwargs)
|
|
129
|
+
|
|
130
|
+
def _get_datamodel_metadata(self, root_type):
|
|
131
|
+
if self.__datamodel_metadata is None:
|
|
132
|
+
self.__datamodel_metadata = get_dm_metadata(self.__rpc, root_type)
|
|
133
|
+
return self.__datamodel_metadata
|
|
134
|
+
|
|
135
|
+
def _get_named_object_level_map(self):
|
|
136
|
+
if not self.__named_obj_level_map:
|
|
137
|
+
self._make_named_object_level_map(root_type="SystemCoupling")
|
|
138
|
+
return self.__named_obj_level_map
|
|
139
|
+
|
|
140
|
+
def _make_named_object_level_map(self, root_type):
|
|
141
|
+
def visit_children(metadata, level):
|
|
142
|
+
for k, v in metadata["__children"].items():
|
|
143
|
+
if v["isNamed"]:
|
|
144
|
+
self.__named_obj_level_map.setdefault(level, set()).add(k)
|
|
145
|
+
visit_children(v, level + 1)
|
|
146
|
+
|
|
147
|
+
dm_metadata = self._get_datamodel_metadata(root_type)
|
|
148
|
+
visit_children(dm_metadata[root_type], 0)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -245,6 +245,17 @@ def parse_csv_metadata(interface_name: str, headers: list[str]) -> InterfaceInfo
|
|
|
245
245
|
series_type, intf_or_part_disp_name, trans_disp_name = _parse_header(header)
|
|
246
246
|
if series_type == SeriesType.CONVERGENCE:
|
|
247
247
|
prev_part_name = ""
|
|
248
|
+
|
|
249
|
+
# If there are no convergence headings, transfer_disambig will
|
|
250
|
+
# remain unpopulated. In this case, assume for now that there
|
|
251
|
+
# is no ambiguity. Although not strictly correct, this is a
|
|
252
|
+
# reasonable assumption for the majority of cases.
|
|
253
|
+
# TODO: look for alternative method to determine a
|
|
254
|
+
# disambiguation index in the case of no convergence headers.
|
|
255
|
+
# If this is not possible, look for a way to detect that
|
|
256
|
+
# data transfers are ambiguous and raise an exception or
|
|
257
|
+
# warn and skip plotting.
|
|
258
|
+
|
|
248
259
|
if trans_disp_name in transfer_disambig:
|
|
249
260
|
transfer_disambig[trans_disp_name] += 1
|
|
250
261
|
else:
|
|
@@ -258,7 +269,8 @@ def parse_csv_metadata(interface_name: str, headers: list[str]) -> InterfaceInfo
|
|
|
258
269
|
data_index,
|
|
259
270
|
series_type,
|
|
260
271
|
transfer_display_name=trans_disp_name,
|
|
261
|
-
|
|
272
|
+
# get(..., 0) for case where transfer_disambig empty (see note above)
|
|
273
|
+
disambiguation_index=transfer_disambig.get(trans_disp_name, 0),
|
|
262
274
|
)
|
|
263
275
|
intf_info.transfer_info.append(series_info)
|
|
264
276
|
else:
|
|
@@ -276,7 +288,9 @@ def parse_csv_metadata(interface_name: str, headers: list[str]) -> InterfaceInfo
|
|
|
276
288
|
data_index,
|
|
277
289
|
series_type,
|
|
278
290
|
transfer_display_name=trans_disp_name,
|
|
279
|
-
disambiguation_index=transfer_disambig
|
|
291
|
+
disambiguation_index=transfer_disambig.get(
|
|
292
|
+
trans_disp_name, 0
|
|
293
|
+
),
|
|
280
294
|
participant_display_name=part_disp_name,
|
|
281
295
|
line_suffixes=[suffix],
|
|
282
296
|
)
|
|
@@ -292,7 +306,7 @@ def parse_csv_metadata(interface_name: str, headers: list[str]) -> InterfaceInfo
|
|
|
292
306
|
data_index,
|
|
293
307
|
series_type,
|
|
294
308
|
transfer_display_name=trans_disp_name,
|
|
295
|
-
disambiguation_index=transfer_disambig
|
|
309
|
+
disambiguation_index=transfer_disambig.get(trans_disp_name, 0),
|
|
296
310
|
participant_display_name=part_disp_name,
|
|
297
311
|
)
|
|
298
312
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -137,7 +137,16 @@ class SycGrpc(object):
|
|
|
137
137
|
_LOCALHOST_IP, port, working_dir, version, **kwargs
|
|
138
138
|
)
|
|
139
139
|
LOG.debug("...started")
|
|
140
|
-
|
|
140
|
+
try:
|
|
141
|
+
self._connect(_LOCALHOST_IP, port)
|
|
142
|
+
except Exception as e:
|
|
143
|
+
if "v251" in self.__process.path_to_system_coupling:
|
|
144
|
+
e.args += (
|
|
145
|
+
"Connection will fail if you are running an "
|
|
146
|
+
"unpatched version of System Coupling 25 R1. ",
|
|
147
|
+
)
|
|
148
|
+
raise
|
|
149
|
+
|
|
141
150
|
if start_output:
|
|
142
151
|
self.start_output()
|
|
143
152
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
23
|
import ansys.api.systemcoupling.v0.command_pb2_grpc as command_pb2_grpc
|
|
24
|
-
import ansys.api.systemcoupling.v0.error_pb2 as syc_error_pb2
|
|
25
24
|
import grpc
|
|
26
|
-
|
|
25
|
+
|
|
26
|
+
from ansys.systemcoupling.core.client.services.handle_rpc_error import handle_rpc_error
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class CommandQueryService:
|
|
@@ -35,14 +35,5 @@ class CommandQueryService:
|
|
|
35
35
|
response, call = self.__stub.InvokeCommand.with_call(request)
|
|
36
36
|
return response, call.trailing_metadata()
|
|
37
37
|
except grpc.RpcError as rpc_error:
|
|
38
|
-
|
|
39
|
-
msg = f"Command execution failed: {status.message} (code={status.code})"
|
|
40
|
-
for detail in status.details:
|
|
41
|
-
if detail.Is(syc_error_pb2.ErrorDetails.DESCRIPTOR):
|
|
42
|
-
info = syc_error_pb2.ErrorDetails()
|
|
43
|
-
detail.Unpack(info)
|
|
44
|
-
msg += (
|
|
45
|
-
f"\n\nServer exception details:\n"
|
|
46
|
-
f"{info.exception_classname}\n{info.stack_trace}"
|
|
47
|
-
)
|
|
38
|
+
msg = handle_rpc_error(rpc_error)
|
|
48
39
|
raise RuntimeError(msg) from None
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2025 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
|
+
import ansys.api.systemcoupling.v0.error_pb2 as syc_error_pb2
|
|
24
|
+
import grpc
|
|
25
|
+
from grpc_status.rpc_status import from_call
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _error_details_msg(error_details: syc_error_pb2) -> str:
|
|
29
|
+
return (
|
|
30
|
+
f"Command or query execution failed with error: {error_details.exception_classname}"
|
|
31
|
+
f"\n\nServer stacktrace:\n{error_details.stack_trace}"
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _check_for_syc_exception(rpc_error):
|
|
36
|
+
# grpc_status is not available in some server versions so
|
|
37
|
+
# check for bespoke method of returning error details via
|
|
38
|
+
# trailing metadata.
|
|
39
|
+
meta = rpc_error.trailing_metadata()
|
|
40
|
+
if meta is not None:
|
|
41
|
+
for key, value in meta:
|
|
42
|
+
if key == "syc-exception-bin":
|
|
43
|
+
error_details = syc_error_pb2.ErrorDetails()
|
|
44
|
+
error_details.ParseFromString(value)
|
|
45
|
+
return _error_details_msg(error_details)
|
|
46
|
+
return None
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def handle_rpc_error(rpc_error: grpc.RpcError):
|
|
50
|
+
msg = _check_for_syc_exception(rpc_error)
|
|
51
|
+
if msg is not None:
|
|
52
|
+
return msg
|
|
53
|
+
|
|
54
|
+
status = from_call(rpc_error)
|
|
55
|
+
if status is None:
|
|
56
|
+
return "Command or query execution failed. No details available."
|
|
57
|
+
|
|
58
|
+
msg = f"Command execution failed: {status.message} (code={status.code})"
|
|
59
|
+
for detail in status.details:
|
|
60
|
+
if detail.Is(syc_error_pb2.ErrorDetails.DESCRIPTOR):
|
|
61
|
+
error_details = syc_error_pb2.ErrorDetails()
|
|
62
|
+
detail.Unpack(error_details)
|
|
63
|
+
msg += _error_details_msg(error_details)
|
|
64
|
+
return msg
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
|
-
import ansys.api.systemcoupling.v0.error_pb2 as syc_error_pb2
|
|
24
23
|
import ansys.api.systemcoupling.v0.solution_pb2 as solution_pb2
|
|
25
24
|
import ansys.api.systemcoupling.v0.solution_pb2_grpc as solution_pb2_grpc
|
|
26
25
|
import grpc
|
|
27
|
-
|
|
26
|
+
|
|
27
|
+
from ansys.systemcoupling.core.client.services.handle_rpc_error import handle_rpc_error
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class SolutionService:
|
|
@@ -36,16 +36,7 @@ class SolutionService:
|
|
|
36
36
|
try:
|
|
37
37
|
self.__stub.Solve(request)
|
|
38
38
|
except grpc.RpcError as rpc_error:
|
|
39
|
-
|
|
40
|
-
msg = f"Command execution failed: {status.message} (code={status.code})"
|
|
41
|
-
for detail in status.details:
|
|
42
|
-
if detail.Is(syc_error_pb2.ErrorDetails.DESCRIPTOR):
|
|
43
|
-
info = syc_error_pb2.ErrorDetails()
|
|
44
|
-
detail.Unpack(info)
|
|
45
|
-
msg += (
|
|
46
|
-
f"\n\nServer exception details:\n"
|
|
47
|
-
f"{info.exception_classname}\n{info.stack_trace}"
|
|
48
|
-
)
|
|
39
|
+
msg = handle_rpc_error(rpc_error)
|
|
49
40
|
raise RuntimeError(msg) from None
|
|
50
41
|
|
|
51
42
|
def interrupt(self, reason):
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -81,6 +81,9 @@ def start_container(
|
|
|
81
81
|
idx = run_args.index("-p")
|
|
82
82
|
run_args.insert(idx, container_user)
|
|
83
83
|
run_args.insert(idx, "--user")
|
|
84
|
+
# Licensing can't log to default location if user is not the default 'root'
|
|
85
|
+
run_args.insert(idx, f"ANSYSLC_APPLOGDIR={mounted_to}")
|
|
86
|
+
run_args.insert(idx, "-e")
|
|
84
87
|
|
|
85
88
|
license_server = os.getenv("ANSYSLMD_LICENSE_FILE")
|
|
86
89
|
if license_server:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -50,6 +50,10 @@ class SycProcess: # pragma: no cover
|
|
|
50
50
|
host, port, working_dir, version, **kwargs
|
|
51
51
|
)
|
|
52
52
|
|
|
53
|
+
@property
|
|
54
|
+
def path_to_system_coupling(self) -> str:
|
|
55
|
+
return self.__process.args[0]
|
|
56
|
+
|
|
53
57
|
def end(self):
|
|
54
58
|
if self.__process and self.__process.poll() is None:
|
|
55
59
|
pid = self.__process.pid
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -24,8 +24,8 @@ from typing import Tuple
|
|
|
24
24
|
|
|
25
25
|
# Define constants relating to the default/current version of System Coupling
|
|
26
26
|
|
|
27
|
-
SYC_MAJOR_VERSION =
|
|
28
|
-
SYC_MINOR_VERSION =
|
|
27
|
+
SYC_MAJOR_VERSION = 25
|
|
28
|
+
SYC_MINOR_VERSION = 1
|
|
29
29
|
|
|
30
30
|
SYC_VERSION_CONCAT = f"{SYC_MAJOR_VERSION}{SYC_MINOR_VERSION}"
|
|
31
31
|
SYC_VERSION_DOT = f"{SYC_MAJOR_VERSION}.{SYC_MINOR_VERSION}"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (C) 2023 -
|
|
1
|
+
# Copyright (C) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
#
|
|
4
4
|
#
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
# SOFTWARE.
|
|
22
22
|
|
|
23
23
|
import copy
|
|
24
|
+
from typing import Any, Dict, Set
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
def adapt_native_named_object_keys(state):
|
|
@@ -74,7 +75,9 @@ def adapt_native_named_object_keys_in_place(state):
|
|
|
74
75
|
del state[k]
|
|
75
76
|
|
|
76
77
|
|
|
77
|
-
def adapt_client_named_object_keys(
|
|
78
|
+
def adapt_client_named_object_keys(
|
|
79
|
+
state: Dict[str, Any], level_type_map: Dict[int, Set[str]], start_level: int = 0
|
|
80
|
+
) -> Dict[str, Any]:
|
|
78
81
|
"""Transform a System Coupling client-style nested state dictionary
|
|
79
82
|
to an equivalent native format.
|
|
80
83
|
|
|
@@ -89,12 +92,18 @@ def adapt_client_named_object_keys(state, level_type_map):
|
|
|
89
92
|
|
|
90
93
|
Parameters
|
|
91
94
|
----------
|
|
95
|
+
state: dict
|
|
96
|
+
The nested state dictionary to transform to the native format.
|
|
92
97
|
level_type_map: dict
|
|
93
98
|
Dictionary from the integer nest level (0-based) to sets of
|
|
94
99
|
named object types at this level. Note that the level is
|
|
95
100
|
the data model level. This means it does not include the extra
|
|
96
101
|
levels introduced by the client-side format but more closely
|
|
97
102
|
aligns with the target native format.
|
|
103
|
+
start_level: int, optional
|
|
104
|
+
If state is a sub-state of a larger state, and the level_type_map
|
|
105
|
+
is for the larger state, then this parameter can be used to
|
|
106
|
+
provide a starting level for the transformation.
|
|
98
107
|
"""
|
|
99
108
|
|
|
100
109
|
def do_adapt(s, level=0):
|
|
@@ -110,4 +119,4 @@ def adapt_client_named_object_keys(state, level_type_map):
|
|
|
110
119
|
state_out[id] = copy.copy(sub_state)
|
|
111
120
|
return state_out
|
|
112
121
|
|
|
113
|
-
return do_adapt(state)
|
|
122
|
+
return do_adapt(state, level=start_level)
|
{ansys_systemcoupling_core-0.8.0.dist-info → ansys_systemcoupling_core-0.9.1.dist-info}/METADATA
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: ansys-systemcoupling-core
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.1
|
|
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>
|
|
7
|
-
Requires-Python: >=3.10,<3.
|
|
7
|
+
Requires-Python: >=3.10,<3.14
|
|
8
8
|
Description-Content-Type: text/x-rst
|
|
9
9
|
Classifier: Development Status :: 4 - Beta
|
|
10
10
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -16,10 +16,12 @@ Classifier: Operating System :: MacOS
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
License-File: LICENSE
|
|
19
21
|
Requires-Dist: ansys-api-systemcoupling==0.2.0
|
|
20
22
|
Requires-Dist: ansys-platform-instancemanagement~=1.0
|
|
21
23
|
Requires-Dist: grpcio>=1.30.0
|
|
22
|
-
Requires-Dist: grpcio-status>=1.30.0
|
|
24
|
+
Requires-Dist: grpcio-status>=1.30.0
|
|
23
25
|
Requires-Dist: googleapis-common-protos>=1.50.0
|
|
24
26
|
Requires-Dist: psutil>=5.7.0
|
|
25
27
|
Requires-Dist: pyyaml
|
|
@@ -27,27 +29,26 @@ Requires-Dist: appdirs>=1.4.0
|
|
|
27
29
|
Requires-Dist: importlib-metadata>=4.0
|
|
28
30
|
Requires-Dist: matplotlib>=3.8.2
|
|
29
31
|
Requires-Dist: build ; extra == "build"
|
|
30
|
-
Requires-Dist: black==
|
|
31
|
-
Requires-Dist: isort==
|
|
32
|
-
Requires-Dist: ansys-sphinx-theme==1.
|
|
32
|
+
Requires-Dist: black==25.1.0 ; extra == "classesgen"
|
|
33
|
+
Requires-Dist: isort==6.0.1 ; extra == "classesgen"
|
|
34
|
+
Requires-Dist: ansys-sphinx-theme==1.4.2 ; extra == "doc"
|
|
33
35
|
Requires-Dist: jupyter_sphinx==0.5.3 ; extra == "doc"
|
|
34
36
|
Requires-Dist: matplotlib ; extra == "doc"
|
|
35
37
|
Requires-Dist: numpydoc==1.8.0 ; extra == "doc"
|
|
36
|
-
Requires-Dist: pypandoc==1.
|
|
38
|
+
Requires-Dist: pypandoc==1.15 ; extra == "doc"
|
|
37
39
|
Requires-Dist: pytest-sphinx==0.6.3 ; extra == "doc"
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist: sphinx-autobuild==2024.
|
|
40
|
-
Requires-Dist: sphinx-autodoc-typehints==
|
|
40
|
+
Requires-Dist: sphinx>=8.1.3 ; extra == "doc"
|
|
41
|
+
Requires-Dist: sphinx-autobuild==2024.10.3 ; extra == "doc"
|
|
42
|
+
Requires-Dist: sphinx-autodoc-typehints==3.1.0 ; extra == "doc"
|
|
41
43
|
Requires-Dist: sphinx-copybutton==0.5.2 ; extra == "doc"
|
|
42
|
-
Requires-Dist: sphinx-gallery==0.
|
|
43
|
-
Requires-Dist: sphinx-notfound-page==1.0
|
|
44
|
+
Requires-Dist: sphinx-gallery==0.19.0 ; extra == "doc"
|
|
45
|
+
Requires-Dist: sphinx-notfound-page==1.1.0 ; extra == "doc"
|
|
44
46
|
Requires-Dist: sphinxcontrib-websupport==2.0.0 ; extra == "doc"
|
|
45
47
|
Requires-Dist: sphinxemoji==0.3.1 ; extra == "doc"
|
|
46
|
-
Requires-Dist: ansys-fluent-core==0.
|
|
47
|
-
Requires-Dist: ansys-
|
|
48
|
-
Requires-Dist:
|
|
49
|
-
Requires-Dist:
|
|
50
|
-
Requires-Dist: flake8==7.1.1 ; extra == "style"
|
|
48
|
+
Requires-Dist: ansys-fluent-core==0.29.0 ; extra == "doc"
|
|
49
|
+
Requires-Dist: ansys-mapdl-core==0.69.3 ; extra == "doc"
|
|
50
|
+
Requires-Dist: codespell==2.4.1 ; extra == "style"
|
|
51
|
+
Requires-Dist: flake8==7.2.0 ; extra == "style"
|
|
51
52
|
Requires-Dist: pytest ; extra == "tests"
|
|
52
53
|
Requires-Dist: pytest-cov ; extra == "tests"
|
|
53
54
|
Requires-Dist: psutil>=5.7.0 ; extra == "tests"
|
|
@@ -136,16 +137,29 @@ in this order:
|
|
|
136
137
|
|
|
137
138
|
* ``SYSC_ROOT``
|
|
138
139
|
* ``AWP_ROOT``
|
|
139
|
-
* ``
|
|
140
|
+
* ``AWP_ROOT251``
|
|
140
141
|
|
|
141
142
|
If a variable is set but does not refer to a valid installation, PySystemCoupling
|
|
142
143
|
fails at that point, rather than attempting to use the next variable.
|
|
143
144
|
|
|
144
|
-
In a standard user installation, the expectation is that only ``
|
|
145
|
+
In a standard user installation, the expectation is that only ``AWP_ROOT251`` is set.
|
|
145
146
|
|
|
146
147
|
(It is also possible to provide a different version number as an argument to the ``launch()``
|
|
147
148
|
function. This will affect which ``AWP_ROOT<version>`` environment variable is examined.)
|
|
148
149
|
|
|
150
|
+
**WARNING**
|
|
151
|
+
|
|
152
|
+
There is an issue with the 25 R1 release of Ansys System Coupling that prevents it from
|
|
153
|
+
working in the gRPC server mode on which PySystemCoupling depends. A small patch
|
|
154
|
+
is available that may be applied to some of the Python files in the System Coupling
|
|
155
|
+
installation. This is provided in the ``patches/`` directory of this repository and will
|
|
156
|
+
allow System Coupling to work with the current release of PySystemCoupling.
|
|
157
|
+
|
|
158
|
+
Otherwise, PySystemCoupling should be used with an earlier release of System Coupling by
|
|
159
|
+
setting the environment variable ``AWP_ROOT`` or specifying the version number as an
|
|
160
|
+
argument to the ``launch()`` function.
|
|
161
|
+
|
|
162
|
+
|
|
149
163
|
The System Coupling API is exposed to PySystemCoupling in two forms:
|
|
150
164
|
|
|
151
165
|
* A documented interface based on concrete Python classes, following Pythonic conventions
|
|
@@ -157,7 +171,7 @@ familiar with System Coupling, adjusting to this form, which is the recommended
|
|
|
157
171
|
However, if you are transitioning existing scripts, the native System Coupling API is made available
|
|
158
172
|
as a convenience.
|
|
159
173
|
|
|
160
|
-
|
|
174
|
+
**Note**
|
|
161
175
|
|
|
162
176
|
While most commands should work as expected via the native System Coupling API,
|
|
163
177
|
no guarantees can be given because of the nature of how it is exposed.
|
{ansys_systemcoupling_core-0.8.0.dist-info → ansys_systemcoupling_core-0.9.1.dist-info}/RECORD
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
ansys/systemcoupling/core/__init__.py,sha256=
|
|
2
|
-
ansys/systemcoupling/core/_version.py,sha256=
|
|
3
|
-
ansys/systemcoupling/core/session.py,sha256=
|
|
4
|
-
ansys/systemcoupling/core/syc_version.py,sha256=
|
|
1
|
+
ansys/systemcoupling/core/__init__.py,sha256=vW228n23bD4XPS3_1FkqUe4us01WNz7T3BrhyF91FXE,7404
|
|
2
|
+
ansys/systemcoupling/core/_version.py,sha256=0O92dThGL6WonU1LHCRjVhowmSx2G6APw-gxOsSN9ME,1579
|
|
3
|
+
ansys/systemcoupling/core/session.py,sha256=gdUOivOdKOhOn7oA9Z2kqZKekFPcURwV_bIODBK1KO0,10983
|
|
4
|
+
ansys/systemcoupling/core/syc_version.py,sha256=rmizjaWrgraXXSWo7-CJs9S9Ed1iXli-DVy7ylaiLMs,3783
|
|
5
5
|
ansys/systemcoupling/core/adaptor/api_23_1/_add_participant.py,sha256=_Wbmc-g3FyEyFodFjklI8IBJ3lLIWEIMHsMdAFlddsM,1198
|
|
6
6
|
ansys/systemcoupling/core/adaptor/api_23_1/_clear_state.py,sha256=z13uOkk8M-Ue1_znQXEyGvYOYW1zHSV-MpZgEMDPlTg,215
|
|
7
7
|
ansys/systemcoupling/core/adaptor/api_23_1/_solve.py,sha256=MOOadf9YEzjm67-3VUewym8bVJP7hcbuo6YuN_c6HTI,204
|
|
@@ -469,13 +469,13 @@ ansys/systemcoupling/core/adaptor/api_25_1/global_stabilization.py,sha256=GKoUGq
|
|
|
469
469
|
ansys/systemcoupling/core/adaptor/api_25_1/has_input_file_changed.py,sha256=PU9djZCJvD8aX4LtA6MyfnqsVXqloitCp4gOTariLT0,909
|
|
470
470
|
ansys/systemcoupling/core/adaptor/api_25_1/import_system_coupling_input_file.py,sha256=BY_zp9YObc2a-H4T_flTVZ95N3JwzH5Df50sT5bI2Mc,993
|
|
471
471
|
ansys/systemcoupling/core/adaptor/api_25_1/initialize.py,sha256=YmTmUme4-tfRtv4XMxsUzIgw-XGyuJttuGxdbFfftns,1025
|
|
472
|
-
ansys/systemcoupling/core/adaptor/api_25_1/instancing.py,sha256=
|
|
473
|
-
ansys/systemcoupling/core/adaptor/api_25_1/instancing_child.py,sha256=
|
|
472
|
+
ansys/systemcoupling/core/adaptor/api_25_1/instancing.py,sha256=J_TJ50x8eU6zcGnrNzMTGUgP5_y2KDqivoKRINEZwss,575
|
|
473
|
+
ansys/systemcoupling/core/adaptor/api_25_1/instancing_child.py,sha256=PxmBCSWlVR45wZKhmf_3xjJ8M0Z-TBtHMN194cmf9N4,3968
|
|
474
474
|
ansys/systemcoupling/core/adaptor/api_25_1/interrupt.py,sha256=r3rfTKTDykPKVWxLENv0xKLCLep_EQIFe6ZW4qPL9kQ,906
|
|
475
475
|
ansys/systemcoupling/core/adaptor/api_25_1/library.py,sha256=woA6i5bJwuvX0rpwPvA037UcJQ68GRVSuEEFnwuKKFw,932
|
|
476
476
|
ansys/systemcoupling/core/adaptor/api_25_1/live_visualization.py,sha256=3vBBtdVUaM5pZasN0wzIO-2Nx3Ei-qa9yLIvD2RM_jA,486
|
|
477
477
|
ansys/systemcoupling/core/adaptor/api_25_1/live_visualization_child.py,sha256=1s-mZXROuCMnUTex47s5reCfwl5QPIftIuSUt63Bgcc,3217
|
|
478
|
-
ansys/systemcoupling/core/adaptor/api_25_1/mapping_control.py,sha256=
|
|
478
|
+
ansys/systemcoupling/core/adaptor/api_25_1/mapping_control.py,sha256=XoQi44FhUdG03B9HoR5GlADP1m35gLQVUDcrRn9ERQs,9851
|
|
479
479
|
ansys/systemcoupling/core/adaptor/api_25_1/open.py,sha256=UaI7smLrHnzBULHTQPwlnc6YAFODxNwdCgh_bEE-YuQ,4810
|
|
480
480
|
ansys/systemcoupling/core/adaptor/api_25_1/open_results_in_ensight.py,sha256=rJZgR1Hskl8qcwK1DMpVeMAxtFCM-w06o2W3FoGkCqA,1902
|
|
481
481
|
ansys/systemcoupling/core/adaptor/api_25_1/open_snapshot.py,sha256=8XRCnVH8REZtLhzgzfzvoJlJDuMhTvGSvv8DIIESH-4,1153
|
|
@@ -493,7 +493,7 @@ ansys/systemcoupling/core/adaptor/api_25_1/reload_expression_function_modules.py
|
|
|
493
493
|
ansys/systemcoupling/core/adaptor/api_25_1/results.py,sha256=t-uhPT5K6WpP6C4kNlo642gbS6mP5Wq5suL6pGkep1o,2658
|
|
494
494
|
ansys/systemcoupling/core/adaptor/api_25_1/save.py,sha256=cf2Wtmr2j7tedleIXEZZJVloi5zH00vx7kCQalkNDW4,1684
|
|
495
495
|
ansys/systemcoupling/core/adaptor/api_25_1/save_snapshot.py,sha256=ToFCyETB_v_nBMP2gs99U8-j2NoH4KYZyvmL5-zKN8g,1950
|
|
496
|
-
ansys/systemcoupling/core/adaptor/api_25_1/setup_root.py,sha256=
|
|
496
|
+
ansys/systemcoupling/core/adaptor/api_25_1/setup_root.py,sha256=ancWutiFrgM5SKtwrYYH0csghLxQBhtMXa80e8a4BvE,9055
|
|
497
497
|
ansys/systemcoupling/core/adaptor/api_25_1/show_plot.py,sha256=qGa4acJb2LU3CqytIFrWKQ59aQLtCQnUCs1HbOR6lDc,1887
|
|
498
498
|
ansys/systemcoupling/core/adaptor/api_25_1/shutdown.py,sha256=piXJW0ZiGH-5WK-4dUWMymGR2iQeptCOK0a3yw980O0,808
|
|
499
499
|
ansys/systemcoupling/core/adaptor/api_25_1/side.py,sha256=JofUJvD2LVcaKhcXtaH7WiUE71fi5c1_3jkMOsy_AZk,372
|
|
@@ -509,52 +509,53 @@ ansys/systemcoupling/core/adaptor/api_25_1/transformation_child.py,sha256=ny8wp4
|
|
|
509
509
|
ansys/systemcoupling/core/adaptor/api_25_1/type.py,sha256=fC5twjCM-g2J3Q2s0Fzq33-xy6MKIrHUluBTx41LmvQ,886
|
|
510
510
|
ansys/systemcoupling/core/adaptor/api_25_1/unmapped_value_options.py,sha256=hO4ZuCHx1Ym5EVm8oBRQL-bvZSv9ZfewVyEWSe30_cA,5626
|
|
511
511
|
ansys/systemcoupling/core/adaptor/api_25_1/update_control.py,sha256=oXA2Bi_5OMOZ1JsF7aWtZQni9VAIzFLIIj8bcjxFSzY,1049
|
|
512
|
-
ansys/systemcoupling/core/adaptor/api_25_1/update_participant.py,sha256=
|
|
512
|
+
ansys/systemcoupling/core/adaptor/api_25_1/update_participant.py,sha256=JoaRINNMXUaPlbh6WNk7cRim6vMD4pIQtJIyHGQW6S8,2109
|
|
513
513
|
ansys/systemcoupling/core/adaptor/api_25_1/variable.py,sha256=BJldfmMGuyO9riy6LwtRrqIaEUPD1Ztexf0CEVubCsE,411
|
|
514
514
|
ansys/systemcoupling/core/adaptor/api_25_1/variable_child.py,sha256=aySH9jOK02RU8OCXyp61XKxvWsV7ZLkSa1yKEimZNas,7234
|
|
515
515
|
ansys/systemcoupling/core/adaptor/api_25_1/write_csv_chart_files.py,sha256=32YlQ9t5bb1qzazVVM4fQOVb1EthrEmPHSXf3dzqv2Q,656
|
|
516
516
|
ansys/systemcoupling/core/adaptor/api_25_1/write_ensight.py,sha256=cy1ZUL2Td2WCfuuWWIUigMmPdxwRKqV9msH0pJI624Y,1278
|
|
517
|
-
ansys/systemcoupling/core/adaptor/impl/get_status_messages.py,sha256=
|
|
518
|
-
ansys/systemcoupling/core/adaptor/impl/get_syc_version.py,sha256=
|
|
519
|
-
ansys/systemcoupling/core/adaptor/impl/injected_commands.py,sha256=
|
|
520
|
-
ansys/systemcoupling/core/adaptor/impl/root_source.py,sha256=
|
|
521
|
-
ansys/systemcoupling/core/adaptor/impl/static_info.py,sha256=
|
|
522
|
-
ansys/systemcoupling/core/adaptor/impl/syc_proxy.py,sha256
|
|
523
|
-
ansys/systemcoupling/core/adaptor/impl/syc_proxy_interface.py,sha256=
|
|
524
|
-
ansys/systemcoupling/core/adaptor/impl/types.py,sha256=
|
|
525
|
-
ansys/systemcoupling/core/charts/chart_datatypes.py,sha256=
|
|
526
|
-
ansys/systemcoupling/core/charts/csv_chartdata.py,sha256=
|
|
527
|
-
ansys/systemcoupling/core/charts/live_csv_datasource.py,sha256=
|
|
528
|
-
ansys/systemcoupling/core/charts/message_dispatcher.py,sha256=
|
|
529
|
-
ansys/systemcoupling/core/charts/plot_functions.py,sha256=
|
|
530
|
-
ansys/systemcoupling/core/charts/plotdefinition_manager.py,sha256=
|
|
531
|
-
ansys/systemcoupling/core/charts/plotter.py,sha256=
|
|
532
|
-
ansys/systemcoupling/core/client/grpc_client.py,sha256=
|
|
533
|
-
ansys/systemcoupling/core/client/syc_container.py,sha256=
|
|
534
|
-
ansys/systemcoupling/core/client/syc_process.py,sha256=
|
|
535
|
-
ansys/systemcoupling/core/client/variant.py,sha256=
|
|
536
|
-
ansys/systemcoupling/core/client/services/command_query.py,sha256=
|
|
537
|
-
ansys/systemcoupling/core/client/services/
|
|
538
|
-
ansys/systemcoupling/core/client/services/
|
|
539
|
-
ansys/systemcoupling/core/client/services/
|
|
540
|
-
ansys/systemcoupling/core/
|
|
541
|
-
ansys/systemcoupling/core/examples/
|
|
542
|
-
ansys/systemcoupling/core/
|
|
543
|
-
ansys/systemcoupling/core/native_api/
|
|
544
|
-
ansys/systemcoupling/core/native_api/
|
|
545
|
-
ansys/systemcoupling/core/native_api/
|
|
546
|
-
ansys/systemcoupling/core/native_api/
|
|
547
|
-
ansys/systemcoupling/core/native_api/
|
|
548
|
-
ansys/systemcoupling/core/
|
|
549
|
-
ansys/systemcoupling/core/participant/
|
|
550
|
-
ansys/systemcoupling/core/participant/
|
|
551
|
-
ansys/systemcoupling/core/
|
|
552
|
-
ansys/systemcoupling/core/util/
|
|
553
|
-
ansys/systemcoupling/core/util/
|
|
554
|
-
ansys/systemcoupling/core/util/
|
|
555
|
-
ansys/systemcoupling/core/util/
|
|
556
|
-
ansys/systemcoupling/core/util/
|
|
557
|
-
|
|
558
|
-
ansys_systemcoupling_core-0.
|
|
559
|
-
ansys_systemcoupling_core-0.
|
|
560
|
-
ansys_systemcoupling_core-0.
|
|
517
|
+
ansys/systemcoupling/core/adaptor/impl/get_status_messages.py,sha256=HFyhLn_Rw7mO23zGJsHq1XQ7Gnxh0ffHIXM5AxlGvqQ,4210
|
|
518
|
+
ansys/systemcoupling/core/adaptor/impl/get_syc_version.py,sha256=EBKu9q1OdIdLzKzi4MxTAZlCGm1MIJJ60FY-X40BGac,2489
|
|
519
|
+
ansys/systemcoupling/core/adaptor/impl/injected_commands.py,sha256=oE24dT8xY_BuZ3Z6K5fFTFL94Oc-jbjRcIWLWekbEDo,19177
|
|
520
|
+
ansys/systemcoupling/core/adaptor/impl/root_source.py,sha256=RIQlBtqnQEOlR8nXMfzNtdeNU3cIiciH-UW8StQoN8w,12828
|
|
521
|
+
ansys/systemcoupling/core/adaptor/impl/static_info.py,sha256=J1EN5rI0kaGPupUwxXfe3XlYuBHUWQwkbNy9s8U--QQ,15938
|
|
522
|
+
ansys/systemcoupling/core/adaptor/impl/syc_proxy.py,sha256=JXKYT0CWwm4CIADSwJsZJ48qXfhNLhEQqzCqA5fpLHA,6072
|
|
523
|
+
ansys/systemcoupling/core/adaptor/impl/syc_proxy_interface.py,sha256=pByFumJFde3LytQtRjuKWB0D7Qz9q51ivulEktTfwy4,2361
|
|
524
|
+
ansys/systemcoupling/core/adaptor/impl/types.py,sha256=LTzLPzEwSsDOtV-1fNiJDJP38UMOIMZ08ugdti68Ax4,25132
|
|
525
|
+
ansys/systemcoupling/core/charts/chart_datatypes.py,sha256=ml5uWQdC6zNpQzks-wjSV0GsEd8npU20Dc0qRibfxVM,6711
|
|
526
|
+
ansys/systemcoupling/core/charts/csv_chartdata.py,sha256=pL1SUc0ufprhGTbfQXx1lqqk0ESCZIXQ50YUx1H-LNU,11811
|
|
527
|
+
ansys/systemcoupling/core/charts/live_csv_datasource.py,sha256=b5VkE8fMSv-C6LQk0OUTc6FtbJ2tmHSkw1Imo2E6lyg,3385
|
|
528
|
+
ansys/systemcoupling/core/charts/message_dispatcher.py,sha256=Z5SQ7huo7-naQ37NzCSBH-cEnwZlUUyK2p_7jxWRnIw,2940
|
|
529
|
+
ansys/systemcoupling/core/charts/plot_functions.py,sha256=13KBPKpA_IpN5DQtWNZD6QTrdGp-FGxlQMUGOC1qIHo,3276
|
|
530
|
+
ansys/systemcoupling/core/charts/plotdefinition_manager.py,sha256=_rEc5FyqzgZXBAYM-ztbHT61IG8VJlHFu9-7gF5TLuE,12446
|
|
531
|
+
ansys/systemcoupling/core/charts/plotter.py,sha256=z01gIUsNVJM_z21Zolu390s1lhxTz0v5M8XLG2TKyRo,11833
|
|
532
|
+
ansys/systemcoupling/core/client/grpc_client.py,sha256=ABXxhY4hBjYb6SrWC0FMgZ3iwYKeaIXTP4OfcOOE97Y,15291
|
|
533
|
+
ansys/systemcoupling/core/client/syc_container.py,sha256=5m3LPMKfOfYkSIrdJOt5yxz2eHNf7389dsISdHUORz0,3353
|
|
534
|
+
ansys/systemcoupling/core/client/syc_process.py,sha256=Grui7KfXgzxIE-OJc1YJOVNjoIrr1VkLSrEbhal7cSA,5734
|
|
535
|
+
ansys/systemcoupling/core/client/variant.py,sha256=Py_0bfqcmqfHqqrsfkp7Q-K0NFf4lAZQuZKCzrNKGZ0,3064
|
|
536
|
+
ansys/systemcoupling/core/client/services/command_query.py,sha256=L2hM-dahtvwVWezh2Tnj0pkDJeiATBOnREG39pD27BY,1766
|
|
537
|
+
ansys/systemcoupling/core/client/services/handle_rpc_error.py,sha256=3nUNJ6enE1REnkCKH7dvkEPF01JLrxZw9Q0F_cpI0iI,2641
|
|
538
|
+
ansys/systemcoupling/core/client/services/output_stream.py,sha256=hnz6syI8f1FqYrfm3nQvNK577bi5rXLoNNKjY3Wh8lg,2148
|
|
539
|
+
ansys/systemcoupling/core/client/services/process.py,sha256=SsqBNjweebAS4WiZFj7hoPgP8Xunf7NXm_UXxt1X9vY,1683
|
|
540
|
+
ansys/systemcoupling/core/client/services/solution.py,sha256=bfcPyZ3a-H-itG2Xa5_xIfDNut733eXWZzJ7qkkrHaI,2028
|
|
541
|
+
ansys/systemcoupling/core/examples/__init__.py,sha256=bv0y1__s_vWioAMICbRbHIX9CSVLNVQczgZLe1hBek8,1223
|
|
542
|
+
ansys/systemcoupling/core/examples/downloads.py,sha256=L1M3M4bCv-POCoCZ4w18mAgz-JWBvVmXCg0y_87ngW8,3708
|
|
543
|
+
ansys/systemcoupling/core/native_api/__init__.py,sha256=AFAIdTi-UVI_UZXtAZ2tZUw-zglXBb4aPCBTokuNQn8,1188
|
|
544
|
+
ansys/systemcoupling/core/native_api/command_metadata.py,sha256=1rgid0cCwMNQf9pBXCluakw0ZObnh5R7Cd9byPK57-4,1734
|
|
545
|
+
ansys/systemcoupling/core/native_api/datamodel_metadata.py,sha256=htPI_l9dQdatT-ooyuO7amisOz0_sn_TTS3kp62mfdo,4836
|
|
546
|
+
ansys/systemcoupling/core/native_api/meta_wrapper.py,sha256=zvWrdZxx15ezJ_b4OZ0DVBytEaT_0Nrr6Si66mrpjjs,1462
|
|
547
|
+
ansys/systemcoupling/core/native_api/native_api.py,sha256=3uu6iRunf5ZrTCnNeERFsYepo5jPInhvqa-1NB_1psE,7116
|
|
548
|
+
ansys/systemcoupling/core/native_api/object_path.py,sha256=rxvt3zvgdbtlX5vmDccsAdJxWvVfTjbt2PpnuvJMNWg,4153
|
|
549
|
+
ansys/systemcoupling/core/participant/manager.py,sha256=xnRx_oG82mnk9trR1jqlb5CXtHwfbdwVt8jmcs4vKVQ,9685
|
|
550
|
+
ansys/systemcoupling/core/participant/mapdl.py,sha256=j6AWvFqUAbzBJMbDWILFxS6XVLP7NVYwDjeKSBbDA_s,11166
|
|
551
|
+
ansys/systemcoupling/core/participant/protocol.py,sha256=7c4_GejvtfsCRizTZgX4pDOp0VlEx9CVPCFxDbNvgIM,2479
|
|
552
|
+
ansys/systemcoupling/core/util/file_transfer.py,sha256=c_-w2kJUpdT4CK3b-3EzbcfcafFqqcXX21x40Is2J4g,6560
|
|
553
|
+
ansys/systemcoupling/core/util/logging.py,sha256=BMhDGQWucYjSNGrS3hYIiNxmvmj5chayo1djZcMwiM8,5059
|
|
554
|
+
ansys/systemcoupling/core/util/name_util.py,sha256=5p3dFIkPJheSX4r4hAcUaGrpmzGg385CruWo--sCCbc,1470
|
|
555
|
+
ansys/systemcoupling/core/util/pathstr.py,sha256=UVewX1DMeWpHgSAZDXX_p1TNs9O-fKDGT7G_38aC6JI,1941
|
|
556
|
+
ansys/systemcoupling/core/util/state_keys.py,sha256=d9TYahJFvafHfH900S4ELouK41hjKIBnRqunPZMzzSc,4998
|
|
557
|
+
ansys/systemcoupling/core/util/yaml_helper.py,sha256=_8ZrZeddnG_-QtdKP0WTxZPxneQkIHuWA229AT687QA,2982
|
|
558
|
+
ansys_systemcoupling_core-0.9.1.dist-info/licenses/LICENSE,sha256=EYDaskLuQxdNNOubsr9Xmgf_0bebDOEcd1ewKBOLCnQ,1098
|
|
559
|
+
ansys_systemcoupling_core-0.9.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
560
|
+
ansys_systemcoupling_core-0.9.1.dist-info/METADATA,sha256=LKw02PkHDwAnBVIslepc26M3qG7thGA2Shg5rZanemo,11648
|
|
561
|
+
ansys_systemcoupling_core-0.9.1.dist-info/RECORD,,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2023 -
|
|
3
|
+
Copyright (c) 2023 - 2025 ANSYS, Inc. and/or its affiliates.
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
6
6
|
this software and associated documentation files (the "Software"), to deal in
|