ansys-systemcoupling-core 0.4.dev0__py3-none-any.whl → 0.5.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-systemcoupling-core might be problematic. Click here for more details.
- ansys/systemcoupling/core/__init__.py +44 -8
- ansys/systemcoupling/core/adaptor/api_23_1/_clear_state.py +13 -0
- ansys/systemcoupling/core/adaptor/api_23_1/case_root.py +7 -1
- ansys/systemcoupling/core/adaptor/api_23_1/clear_state.py +4 -2
- ansys/systemcoupling/core/adaptor/api_23_2/_clear_state.py +13 -0
- ansys/systemcoupling/core/adaptor/api_23_2/case_root.py +7 -1
- ansys/systemcoupling/core/adaptor/api_23_2/clear_state.py +4 -2
- ansys/systemcoupling/core/adaptor/api_24_1/_clear_state.py +13 -0
- ansys/systemcoupling/core/adaptor/api_24_1/case_root.py +7 -1
- ansys/systemcoupling/core/adaptor/api_24_1/clear_state.py +4 -2
- ansys/systemcoupling/core/adaptor/api_24_2/_add_participant.py +80 -0
- ansys/systemcoupling/core/adaptor/api_24_2/_clear_state.py +13 -0
- ansys/systemcoupling/core/adaptor/api_24_2/_solve.py +13 -0
- ansys/systemcoupling/core/adaptor/api_24_2/abort.py +39 -0
- ansys/systemcoupling/core/adaptor/api_24_2/activate_hidden.py +46 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_aerodamping_data_transfers.py +43 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_data_transfer.py +190 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_data_transfer_by_display_names.py +191 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_expression_function.py +61 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_fsi_data_transfers.py +43 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_interface.py +77 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_interface_by_display_names.py +78 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_named_expression.py +42 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_ordered_data_transfers.py +32 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_participant.py +162 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_reference_frame.py +40 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_thermal_data_transfers.py +43 -0
- ansys/systemcoupling/core/adaptor/api_24_2/add_transformation.py +102 -0
- ansys/systemcoupling/core/adaptor/api_24_2/analysis_control.py +283 -0
- ansys/systemcoupling/core/adaptor/api_24_2/apip.py +33 -0
- ansys/systemcoupling/core/adaptor/api_24_2/ascii_output.py +44 -0
- ansys/systemcoupling/core/adaptor/api_24_2/attribute.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/attribute_child.py +54 -0
- ansys/systemcoupling/core/adaptor/api_24_2/automatic_alignment_options.py +46 -0
- ansys/systemcoupling/core/adaptor/api_24_2/available_ports.py +40 -0
- ansys/systemcoupling/core/adaptor/api_24_2/avoid_data_reconstruction.py +46 -0
- ansys/systemcoupling/core/adaptor/api_24_2/case_root.py +62 -0
- ansys/systemcoupling/core/adaptor/api_24_2/clear_state.py +18 -0
- ansys/systemcoupling/core/adaptor/api_24_2/connect_ensight_dvs.py +41 -0
- ansys/systemcoupling/core/adaptor/api_24_2/coupling_interface.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/coupling_interface_child.py +42 -0
- ansys/systemcoupling/core/adaptor/api_24_2/coupling_participant.py +23 -0
- ansys/systemcoupling/core/adaptor/api_24_2/coupling_participant_child.py +265 -0
- ansys/systemcoupling/core/adaptor/api_24_2/create_restart_point.py +29 -0
- ansys/systemcoupling/core/adaptor/api_24_2/data_transfer.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/data_transfer_child.py +187 -0
- ansys/systemcoupling/core/adaptor/api_24_2/delete_snapshot.py +28 -0
- ansys/systemcoupling/core/adaptor/api_24_2/delete_transformation.py +42 -0
- ansys/systemcoupling/core/adaptor/api_24_2/dimensionality.py +96 -0
- ansys/systemcoupling/core/adaptor/api_24_2/execution_control.py +246 -0
- ansys/systemcoupling/core/adaptor/api_24_2/execution_control_1.py +24 -0
- ansys/systemcoupling/core/adaptor/api_24_2/expression.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/expression_child.py +36 -0
- ansys/systemcoupling/core/adaptor/api_24_2/expression_function.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/expression_function_child.py +46 -0
- ansys/systemcoupling/core/adaptor/api_24_2/external_data_file.py +24 -0
- ansys/systemcoupling/core/adaptor/api_24_2/fluent_input.py +77 -0
- ansys/systemcoupling/core/adaptor/api_24_2/fmu_parameter.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/fmu_parameter_child.py +156 -0
- ansys/systemcoupling/core/adaptor/api_24_2/generate_input_file.py +41 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_add_data_transfer_group_commands.py +29 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_execution_command.py +30 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_machines.py +13 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_mode_shape_variables.py +29 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_region_names_for_participant.py +31 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_setup_summary.py +25 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_status_messages.py +52 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_supported_participant_types.py +13 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_thermal_data_transfer_options.py +32 -0
- ansys/systemcoupling/core/adaptor/api_24_2/get_transformation.py +43 -0
- ansys/systemcoupling/core/adaptor/api_24_2/global_stabilization.py +143 -0
- ansys/systemcoupling/core/adaptor/api_24_2/has_input_file_changed.py +36 -0
- ansys/systemcoupling/core/adaptor/api_24_2/import_system_coupling_input_file.py +36 -0
- ansys/systemcoupling/core/adaptor/api_24_2/initialize.py +27 -0
- ansys/systemcoupling/core/adaptor/api_24_2/instancing.py +23 -0
- ansys/systemcoupling/core/adaptor/api_24_2/instancing_child.py +62 -0
- ansys/systemcoupling/core/adaptor/api_24_2/interrupt.py +39 -0
- ansys/systemcoupling/core/adaptor/api_24_2/library.py +37 -0
- ansys/systemcoupling/core/adaptor/api_24_2/live_visualization.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/live_visualization_child.py +100 -0
- ansys/systemcoupling/core/adaptor/api_24_2/mapping_control.py +239 -0
- ansys/systemcoupling/core/adaptor/api_24_2/open.py +102 -0
- ansys/systemcoupling/core/adaptor/api_24_2/open_results_in_ensight.py +56 -0
- ansys/systemcoupling/core/adaptor/api_24_2/open_snapshot.py +37 -0
- ansys/systemcoupling/core/adaptor/api_24_2/output_control.py +134 -0
- ansys/systemcoupling/core/adaptor/api_24_2/parameter.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/parameter_child.py +56 -0
- ansys/systemcoupling/core/adaptor/api_24_2/partition_participants.py +138 -0
- ansys/systemcoupling/core/adaptor/api_24_2/properties.py +36 -0
- ansys/systemcoupling/core/adaptor/api_24_2/record_interactions.py +46 -0
- ansys/systemcoupling/core/adaptor/api_24_2/reference_frame.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/reference_frame_child.py +71 -0
- ansys/systemcoupling/core/adaptor/api_24_2/region.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/region_child.py +71 -0
- ansys/systemcoupling/core/adaptor/api_24_2/reload_expression_function_modules.py +14 -0
- ansys/systemcoupling/core/adaptor/api_24_2/results.py +89 -0
- ansys/systemcoupling/core/adaptor/api_24_2/save.py +51 -0
- ansys/systemcoupling/core/adaptor/api_24_2/save_snapshot.py +54 -0
- ansys/systemcoupling/core/adaptor/api_24_2/setup_root.py +251 -0
- ansys/systemcoupling/core/adaptor/api_24_2/shutdown.py +25 -0
- ansys/systemcoupling/core/adaptor/api_24_2/side.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/side_child.py +56 -0
- ansys/systemcoupling/core/adaptor/api_24_2/solution_control.py +115 -0
- ansys/systemcoupling/core/adaptor/api_24_2/solution_root.py +116 -0
- ansys/systemcoupling/core/adaptor/api_24_2/solve.py +30 -0
- ansys/systemcoupling/core/adaptor/api_24_2/stabilization.py +157 -0
- ansys/systemcoupling/core/adaptor/api_24_2/start_participants.py +47 -0
- ansys/systemcoupling/core/adaptor/api_24_2/step.py +57 -0
- ansys/systemcoupling/core/adaptor/api_24_2/transformation.py +21 -0
- ansys/systemcoupling/core/adaptor/api_24_2/transformation_child.py +62 -0
- ansys/systemcoupling/core/adaptor/api_24_2/type.py +38 -0
- ansys/systemcoupling/core/adaptor/api_24_2/unmapped_value_options.py +158 -0
- ansys/systemcoupling/core/adaptor/api_24_2/update_control.py +43 -0
- ansys/systemcoupling/core/adaptor/api_24_2/update_participant.py +61 -0
- ansys/systemcoupling/core/adaptor/api_24_2/variable.py +20 -0
- ansys/systemcoupling/core/adaptor/api_24_2/variable_child.py +231 -0
- ansys/systemcoupling/core/adaptor/api_24_2/write_csv_chart_files.py +21 -0
- ansys/systemcoupling/core/adaptor/api_24_2/write_ensight.py +46 -0
- ansys/systemcoupling/core/adaptor/impl/injected_commands.py +18 -0
- ansys/systemcoupling/core/client/grpc_client.py +113 -14
- ansys/systemcoupling/core/session.py +50 -0
- ansys/systemcoupling/core/util/file_transfer.py +133 -0
- ansys/systemcoupling/core/util/logging.py +1 -1
- {ansys_systemcoupling_core-0.4.dev0.dist-info → ansys_systemcoupling_core-0.5.0.dist-info}/METADATA +14 -13
- {ansys_systemcoupling_core-0.4.dev0.dist-info → ansys_systemcoupling_core-0.5.0.dist-info}/RECORD +127 -15
- {ansys_systemcoupling_core-0.4.dev0.dist-info → ansys_systemcoupling_core-0.5.0.dist-info}/LICENSE +0 -0
- {ansys_systemcoupling_core-0.4.dev0.dist-info → ansys_systemcoupling_core-0.5.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This is an auto-generated file. DO NOT EDIT!
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class update_control(Container):
|
|
9
|
+
"""
|
|
10
|
+
Configure update controls.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
syc_name = "UpdateControl"
|
|
14
|
+
|
|
15
|
+
property_names_types = [
|
|
16
|
+
("option", "Option", "str"),
|
|
17
|
+
("update_frequency", "UpdateFrequency", "int"),
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def option(self) -> str:
|
|
22
|
+
"""Specifies how often the participant will perform updates.
|
|
23
|
+
|
|
24
|
+
Possible values:
|
|
25
|
+
|
|
26
|
+
- \"ProgramControlled\"
|
|
27
|
+
- \"EveryIteration\"
|
|
28
|
+
- \"StepInterval\"
|
|
29
|
+
- \"Suspended\" """
|
|
30
|
+
return self.get_property_state("option")
|
|
31
|
+
|
|
32
|
+
@option.setter
|
|
33
|
+
def option(self, value: str):
|
|
34
|
+
self.set_property_state("option", value)
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def update_frequency(self) -> int:
|
|
38
|
+
"""Specify update frequency."""
|
|
39
|
+
return self.get_property_state("update_frequency")
|
|
40
|
+
|
|
41
|
+
@update_frequency.setter
|
|
42
|
+
def update_frequency(self, value: int):
|
|
43
|
+
self.set_property_state("update_frequency", value)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This is an auto-generated file. DO NOT EDIT!
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class update_participant(Command):
|
|
9
|
+
"""
|
|
10
|
+
Given the name of a server participant, updates the state of the participant.
|
|
11
|
+
|
|
12
|
+
Available for server participants. Currently, only DEFAULT-SRV,
|
|
13
|
+
CFD-SRV, MECH-SRV, and SCDT-SRV participants may be updated.
|
|
14
|
+
|
|
15
|
+
As part of the update, System Coupling updates all regions and
|
|
16
|
+
variables defined in the participant, including all variable
|
|
17
|
+
attributes. Variables and regions may be added to the participant but
|
|
18
|
+
may not be removed.
|
|
19
|
+
|
|
20
|
+
You may specify an input file using an optional argument. If an input
|
|
21
|
+
file is not provided, then the original input file will be reimported.
|
|
22
|
+
|
|
23
|
+
If the update process fails, System Coupling displays an error. In this
|
|
24
|
+
case, you can either update the setup in the participant application to
|
|
25
|
+
remove any issues with the update process or delete the participant
|
|
26
|
+
from the analysis and then re-add it using the updated input file.
|
|
27
|
+
|
|
28
|
+
Parameters
|
|
29
|
+
----------
|
|
30
|
+
participant_name : str
|
|
31
|
+
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
|
+
input_file : str, optional
|
|
34
|
+
Name of the input file for the participant to be added.
|
|
35
|
+
Currently supported formats are SCP files, Forte input (FTSIM)
|
|
36
|
+
files, mechanical server (\*.rst) files, cfd server (\*.csv) files,
|
|
37
|
+
FMU (.fmu) files (Beta), and system coupling data server (\*.scdt/axdt/csv) files.
|
|
38
|
+
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
syc_name = "UpdateParticipant"
|
|
42
|
+
|
|
43
|
+
argument_names = ["participant_name", "input_file"]
|
|
44
|
+
|
|
45
|
+
class participant_name(String):
|
|
46
|
+
"""
|
|
47
|
+
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
|
+
"""
|
|
50
|
+
|
|
51
|
+
syc_name = "ParticipantName"
|
|
52
|
+
|
|
53
|
+
class input_file(String):
|
|
54
|
+
"""
|
|
55
|
+
Name of the input file for the participant to be added.
|
|
56
|
+
Currently supported formats are SCP files, Forte input (FTSIM)
|
|
57
|
+
files, mechanical server (\*.rst) files, cfd server (\*.csv) files,
|
|
58
|
+
FMU (.fmu) files (Beta), and system coupling data server (\*.scdt/axdt/csv) files.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
syc_name = "InputFile"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This is an auto-generated file. DO NOT EDIT!
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
6
|
+
|
|
7
|
+
from .variable_child import variable_child
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class variable(NamedContainer[variable_child]):
|
|
11
|
+
"""
|
|
12
|
+
Configure a variable for the coupling participant.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
syc_name = "Variable"
|
|
16
|
+
|
|
17
|
+
child_object_type: variable_child = variable_child
|
|
18
|
+
"""
|
|
19
|
+
child_object_type of variable.
|
|
20
|
+
"""
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This is an auto-generated file. DO NOT EDIT!
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
6
|
+
|
|
7
|
+
from .attribute import attribute
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class variable_child(Container):
|
|
11
|
+
"""
|
|
12
|
+
Configure a variable for the coupling participant.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
syc_name = "child_object_type"
|
|
16
|
+
|
|
17
|
+
child_names = ["attribute"]
|
|
18
|
+
|
|
19
|
+
attribute: attribute = attribute
|
|
20
|
+
"""
|
|
21
|
+
attribute child of variable_child.
|
|
22
|
+
"""
|
|
23
|
+
property_names_types = [
|
|
24
|
+
("quantity_type", "QuantityType", "str"),
|
|
25
|
+
("location", "Location", "str"),
|
|
26
|
+
("participant_display_name", "ParticipantDisplayName", "str"),
|
|
27
|
+
("display_name", "DisplayName", "str"),
|
|
28
|
+
("data_type", "DataType", "str"),
|
|
29
|
+
("real_initial_value", "RealInitialValue", "RealType"),
|
|
30
|
+
("integer_initial_value", "IntegerInitialValue", "int"),
|
|
31
|
+
("logical_initial_value", "LogicalInitialValue", "bool"),
|
|
32
|
+
("string_initial_value", "StringInitialValue", "str"),
|
|
33
|
+
("enumeration_initial_value", "EnumerationInitialValue", "int"),
|
|
34
|
+
("real_min", "RealMin", "RealType"),
|
|
35
|
+
("real_max", "RealMax", "RealType"),
|
|
36
|
+
("integer_min", "IntegerMin", "int"),
|
|
37
|
+
("integer_max", "IntegerMax", "int"),
|
|
38
|
+
("enumeration_min", "EnumerationMin", "int"),
|
|
39
|
+
("enumeration_max", "EnumerationMax", "int"),
|
|
40
|
+
("tensor_type", "TensorType", "str"),
|
|
41
|
+
("is_extensive", "IsExtensive", "bool"),
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def quantity_type(self) -> str:
|
|
46
|
+
"""Quantity type of the variable.
|
|
47
|
+
|
|
48
|
+
Allowed values:
|
|
49
|
+
|
|
50
|
+
- \"Unspecified\"
|
|
51
|
+
- \"Force\"
|
|
52
|
+
- \"Incremental Displacement\"
|
|
53
|
+
- \"Temperature\"
|
|
54
|
+
- \"Heat Rate\"
|
|
55
|
+
- \"Heat Transfer Coefficient\"
|
|
56
|
+
- \"Convection Reference Temperature\"
|
|
57
|
+
- \"Mode Shape\"
|
|
58
|
+
- \"Electrical Conductivity\" """
|
|
59
|
+
return self.get_property_state("quantity_type")
|
|
60
|
+
|
|
61
|
+
@quantity_type.setter
|
|
62
|
+
def quantity_type(self, value: str):
|
|
63
|
+
self.set_property_state("quantity_type", value)
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def location(self) -> str:
|
|
67
|
+
"""Data location of the variable (\"Node\" or \"Element\")."""
|
|
68
|
+
return self.get_property_state("location")
|
|
69
|
+
|
|
70
|
+
@location.setter
|
|
71
|
+
def location(self, value: str):
|
|
72
|
+
self.set_property_state("location", value)
|
|
73
|
+
|
|
74
|
+
@property
|
|
75
|
+
def participant_display_name(self) -> str:
|
|
76
|
+
"""Variable's display name as defined by the participant solver."""
|
|
77
|
+
return self.get_property_state("participant_display_name")
|
|
78
|
+
|
|
79
|
+
@participant_display_name.setter
|
|
80
|
+
def participant_display_name(self, value: str):
|
|
81
|
+
self.set_property_state("participant_display_name", value)
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def display_name(self) -> str:
|
|
85
|
+
"""Variable's display name as defined in System Coupling."""
|
|
86
|
+
return self.get_property_state("display_name")
|
|
87
|
+
|
|
88
|
+
@display_name.setter
|
|
89
|
+
def display_name(self, value: str):
|
|
90
|
+
self.set_property_state("display_name", value)
|
|
91
|
+
|
|
92
|
+
@property
|
|
93
|
+
def data_type(self) -> str:
|
|
94
|
+
"""Variable's data type as reported by the participant.
|
|
95
|
+
|
|
96
|
+
Allowed values (non-FMU case):
|
|
97
|
+
|
|
98
|
+
- Real
|
|
99
|
+
- Complex
|
|
100
|
+
|
|
101
|
+
Allowed values (FMU):
|
|
102
|
+
|
|
103
|
+
- Real
|
|
104
|
+
- Integer
|
|
105
|
+
- Logical
|
|
106
|
+
- String
|
|
107
|
+
- Enumeration"""
|
|
108
|
+
return self.get_property_state("data_type")
|
|
109
|
+
|
|
110
|
+
@data_type.setter
|
|
111
|
+
def data_type(self, value: str):
|
|
112
|
+
self.set_property_state("data_type", value)
|
|
113
|
+
|
|
114
|
+
@property
|
|
115
|
+
def real_initial_value(self) -> RealType:
|
|
116
|
+
"""Real data start value."""
|
|
117
|
+
return self.get_property_state("real_initial_value")
|
|
118
|
+
|
|
119
|
+
@real_initial_value.setter
|
|
120
|
+
def real_initial_value(self, value: RealType):
|
|
121
|
+
self.set_property_state("real_initial_value", value)
|
|
122
|
+
|
|
123
|
+
@property
|
|
124
|
+
def integer_initial_value(self) -> int:
|
|
125
|
+
"""Integer data start value."""
|
|
126
|
+
return self.get_property_state("integer_initial_value")
|
|
127
|
+
|
|
128
|
+
@integer_initial_value.setter
|
|
129
|
+
def integer_initial_value(self, value: int):
|
|
130
|
+
self.set_property_state("integer_initial_value", value)
|
|
131
|
+
|
|
132
|
+
@property
|
|
133
|
+
def logical_initial_value(self) -> bool:
|
|
134
|
+
"""Logical data start value."""
|
|
135
|
+
return self.get_property_state("logical_initial_value")
|
|
136
|
+
|
|
137
|
+
@logical_initial_value.setter
|
|
138
|
+
def logical_initial_value(self, value: bool):
|
|
139
|
+
self.set_property_state("logical_initial_value", value)
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def string_initial_value(self) -> str:
|
|
143
|
+
"""String data start value."""
|
|
144
|
+
return self.get_property_state("string_initial_value")
|
|
145
|
+
|
|
146
|
+
@string_initial_value.setter
|
|
147
|
+
def string_initial_value(self, value: str):
|
|
148
|
+
self.set_property_state("string_initial_value", value)
|
|
149
|
+
|
|
150
|
+
@property
|
|
151
|
+
def enumeration_initial_value(self) -> int:
|
|
152
|
+
"""Enumeration data start value."""
|
|
153
|
+
return self.get_property_state("enumeration_initial_value")
|
|
154
|
+
|
|
155
|
+
@enumeration_initial_value.setter
|
|
156
|
+
def enumeration_initial_value(self, value: int):
|
|
157
|
+
self.set_property_state("enumeration_initial_value", value)
|
|
158
|
+
|
|
159
|
+
@property
|
|
160
|
+
def real_min(self) -> RealType:
|
|
161
|
+
"""Real data minimum value."""
|
|
162
|
+
return self.get_property_state("real_min")
|
|
163
|
+
|
|
164
|
+
@real_min.setter
|
|
165
|
+
def real_min(self, value: RealType):
|
|
166
|
+
self.set_property_state("real_min", value)
|
|
167
|
+
|
|
168
|
+
@property
|
|
169
|
+
def real_max(self) -> RealType:
|
|
170
|
+
"""Real data maximum value."""
|
|
171
|
+
return self.get_property_state("real_max")
|
|
172
|
+
|
|
173
|
+
@real_max.setter
|
|
174
|
+
def real_max(self, value: RealType):
|
|
175
|
+
self.set_property_state("real_max", value)
|
|
176
|
+
|
|
177
|
+
@property
|
|
178
|
+
def integer_min(self) -> int:
|
|
179
|
+
"""Integer data minimum value."""
|
|
180
|
+
return self.get_property_state("integer_min")
|
|
181
|
+
|
|
182
|
+
@integer_min.setter
|
|
183
|
+
def integer_min(self, value: int):
|
|
184
|
+
self.set_property_state("integer_min", value)
|
|
185
|
+
|
|
186
|
+
@property
|
|
187
|
+
def integer_max(self) -> int:
|
|
188
|
+
"""Integer data maximum value."""
|
|
189
|
+
return self.get_property_state("integer_max")
|
|
190
|
+
|
|
191
|
+
@integer_max.setter
|
|
192
|
+
def integer_max(self, value: int):
|
|
193
|
+
self.set_property_state("integer_max", value)
|
|
194
|
+
|
|
195
|
+
@property
|
|
196
|
+
def enumeration_min(self) -> int:
|
|
197
|
+
"""Enumeration data minimum value."""
|
|
198
|
+
return self.get_property_state("enumeration_min")
|
|
199
|
+
|
|
200
|
+
@enumeration_min.setter
|
|
201
|
+
def enumeration_min(self, value: int):
|
|
202
|
+
self.set_property_state("enumeration_min", value)
|
|
203
|
+
|
|
204
|
+
@property
|
|
205
|
+
def enumeration_max(self) -> int:
|
|
206
|
+
"""Enumeration data maximum value."""
|
|
207
|
+
return self.get_property_state("enumeration_max")
|
|
208
|
+
|
|
209
|
+
@enumeration_max.setter
|
|
210
|
+
def enumeration_max(self, value: int):
|
|
211
|
+
self.set_property_state("enumeration_max", value)
|
|
212
|
+
|
|
213
|
+
@property
|
|
214
|
+
def tensor_type(self) -> str:
|
|
215
|
+
"""Indicates the variable tensor type (\"Scalar\" or \"Vector\").
|
|
216
|
+
|
|
217
|
+
\"Vector\" is not supported for the FMU case."""
|
|
218
|
+
return self.get_property_state("tensor_type")
|
|
219
|
+
|
|
220
|
+
@tensor_type.setter
|
|
221
|
+
def tensor_type(self, value: str):
|
|
222
|
+
self.set_property_state("tensor_type", value)
|
|
223
|
+
|
|
224
|
+
@property
|
|
225
|
+
def is_extensive(self) -> bool:
|
|
226
|
+
"""Indicates whether this is an extensive property."""
|
|
227
|
+
return self.get_property_state("is_extensive")
|
|
228
|
+
|
|
229
|
+
@is_extensive.setter
|
|
230
|
+
def is_extensive(self, value: bool):
|
|
231
|
+
self.set_property_state("is_extensive", value)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This is an auto-generated file. DO NOT EDIT!
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class write_csv_chart_files(Command):
|
|
9
|
+
"""
|
|
10
|
+
For each coupling interface, exports a CSV file containing chart data
|
|
11
|
+
(convergence and source/target quantity transfer values) for
|
|
12
|
+
that interface.
|
|
13
|
+
|
|
14
|
+
Each file is named according to the convention ``<interface>.csv``, where
|
|
15
|
+
``<interface>`` is the object name of the corresponding coupling interface.
|
|
16
|
+
|
|
17
|
+
This command will overwrite any CSV charting files that already exist,
|
|
18
|
+
including any that were written during the solution.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
syc_name = "WriteCsvChartFiles"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This is an auto-generated file. DO NOT EDIT!
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
from ansys.systemcoupling.core.adaptor.impl.types import *
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class write_ensight(Command):
|
|
9
|
+
"""
|
|
10
|
+
Write a file with mesh and results which can be loaded into Ensight for
|
|
11
|
+
post processing.
|
|
12
|
+
|
|
13
|
+
Parameters
|
|
14
|
+
----------
|
|
15
|
+
file_name : str
|
|
16
|
+
Base name for Ensight files. It will generate <base>.encas file which
|
|
17
|
+
should be loaded into Ensight. Other files are generated for geometry
|
|
18
|
+
and variables.
|
|
19
|
+
binary : bool, optional
|
|
20
|
+
To control if file is to be written in binary format or ASCII. ASCII
|
|
21
|
+
slows down performance, but may be useful for debugging and seeing
|
|
22
|
+
raw data.
|
|
23
|
+
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
syc_name = "WriteEnSight"
|
|
27
|
+
|
|
28
|
+
argument_names = ["file_name", "binary"]
|
|
29
|
+
|
|
30
|
+
class file_name(String):
|
|
31
|
+
"""
|
|
32
|
+
Base name for Ensight files. It will generate <base>.encas file which
|
|
33
|
+
should be loaded into Ensight. Other files are generated for geometry
|
|
34
|
+
and variables.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
syc_name = "FileName"
|
|
38
|
+
|
|
39
|
+
class binary(Boolean):
|
|
40
|
+
"""
|
|
41
|
+
To control if file is to be written in binary format or ASCII. ASCII
|
|
42
|
+
slows down performance, but may be useful for debugging and seeing
|
|
43
|
+
raw data.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
syc_name = "Binary"
|
|
@@ -63,6 +63,13 @@ def get_injected_cmd_map(
|
|
|
63
63
|
"abort": lambda **kwargs: rpc.abort(**kwargs),
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
if category == "case":
|
|
67
|
+
ret = {
|
|
68
|
+
"clear_state": lambda **kwargs: _wrap_clear_state(
|
|
69
|
+
root_object, part_mgr, **kwargs
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
|
|
66
73
|
return ret
|
|
67
74
|
|
|
68
75
|
|
|
@@ -102,6 +109,13 @@ def _wrap_add_participant(
|
|
|
102
109
|
return root_object._add_participant(**kwargs)
|
|
103
110
|
|
|
104
111
|
|
|
112
|
+
def _wrap_clear_state(
|
|
113
|
+
root_object: Container, part_mgr: ParticipantManager, **kwargs
|
|
114
|
+
) -> None:
|
|
115
|
+
part_mgr.clear()
|
|
116
|
+
root_object._clear_state(**kwargs)
|
|
117
|
+
|
|
118
|
+
|
|
105
119
|
def _wrap_solve(root_object: Container, part_mgr: ParticipantManager) -> None:
|
|
106
120
|
if part_mgr is None:
|
|
107
121
|
root_object._solve()
|
|
@@ -309,4 +323,8 @@ _cmd_yaml = """
|
|
|
309
323
|
essentialArgNames: []
|
|
310
324
|
optionalArgNames: []
|
|
311
325
|
args: []
|
|
326
|
+
- name: ClearState
|
|
327
|
+
pyname: clear_state
|
|
328
|
+
isInjected: true
|
|
329
|
+
pysyc_internal_name: _clear_state
|
|
312
330
|
"""
|
|
@@ -26,8 +26,10 @@ import json
|
|
|
26
26
|
import os
|
|
27
27
|
import socket
|
|
28
28
|
import threading
|
|
29
|
+
from typing import Optional
|
|
29
30
|
|
|
30
31
|
import ansys.api.systemcoupling.v0.command_pb2 as command_pb2
|
|
32
|
+
import ansys.platform.instancemanagement as pypim
|
|
31
33
|
import grpc
|
|
32
34
|
|
|
33
35
|
from ansys.systemcoupling.core.client.services.command_query import CommandQueryService
|
|
@@ -37,13 +39,15 @@ from ansys.systemcoupling.core.client.services.solution import SolutionService
|
|
|
37
39
|
from ansys.systemcoupling.core.client.syc_container import start_container
|
|
38
40
|
from ansys.systemcoupling.core.client.syc_process import SycProcess
|
|
39
41
|
from ansys.systemcoupling.core.client.variant import from_variant, to_variant
|
|
42
|
+
from ansys.systemcoupling.core.syc_version import normalize_version
|
|
43
|
+
from ansys.systemcoupling.core.util.file_transfer import file_transfer_service
|
|
40
44
|
from ansys.systemcoupling.core.util.logging import LOG
|
|
41
45
|
|
|
42
46
|
_CHANNEL_READY_TIMEOUT_SEC = 15
|
|
43
47
|
_LOCALHOST_IP = "127.0.0.1"
|
|
44
48
|
|
|
45
49
|
|
|
46
|
-
def _find_port():
|
|
50
|
+
def _find_port() -> int:
|
|
47
51
|
with socket.socket() as s:
|
|
48
52
|
s.bind(("", 0))
|
|
49
53
|
return s.getsockname()[1]
|
|
@@ -95,6 +99,8 @@ class SycGrpc(object):
|
|
|
95
99
|
self.__process = None
|
|
96
100
|
self.__channel = None
|
|
97
101
|
self.__output_thread = None
|
|
102
|
+
self.__pim_instance = None
|
|
103
|
+
self.__skip_exit = False
|
|
98
104
|
|
|
99
105
|
@classmethod
|
|
100
106
|
def _cleanup(cls):
|
|
@@ -147,6 +153,39 @@ class SycGrpc(object):
|
|
|
147
153
|
LOG.debug("...started")
|
|
148
154
|
self._connect(_LOCALHOST_IP, port)
|
|
149
155
|
|
|
156
|
+
def start_pim_and_connect(self, version: str = None):
|
|
157
|
+
"""Start PIM-managed instance.
|
|
158
|
+
|
|
159
|
+
Currently for internal use only.
|
|
160
|
+
"""
|
|
161
|
+
product_version = "latest"
|
|
162
|
+
if version is not None:
|
|
163
|
+
maj_v, min_v = normalize_version(version)
|
|
164
|
+
product_version = f"{maj_v}{min_v}"
|
|
165
|
+
|
|
166
|
+
pim = pypim.connect()
|
|
167
|
+
instance = pim.create_instance(
|
|
168
|
+
product_name="systemcoupling", product_version=product_version
|
|
169
|
+
)
|
|
170
|
+
instance.wait_for_ready()
|
|
171
|
+
self.__pim_instance = instance
|
|
172
|
+
channel = instance.build_grpc_channel()
|
|
173
|
+
self._connect(channel=channel)
|
|
174
|
+
|
|
175
|
+
def upload_file(self, *args, **kwargs):
|
|
176
|
+
"""Supports file upload to remote instance.
|
|
177
|
+
|
|
178
|
+
Currently for internal use only.
|
|
179
|
+
"""
|
|
180
|
+
file_transfer_service(self.__pim_instance).upload_file(*args, **kwargs)
|
|
181
|
+
|
|
182
|
+
def download_file(self, *args, **kwargs):
|
|
183
|
+
"""Supports file download from remote instance.
|
|
184
|
+
|
|
185
|
+
Currently for internal use only.
|
|
186
|
+
"""
|
|
187
|
+
file_transfer_service(self.__pim_instance).download_file(*args, **kwargs)
|
|
188
|
+
|
|
150
189
|
def connect(self, host, port):
|
|
151
190
|
"""Connect to an already running System Coupling server running on a known
|
|
152
191
|
host and port.
|
|
@@ -161,20 +200,34 @@ class SycGrpc(object):
|
|
|
161
200
|
# Discard the sentinel
|
|
162
201
|
del SycGrpc._instances[-1]
|
|
163
202
|
|
|
164
|
-
def _connect(
|
|
203
|
+
def _connect(
|
|
204
|
+
self,
|
|
205
|
+
host: Optional[str] = None,
|
|
206
|
+
port: Optional[int] = None,
|
|
207
|
+
channel: Optional[grpc.Channel] = None,
|
|
208
|
+
):
|
|
209
|
+
if (channel is None and (host is None or port is None)) or (
|
|
210
|
+
channel is not None and (host is not None or port is not None)
|
|
211
|
+
):
|
|
212
|
+
raise ValueError("Internal error: _connect needs host and port OR channel")
|
|
213
|
+
|
|
165
214
|
LOG.debug("Connecting...")
|
|
166
215
|
self._register_for_cleanup()
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
216
|
+
if channel is None:
|
|
217
|
+
self.__channel = grpc.insecure_channel(f"{host}:{port}")
|
|
218
|
+
|
|
219
|
+
# Wait for server to be ready
|
|
220
|
+
timeout = _CHANNEL_READY_TIMEOUT_SEC
|
|
221
|
+
try:
|
|
222
|
+
grpc.channel_ready_future(self.__channel).result(timeout=timeout)
|
|
223
|
+
except grpc.FutureTimeoutError:
|
|
224
|
+
raise RuntimeError(
|
|
225
|
+
"Stopping attempt to connect to gRPC channel "
|
|
226
|
+
f"after {timeout} seconds."
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
else:
|
|
230
|
+
self.__channel = channel
|
|
178
231
|
|
|
179
232
|
LOG.debug("...connected")
|
|
180
233
|
|
|
@@ -183,6 +236,49 @@ class SycGrpc(object):
|
|
|
183
236
|
self.__process_service = SycProcessService(self.__channel)
|
|
184
237
|
self.__solution_service = SolutionService(self.__channel)
|
|
185
238
|
|
|
239
|
+
@property
|
|
240
|
+
def _channel_str(self):
|
|
241
|
+
"""The channel target string.
|
|
242
|
+
|
|
243
|
+
Generally of the form of "ip:port", like "127.0.0.1:50052".
|
|
244
|
+
|
|
245
|
+
"""
|
|
246
|
+
|
|
247
|
+
# Note: this impl was taken from pymapdl and does more than SyC needs
|
|
248
|
+
# at the moment as we don't use interceptors.
|
|
249
|
+
|
|
250
|
+
channel = self.__channel
|
|
251
|
+
while channel is not None:
|
|
252
|
+
# When creating interceptors, channels have a nested "_channel" member
|
|
253
|
+
# containing the intercepted channel.
|
|
254
|
+
# Only the actual channel contains the "target" member describing the address
|
|
255
|
+
if hasattr(channel, "target"):
|
|
256
|
+
return channel.target().decode()
|
|
257
|
+
channel = getattr(channel, "_channel", None)
|
|
258
|
+
# This method is relying on grpc channel's private attributes, fallback in case
|
|
259
|
+
# it does not exist
|
|
260
|
+
return "unknown" # pragma: no cover Unreachable in the current gRPC version
|
|
261
|
+
|
|
262
|
+
@property
|
|
263
|
+
def _channel(self) -> grpc.Channel:
|
|
264
|
+
"""Access the gRPC Channel object
|
|
265
|
+
|
|
266
|
+
Provided for testing purposes.
|
|
267
|
+
"""
|
|
268
|
+
return self.__channel
|
|
269
|
+
|
|
270
|
+
@property
|
|
271
|
+
def _skip_exit(self) -> bool:
|
|
272
|
+
return self.__skip_exit
|
|
273
|
+
|
|
274
|
+
@_skip_exit.setter
|
|
275
|
+
def _skip_exit(self, value: bool) -> None:
|
|
276
|
+
"""Make ``exit`` call a no-op for this instance.
|
|
277
|
+
|
|
278
|
+
Provided for testing purposes.
|
|
279
|
+
"""
|
|
280
|
+
self.__skip_exit = value
|
|
281
|
+
|
|
186
282
|
def exit(self):
|
|
187
283
|
"""Shut down the remote System Coupling server.
|
|
188
284
|
|
|
@@ -193,7 +289,7 @@ class SycGrpc(object):
|
|
|
193
289
|
# Remove from atexit cleanup list
|
|
194
290
|
del SycGrpc._instances[self.__id]
|
|
195
291
|
|
|
196
|
-
if self.__channel is not None:
|
|
292
|
+
if self.__channel is not None and not self.__skip_exit:
|
|
197
293
|
try:
|
|
198
294
|
self.__ostream_service.end_streaming()
|
|
199
295
|
except Exception as e:
|
|
@@ -203,6 +299,9 @@ class SycGrpc(object):
|
|
|
203
299
|
if self.__process:
|
|
204
300
|
self.__process.end()
|
|
205
301
|
self.__process = None
|
|
302
|
+
if self.__pim_instance is not None:
|
|
303
|
+
self.__pim_instance.delete()
|
|
304
|
+
self.__pim_instance = None
|
|
206
305
|
self._reset()
|
|
207
306
|
|
|
208
307
|
def start_output(self, handle_output=None):
|