ansys-systemcoupling-core 0.9.1__py3-none-any.whl → 0.10.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 +1 -1
- ansys/systemcoupling/core/adaptor/api_25_2/_add_participant.py +80 -0
- ansys/systemcoupling/core/adaptor/api_25_2/_clear_state.py +13 -0
- ansys/systemcoupling/core/adaptor/api_25_2/_solve.py +13 -0
- ansys/systemcoupling/core/adaptor/api_25_2/abort.py +39 -0
- ansys/systemcoupling/core/adaptor/api_25_2/activate_hidden.py +46 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_aerodamping_data_transfers.py +43 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_data_transfer.py +190 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_expression_function.py +61 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_flow_boundary_data_transfers.py +32 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_fsi_data_transfers.py +43 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_interface.py +77 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_named_expression.py +42 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_ordered_data_transfers.py +41 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_participant.py +177 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_reference_frame.py +40 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_thermal_data_transfers.py +43 -0
- ansys/systemcoupling/core/adaptor/api_25_2/add_transformation.py +102 -0
- ansys/systemcoupling/core/adaptor/api_25_2/analysis_control.py +333 -0
- ansys/systemcoupling/core/adaptor/api_25_2/apip.py +33 -0
- ansys/systemcoupling/core/adaptor/api_25_2/ascii_output.py +44 -0
- ansys/systemcoupling/core/adaptor/api_25_2/attribute.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/attribute_child.py +74 -0
- ansys/systemcoupling/core/adaptor/api_25_2/automatic_alignment_options.py +46 -0
- ansys/systemcoupling/core/adaptor/api_25_2/available_ports.py +40 -0
- ansys/systemcoupling/core/adaptor/api_25_2/avoid_data_reconstruction.py +56 -0
- ansys/systemcoupling/core/adaptor/api_25_2/case_root.py +62 -0
- ansys/systemcoupling/core/adaptor/api_25_2/clear_state.py +18 -0
- ansys/systemcoupling/core/adaptor/api_25_2/connect_ensight_dvs.py +41 -0
- ansys/systemcoupling/core/adaptor/api_25_2/coupling_interface.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/coupling_interface_child.py +42 -0
- ansys/systemcoupling/core/adaptor/api_25_2/coupling_participant.py +23 -0
- ansys/systemcoupling/core/adaptor/api_25_2/coupling_participant_child.py +272 -0
- ansys/systemcoupling/core/adaptor/api_25_2/create_restart_point.py +28 -0
- ansys/systemcoupling/core/adaptor/api_25_2/data_transfer.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/data_transfer_child.py +195 -0
- ansys/systemcoupling/core/adaptor/api_25_2/delete_snapshot.py +30 -0
- ansys/systemcoupling/core/adaptor/api_25_2/delete_transformation.py +42 -0
- ansys/systemcoupling/core/adaptor/api_25_2/dimensionality.py +96 -0
- ansys/systemcoupling/core/adaptor/api_25_2/execution_control.py +266 -0
- ansys/systemcoupling/core/adaptor/api_25_2/execution_control_1.py +24 -0
- ansys/systemcoupling/core/adaptor/api_25_2/expression.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/expression_child.py +36 -0
- ansys/systemcoupling/core/adaptor/api_25_2/expression_function.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/expression_function_child.py +46 -0
- ansys/systemcoupling/core/adaptor/api_25_2/external_data_file.py +24 -0
- ansys/systemcoupling/core/adaptor/api_25_2/fluent_input.py +77 -0
- ansys/systemcoupling/core/adaptor/api_25_2/fmu_parameter.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/fmu_parameter_child.py +164 -0
- ansys/systemcoupling/core/adaptor/api_25_2/generate_input_file.py +53 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_add_data_transfer_group_commands.py +29 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_execution_command.py +30 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_machines.py +34 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_mode_shape_variables.py +29 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_region_names_for_participant.py +32 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_setup_summary.py +25 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_status_messages.py +52 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_supported_participant_types.py +13 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_thermal_data_transfer_options.py +32 -0
- ansys/systemcoupling/core/adaptor/api_25_2/get_transformation.py +43 -0
- ansys/systemcoupling/core/adaptor/api_25_2/global_stabilization.py +155 -0
- ansys/systemcoupling/core/adaptor/api_25_2/has_input_file_changed.py +36 -0
- ansys/systemcoupling/core/adaptor/api_25_2/import_system_coupling_input_file.py +36 -0
- ansys/systemcoupling/core/adaptor/api_25_2/initialize.py +27 -0
- ansys/systemcoupling/core/adaptor/api_25_2/instancing.py +25 -0
- ansys/systemcoupling/core/adaptor/api_25_2/instancing_child.py +114 -0
- ansys/systemcoupling/core/adaptor/api_25_2/interrupt.py +39 -0
- ansys/systemcoupling/core/adaptor/api_25_2/library.py +37 -0
- ansys/systemcoupling/core/adaptor/api_25_2/live_visualization.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/live_visualization_child.py +100 -0
- ansys/systemcoupling/core/adaptor/api_25_2/map.py +19 -0
- ansys/systemcoupling/core/adaptor/api_25_2/mapping_control.py +273 -0
- ansys/systemcoupling/core/adaptor/api_25_2/open.py +107 -0
- ansys/systemcoupling/core/adaptor/api_25_2/open_results_in_ensight.py +56 -0
- ansys/systemcoupling/core/adaptor/api_25_2/open_snapshot.py +37 -0
- ansys/systemcoupling/core/adaptor/api_25_2/output_control.py +134 -0
- ansys/systemcoupling/core/adaptor/api_25_2/parameter.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/parameter_child.py +60 -0
- ansys/systemcoupling/core/adaptor/api_25_2/partition_participants.py +148 -0
- ansys/systemcoupling/core/adaptor/api_25_2/properties.py +36 -0
- ansys/systemcoupling/core/adaptor/api_25_2/record_interactions.py +46 -0
- ansys/systemcoupling/core/adaptor/api_25_2/reference_frame.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/reference_frame_child.py +71 -0
- ansys/systemcoupling/core/adaptor/api_25_2/region.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/region_child.py +71 -0
- ansys/systemcoupling/core/adaptor/api_25_2/reload_expression_function_modules.py +14 -0
- ansys/systemcoupling/core/adaptor/api_25_2/results.py +89 -0
- ansys/systemcoupling/core/adaptor/api_25_2/save.py +53 -0
- ansys/systemcoupling/core/adaptor/api_25_2/save_snapshot.py +54 -0
- ansys/systemcoupling/core/adaptor/api_25_2/setup_root.py +243 -0
- ansys/systemcoupling/core/adaptor/api_25_2/show_plot.py +75 -0
- ansys/systemcoupling/core/adaptor/api_25_2/shutdown.py +25 -0
- ansys/systemcoupling/core/adaptor/api_25_2/side.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/side_child.py +56 -0
- ansys/systemcoupling/core/adaptor/api_25_2/solution_control.py +127 -0
- ansys/systemcoupling/core/adaptor/api_25_2/solution_root.py +134 -0
- ansys/systemcoupling/core/adaptor/api_25_2/solve.py +30 -0
- ansys/systemcoupling/core/adaptor/api_25_2/stabilization.py +157 -0
- ansys/systemcoupling/core/adaptor/api_25_2/step.py +57 -0
- ansys/systemcoupling/core/adaptor/api_25_2/transformation.py +21 -0
- ansys/systemcoupling/core/adaptor/api_25_2/transformation_child.py +62 -0
- ansys/systemcoupling/core/adaptor/api_25_2/type.py +39 -0
- ansys/systemcoupling/core/adaptor/api_25_2/unmapped_value_options.py +158 -0
- ansys/systemcoupling/core/adaptor/api_25_2/update_control.py +43 -0
- ansys/systemcoupling/core/adaptor/api_25_2/update_interfaces.py +19 -0
- ansys/systemcoupling/core/adaptor/api_25_2/update_participant.py +61 -0
- ansys/systemcoupling/core/adaptor/api_25_2/variable.py +20 -0
- ansys/systemcoupling/core/adaptor/api_25_2/variable_child.py +231 -0
- ansys/systemcoupling/core/adaptor/api_25_2/write_csv_chart_files.py +21 -0
- ansys/systemcoupling/core/adaptor/api_25_2/write_ensight.py +46 -0
- ansys/systemcoupling/core/adaptor/api_25_2/write_target_data.py +32 -0
- ansys/systemcoupling/core/adaptor/impl/get_syc_version.py +4 -1
- ansys/systemcoupling/core/adaptor/impl/injected_commands.py +3 -1
- ansys/systemcoupling/core/charts/csv_chartdata.py +4 -3
- ansys/systemcoupling/core/charts/plot_functions.py +12 -4
- ansys/systemcoupling/core/charts/plotter.py +3 -2
- ansys/systemcoupling/core/client/grpc_client.py +11 -2
- ansys/systemcoupling/core/client/syc_container.py +40 -35
- ansys/systemcoupling/core/client/syc_process.py +5 -2
- ansys/systemcoupling/core/native_api/datamodel_metadata.py +3 -2
- ansys/systemcoupling/core/native_api/object_path.py +2 -1
- ansys/systemcoupling/core/syc_version.py +1 -1
- ansys/systemcoupling/core/util/assertion.py +38 -0
- ansys/systemcoupling/core/util/file_transfer.py +2 -1
- ansys/systemcoupling/core/util/yaml_helper.py +5 -5
- {ansys_systemcoupling_core-0.9.1.dist-info → ansys_systemcoupling_core-0.10.1.dist-info}/METADATA +16 -10
- {ansys_systemcoupling_core-0.9.1.dist-info → ansys_systemcoupling_core-0.10.1.dist-info}/RECORD +129 -18
- {ansys_systemcoupling_core-0.9.1.dist-info → ansys_systemcoupling_core-0.10.1.dist-info}/WHEEL +0 -0
- {ansys_systemcoupling_core-0.9.1.dist-info → ansys_systemcoupling_core-0.10.1.dist-info}/licenses/LICENSE +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,19 @@
|
|
|
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_interfaces(Command):
|
|
9
|
+
"""
|
|
10
|
+
Command to apply transformation and instance defined in the interfaces.
|
|
11
|
+
And display mapping mesh with the transformation and instance applied in the
|
|
12
|
+
System Coupling viewer.
|
|
13
|
+
|
|
14
|
+
The purpose of this command is to visually confirm the correctness of coupling
|
|
15
|
+
interfaces definition, alignment and instancing settings, and to allow modifying
|
|
16
|
+
those settings to fix any issues ("nudge" the alignment, etc.)
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
syc_name = "UpdateInterfaces"
|
|
@@ -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 participant, updates the state of the participant.
|
|
11
|
+
|
|
12
|
+
Available for DEFAULT-SRV, CFD-SRV, MECH-SRV, and SCDT-SRV and
|
|
13
|
+
AEDT participants.
|
|
14
|
+
|
|
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
|
+
|
|
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
|
+
Note: AEDT participants must be updated using an scp file.
|
|
24
|
+
|
|
25
|
+
If the update process fails, System Coupling displays an error. In this
|
|
26
|
+
case, you can either update the setup in the participant application to
|
|
27
|
+
remove any issues with the update process or delete the participant
|
|
28
|
+
from the analysis and then re-add it using the updated input file.
|
|
29
|
+
|
|
30
|
+
Parameters
|
|
31
|
+
----------
|
|
32
|
+
participant_name : str
|
|
33
|
+
Participant name. Must be the name of an existing participant.
|
|
34
|
+
input_file : str, optional
|
|
35
|
+
Name of the input file for the participant to be added.
|
|
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.
|
|
39
|
+
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
syc_name = "UpdateParticipant"
|
|
43
|
+
|
|
44
|
+
argument_names = ["participant_name", "input_file"]
|
|
45
|
+
|
|
46
|
+
class participant_name(String):
|
|
47
|
+
"""
|
|
48
|
+
Participant name. Must be the name of an existing participant.
|
|
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, mechanical server
|
|
57
|
+
(\*.rst) files, cfd server (\*.csv) files, and system coupling
|
|
58
|
+
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"
|
|
@@ -0,0 +1,32 @@
|
|
|
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_target_data(Command):
|
|
9
|
+
"""
|
|
10
|
+
Command to write target data for target participant after mapping operation.
|
|
11
|
+
|
|
12
|
+
The purpose of this command is to write target mesh and target mapped data in
|
|
13
|
+
the target participant working directory and thus mapping results from SystemCoupling can
|
|
14
|
+
be check in the target participant.
|
|
15
|
+
|
|
16
|
+
Parameters
|
|
17
|
+
----------
|
|
18
|
+
overwrite : bool, optional
|
|
19
|
+
Flag indicating whether to overwrite the existing target data file. Default value is False.
|
|
20
|
+
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
syc_name = "WriteTargetData"
|
|
24
|
+
|
|
25
|
+
argument_names = ["overwrite"]
|
|
26
|
+
|
|
27
|
+
class overwrite(Boolean):
|
|
28
|
+
"""
|
|
29
|
+
Flag indicating whether to overwrite the existing target data file. Default value is False.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
syc_name = "Overwrite"
|
|
@@ -44,11 +44,14 @@ def get_syc_version(api) -> str:
|
|
|
44
44
|
def clean_version_string(version_in: str) -> str:
|
|
45
45
|
year, _, release = version_in.partition(" ")
|
|
46
46
|
if len(year) == 4 and year.startswith("20") and release.startswith("R"):
|
|
47
|
+
# Exclude Bandit check. The try-except-pass is only used to simplify logic.
|
|
48
|
+
# An exception will be thrown in any case, but it *also* gets thrown for
|
|
49
|
+
# input that does not match the above 'if' condition.
|
|
47
50
|
try:
|
|
48
51
|
year = int(year[2:])
|
|
49
52
|
release = int(release[1:])
|
|
50
53
|
return f"{year}.{release}"
|
|
51
|
-
except:
|
|
54
|
+
except: # nosec B110
|
|
52
55
|
pass
|
|
53
56
|
raise RuntimeError(
|
|
54
57
|
f"Version string {version_in} has invalid format (expect '20yy Rn')."
|
|
@@ -187,7 +187,9 @@ def _ensure_file_available(session: SessionProtocol, filepath: str) -> str:
|
|
|
187
187
|
file_name = os.path.basename(filepath)
|
|
188
188
|
root_name, _, ext = file_name.rpartition(".")
|
|
189
189
|
ext = f".{ext}" if ext else ""
|
|
190
|
-
|
|
190
|
+
# Exclude Bandit check as random number is simply being used to create a unique
|
|
191
|
+
# file name, not for security/cryptographic purposes.
|
|
192
|
+
new_name = f"{root_name}_{int(time.time())}_{random.randint(1, 10000000)}{ext}" # nosec B311
|
|
191
193
|
|
|
192
194
|
session._native_api.ExecPythonString(
|
|
193
195
|
PythonString=f"import shutil\nshutil.copy('{filepath}', '{new_name}')"
|
|
@@ -32,6 +32,7 @@ from ansys.systemcoupling.core.charts.chart_datatypes import (
|
|
|
32
32
|
TimestepData,
|
|
33
33
|
TransferSeriesInfo,
|
|
34
34
|
)
|
|
35
|
+
from ansys.systemcoupling.core.util.assertion import assert_
|
|
35
36
|
|
|
36
37
|
HeaderList = list[str]
|
|
37
38
|
ChartData = list[list[float]]
|
|
@@ -231,8 +232,8 @@ def _parse_suffix(header: str, part_disp_name: str) -> str:
|
|
|
231
232
|
|
|
232
233
|
def parse_csv_metadata(interface_name: str, headers: list[str]) -> InterfaceInfo:
|
|
233
234
|
intf_info = InterfaceInfo(name=interface_name)
|
|
234
|
-
|
|
235
|
-
|
|
235
|
+
assert_(headers[0] == "Iteration", 'Header expected to be "Iteration"')
|
|
236
|
+
assert_(headers[1] == "Step", 'Header expected to be "Step"')
|
|
236
237
|
intf_info.is_transient = headers[2] == "Time"
|
|
237
238
|
|
|
238
239
|
start_index = 3 if intf_info.is_transient else 2
|
|
@@ -263,7 +264,7 @@ def parse_csv_metadata(interface_name: str, headers: list[str]) -> InterfaceInfo
|
|
|
263
264
|
|
|
264
265
|
intf_disp_name = intf_or_part_disp_name
|
|
265
266
|
if data_index == 0:
|
|
266
|
-
|
|
267
|
+
assert_(intf_info.display_name == "", "display_name should be empty")
|
|
267
268
|
intf_info.display_name = intf_disp_name
|
|
268
269
|
series_info = TransferSeriesInfo(
|
|
269
270
|
data_index,
|
|
@@ -34,8 +34,12 @@ from ansys.systemcoupling.core.charts.plotter import Plotter
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
def create_and_show_plot(spec: PlotSpec, csv_list: list[str]) -> Plotter:
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
if len(spec.interfaces) != 1:
|
|
38
|
+
raise ValueError("Plots currently only support one interface")
|
|
39
|
+
if len(spec.interfaces) != len(csv_list):
|
|
40
|
+
raise ValueError(
|
|
41
|
+
"'csv_list' should have length equal to the number of interfaces"
|
|
42
|
+
)
|
|
39
43
|
|
|
40
44
|
manager = PlotDefinitionManager(spec)
|
|
41
45
|
reader = CsvChartDataReader(spec.interfaces[0].name, csv_list[0])
|
|
@@ -61,8 +65,12 @@ def solve_with_live_plot(
|
|
|
61
65
|
csv_list: list[str],
|
|
62
66
|
solve_func: Callable[[], None],
|
|
63
67
|
):
|
|
64
|
-
|
|
65
|
-
|
|
68
|
+
if len(spec.interfaces) != 1:
|
|
69
|
+
raise ValueError("Plots currently only support one interface")
|
|
70
|
+
if len(spec.interfaces) != len(csv_list):
|
|
71
|
+
raise ValueError(
|
|
72
|
+
"'csv_list' should have length equal to the number of interfaces"
|
|
73
|
+
)
|
|
66
74
|
|
|
67
75
|
manager = PlotDefinitionManager(spec)
|
|
68
76
|
dispatcher = MessageDispatcher()
|
|
@@ -37,6 +37,7 @@ from ansys.systemcoupling.core.charts.chart_datatypes import (
|
|
|
37
37
|
from ansys.systemcoupling.core.charts.plotdefinition_manager import (
|
|
38
38
|
PlotDefinitionManager,
|
|
39
39
|
)
|
|
40
|
+
from ansys.systemcoupling.core.util.assertion import assert_
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
def _process_timestep_data(
|
|
@@ -282,13 +283,13 @@ class Plotter:
|
|
|
282
283
|
# this (assume the wait function is stored as an
|
|
283
284
|
# attribute):
|
|
284
285
|
#
|
|
285
|
-
#
|
|
286
|
+
# assert_(self._wait_for_metadata is not None)
|
|
286
287
|
# metadata = self._wait_for_metadata()
|
|
287
288
|
# if metadata is not None:
|
|
288
289
|
# self.set_metadata(metadata)
|
|
289
290
|
# else:
|
|
290
291
|
# return
|
|
291
|
-
|
|
292
|
+
assert_(self._request_update is not None)
|
|
292
293
|
|
|
293
294
|
self.ani = FuncAnimation(
|
|
294
295
|
self._fig,
|
|
@@ -101,6 +101,7 @@ class SycGrpc(object):
|
|
|
101
101
|
self.__output_thread = None
|
|
102
102
|
self.__pim_instance = None
|
|
103
103
|
self.__skip_exit = False
|
|
104
|
+
self.__container = None
|
|
104
105
|
|
|
105
106
|
@classmethod
|
|
106
107
|
def _cleanup(cls):
|
|
@@ -161,7 +162,9 @@ class SycGrpc(object):
|
|
|
161
162
|
"""Start the System Coupling container and establish a connection."""
|
|
162
163
|
LOG.debug("Starting container...")
|
|
163
164
|
port = port if port is not None else _find_port()
|
|
164
|
-
start_container(
|
|
165
|
+
self.__container = start_container(
|
|
166
|
+
mounted_from, mounted_to, network, port, version
|
|
167
|
+
)
|
|
165
168
|
LOG.debug("...started")
|
|
166
169
|
self._connect(_LOCALHOST_IP, port)
|
|
167
170
|
|
|
@@ -307,12 +310,18 @@ class SycGrpc(object):
|
|
|
307
310
|
try:
|
|
308
311
|
self.__ostream_service.end_streaming()
|
|
309
312
|
except Exception as e:
|
|
310
|
-
LOG.debug("Exception on OutputStreamService.end_straming(): "
|
|
313
|
+
LOG.debug(f"Exception on OutputStreamService.end_straming(): {e}")
|
|
311
314
|
self.__process_service.quit()
|
|
312
315
|
self.__channel = None
|
|
313
316
|
if self.__process:
|
|
314
317
|
self.__process.end()
|
|
315
318
|
self.__process = None
|
|
319
|
+
if self.__container:
|
|
320
|
+
try:
|
|
321
|
+
self.__container.stop()
|
|
322
|
+
except Exception as e:
|
|
323
|
+
LOG.debug(f"Exception from container.stop(): {e}")
|
|
324
|
+
self.__container = None
|
|
316
325
|
if self.__pim_instance is not None:
|
|
317
326
|
self.__pim_instance.delete()
|
|
318
327
|
self.__pim_instance = None
|