KratosOptimizationApplication 10.4.4__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.
Files changed (106) hide show
  1. KratosMultiphysics/.libs/KratosOptimizationApplication.so +0 -0
  2. KratosMultiphysics/.libs/libKratosOptimizationCore.dylib +0 -0
  3. KratosMultiphysics/OptimizationApplication/__init__.py +19 -0
  4. KratosMultiphysics/OptimizationApplication/algorithms/NLOPT_algorithms.py +255 -0
  5. KratosMultiphysics/OptimizationApplication/algorithms/SciPy_algorithms.py +154 -0
  6. KratosMultiphysics/OptimizationApplication/algorithms/__init__.py +0 -0
  7. KratosMultiphysics/OptimizationApplication/algorithms/algorithm.py +78 -0
  8. KratosMultiphysics/OptimizationApplication/algorithms/algorithm_adam.py +68 -0
  9. KratosMultiphysics/OptimizationApplication/algorithms/algorithm_base.py +393 -0
  10. KratosMultiphysics/OptimizationApplication/algorithms/algorithm_gradient_projection.py +355 -0
  11. KratosMultiphysics/OptimizationApplication/algorithms/algorithm_momentum_relaxed_gradient_projection.py +70 -0
  12. KratosMultiphysics/OptimizationApplication/algorithms/algorithm_nesterov_accelarated_gradient.py +60 -0
  13. KratosMultiphysics/OptimizationApplication/algorithms/algorithm_relaxed_gradient_projection.py +263 -0
  14. KratosMultiphysics/OptimizationApplication/algorithms/algorithm_steepest_descent.py +205 -0
  15. KratosMultiphysics/OptimizationApplication/algorithms/standardized_NLOPT_constraint.py +194 -0
  16. KratosMultiphysics/OptimizationApplication/algorithms/standardized_NLOPT_objective.py +191 -0
  17. KratosMultiphysics/OptimizationApplication/algorithms/standardized_SciPy_constraint.py +123 -0
  18. KratosMultiphysics/OptimizationApplication/algorithms/standardized_SciPy_objective.py +148 -0
  19. KratosMultiphysics/OptimizationApplication/algorithms/standardized_constraint.py +180 -0
  20. KratosMultiphysics/OptimizationApplication/algorithms/standardized_objective.py +133 -0
  21. KratosMultiphysics/OptimizationApplication/algorithms/standardized_rgp_constraint.py +268 -0
  22. KratosMultiphysics/OptimizationApplication/analyses_controller.py +75 -0
  23. KratosMultiphysics/OptimizationApplication/controls/control.py +123 -0
  24. KratosMultiphysics/OptimizationApplication/controls/external_response_function_control.py +149 -0
  25. KratosMultiphysics/OptimizationApplication/controls/master_control.py +198 -0
  26. KratosMultiphysics/OptimizationApplication/controls/material/material_properties_control.py +115 -0
  27. KratosMultiphysics/OptimizationApplication/controls/material/simp_control.py +229 -0
  28. KratosMultiphysics/OptimizationApplication/controls/shape/vertex_morphing_shape_control.py +289 -0
  29. KratosMultiphysics/OptimizationApplication/controls/thickness/shell_thickness_control.py +180 -0
  30. KratosMultiphysics/OptimizationApplication/controls_controller.py +205 -0
  31. KratosMultiphysics/OptimizationApplication/convergence_criteria/avg_abs_improvement_conv_criterion.py +98 -0
  32. KratosMultiphysics/OptimizationApplication/convergence_criteria/combined_conv_criterion.py +87 -0
  33. KratosMultiphysics/OptimizationApplication/convergence_criteria/constraint_conv_criterion.py +68 -0
  34. KratosMultiphysics/OptimizationApplication/convergence_criteria/convergence_criterion.py +26 -0
  35. KratosMultiphysics/OptimizationApplication/convergence_criteria/l2_conv_criterion.py +77 -0
  36. KratosMultiphysics/OptimizationApplication/convergence_criteria/magnitude_reduction_conv_criterion.py +85 -0
  37. KratosMultiphysics/OptimizationApplication/convergence_criteria/max_iter_conv_criterion.py +48 -0
  38. KratosMultiphysics/OptimizationApplication/convergence_criteria/patience_conv_criterion.py +116 -0
  39. KratosMultiphysics/OptimizationApplication/convergence_criteria/target_value_conv_criterion.py +64 -0
  40. KratosMultiphysics/OptimizationApplication/execution_policies/execution_policy.py +46 -0
  41. KratosMultiphysics/OptimizationApplication/execution_policies/execution_policy_decorator.py +67 -0
  42. KratosMultiphysics/OptimizationApplication/execution_policies/independent_analysis_execution_policy.py +78 -0
  43. KratosMultiphysics/OptimizationApplication/execution_policies/kratos_analysis_execution_policy.py +137 -0
  44. KratosMultiphysics/OptimizationApplication/execution_policies/stepping_analysis_execution_policy.py +88 -0
  45. KratosMultiphysics/OptimizationApplication/filtering/explicit_filter.py +124 -0
  46. KratosMultiphysics/OptimizationApplication/filtering/filter.py +188 -0
  47. KratosMultiphysics/OptimizationApplication/filtering/filter_utils.py +55 -0
  48. KratosMultiphysics/OptimizationApplication/filtering/helmholtz_analysis.py +139 -0
  49. KratosMultiphysics/OptimizationApplication/filtering/helmholtz_scalar_solver.py +39 -0
  50. KratosMultiphysics/OptimizationApplication/filtering/helmholtz_shape_solver.py +67 -0
  51. KratosMultiphysics/OptimizationApplication/filtering/helmholtz_solver_base.py +275 -0
  52. KratosMultiphysics/OptimizationApplication/filtering/helmholtz_vector_solver.py +39 -0
  53. KratosMultiphysics/OptimizationApplication/filtering/implicit_filter.py +192 -0
  54. KratosMultiphysics/OptimizationApplication/filtering/python_solvers_wrapper_implicit_filters.py +56 -0
  55. KratosMultiphysics/OptimizationApplication/model_part_controllers/connectivity_preserving_model_part_controller.py +72 -0
  56. KratosMultiphysics/OptimizationApplication/model_part_controllers/external_response_function_model_part_controller.py +110 -0
  57. KratosMultiphysics/OptimizationApplication/model_part_controllers/mdpa_model_part_controller.py +44 -0
  58. KratosMultiphysics/OptimizationApplication/model_part_controllers/model_part_controller.py +19 -0
  59. KratosMultiphysics/OptimizationApplication/model_parts_controller.py +92 -0
  60. KratosMultiphysics/OptimizationApplication/optimization_analysis.py +146 -0
  61. KratosMultiphysics/OptimizationApplication/optimizations_controller.py +223 -0
  62. KratosMultiphysics/OptimizationApplication/optimizer.py +61 -0
  63. KratosMultiphysics/OptimizationApplication/processes/optimization_problem_ascii_output_process.py +212 -0
  64. KratosMultiphysics/OptimizationApplication/processes/optimization_problem_field_output_process.py +122 -0
  65. KratosMultiphysics/OptimizationApplication/processes/optimization_problem_graph_output_process.py +184 -0
  66. KratosMultiphysics/OptimizationApplication/processes/optimization_problem_hdf5_output_process.py +84 -0
  67. KratosMultiphysics/OptimizationApplication/processes/optimization_problem_vtu_output_process.py +94 -0
  68. KratosMultiphysics/OptimizationApplication/processes/spatial_statistics_computation_process.py +81 -0
  69. KratosMultiphysics/OptimizationApplication/responses/__init__.py +0 -0
  70. KratosMultiphysics/OptimizationApplication/responses/additive_manufacturing_responses.py +410 -0
  71. KratosMultiphysics/OptimizationApplication/responses/analysis_based_response_function_factory.py +14 -0
  72. KratosMultiphysics/OptimizationApplication/responses/analysis_free_response_function_factory.py +14 -0
  73. KratosMultiphysics/OptimizationApplication/responses/base_response.py +66 -0
  74. KratosMultiphysics/OptimizationApplication/responses/binary_operator_response_function.py +103 -0
  75. KratosMultiphysics/OptimizationApplication/responses/combined_response_function.py +127 -0
  76. KratosMultiphysics/OptimizationApplication/responses/discrete_value_residual_response_function.py +131 -0
  77. KratosMultiphysics/OptimizationApplication/responses/evaluation_response_function.py +68 -0
  78. KratosMultiphysics/OptimizationApplication/responses/external_response_function.py +87 -0
  79. KratosMultiphysics/OptimizationApplication/responses/geometric_centroid_deviation_response_function.py +97 -0
  80. KratosMultiphysics/OptimizationApplication/responses/linear_strain_energy_response_function.py +72 -0
  81. KratosMultiphysics/OptimizationApplication/responses/literal_value_response_function.py +33 -0
  82. KratosMultiphysics/OptimizationApplication/responses/log_response_function.py +47 -0
  83. KratosMultiphysics/OptimizationApplication/responses/mass_response_function.py +71 -0
  84. KratosMultiphysics/OptimizationApplication/responses/response_function.py +126 -0
  85. KratosMultiphysics/OptimizationApplication/responses/response_routine.py +158 -0
  86. KratosMultiphysics/OptimizationApplication/responses/structural_responses.py +335 -0
  87. KratosMultiphysics/OptimizationApplication/responses_controller.py +390 -0
  88. KratosMultiphysics/OptimizationApplication/utilities/buffered_dict.py +399 -0
  89. KratosMultiphysics/OptimizationApplication/utilities/component_data_view.py +74 -0
  90. KratosMultiphysics/OptimizationApplication/utilities/helper_utilities.py +40 -0
  91. KratosMultiphysics/OptimizationApplication/utilities/logger_utilities.py +222 -0
  92. KratosMultiphysics/OptimizationApplication/utilities/model_part_utilities.py +117 -0
  93. KratosMultiphysics/OptimizationApplication/utilities/opt_line_search.py +173 -0
  94. KratosMultiphysics/OptimizationApplication/utilities/opt_projection.py +191 -0
  95. KratosMultiphysics/OptimizationApplication/utilities/optimization_problem.py +237 -0
  96. KratosMultiphysics/OptimizationApplication/utilities/optimization_problem_utilities.py +237 -0
  97. KratosMultiphysics/OptimizationApplication/utilities/response_utilities.py +249 -0
  98. KratosMultiphysics/OptimizationApplication/utilities/timer.py +45 -0
  99. KratosMultiphysics/OptimizationApplication/utilities/union_utilities.py +6 -0
  100. kratosoptimizationapplication-10.4.4.dist-info/METADATA +25 -0
  101. kratosoptimizationapplication-10.4.4.dist-info/RECORD +106 -0
  102. kratosoptimizationapplication-10.4.4.dist-info/WHEEL +6 -0
  103. kratosoptimizationapplication.dylibs/libKratosCore.dylib +4 -0
  104. kratosoptimizationapplication.dylibs/libgcc_s.1.1.dylib +0 -0
  105. kratosoptimizationapplication.dylibs/libgomp.1.dylib +0 -0
  106. kratosoptimizationapplication.dylibs/libstdc++.6.dylib +0 -0
@@ -0,0 +1,249 @@
1
+ import re
2
+ from enum import Enum
3
+
4
+ import KratosMultiphysics as Kratos
5
+ import KratosMultiphysics.OptimizationApplication as KratosOA
6
+ from KratosMultiphysics.OptimizationApplication.responses.response_function import ResponseFunction
7
+ from KratosMultiphysics.OptimizationApplication.responses.evaluation_response_function import EvaluationResponseFunction
8
+ from KratosMultiphysics.OptimizationApplication.responses.response_function import SupportedSensitivityFieldVariableTypes
9
+ from KratosMultiphysics.OptimizationApplication.utilities.optimization_problem import OptimizationProblem
10
+ from KratosMultiphysics.OptimizationApplication.utilities.component_data_view import ComponentDataView
11
+
12
+ class BinaryOperator(str, Enum):
13
+ POWER = "^"
14
+ DIVIDE = "/"
15
+ MULTIPLY = "*"
16
+ ADD = "+"
17
+ SUBTRACT = "-"
18
+
19
+ BinaryOperatorValues = [operator.value for operator in BinaryOperator]
20
+
21
+ BinaryOperatorValuesMap = dict([(operator.value, operator) for operator in BinaryOperator])
22
+
23
+ def GetClosingBracketIndex(expression: str) -> int:
24
+ # this function assumes the starting point is without the opening bracket.
25
+ # it will give the position of the respective closing bracket
26
+ index = 0
27
+ brackets_counter = 1
28
+ while index < len(expression):
29
+ brackets_counter += (expression[index] == "(") + (expression[index] == ")") * -1
30
+ if brackets_counter == 0:
31
+ return index
32
+ index += 1
33
+
34
+ raise RuntimeError(f"The closing bracket not found for expression ({expression}")
35
+
36
+ def GetFunction(function_name: str, optimization_problem: OptimizationProblem, *args) -> ResponseFunction:
37
+ # import functions
38
+ from KratosMultiphysics.OptimizationApplication.responses.log_response_function import LogResponseFunction
39
+
40
+ functions_map: 'dict[str, type[ResponseFunction]]' = {
41
+ "log": LogResponseFunction
42
+ }
43
+ if function_name in functions_map.keys():
44
+ return functions_map[function_name](*args, optimization_problem)
45
+ else:
46
+ raise RuntimeError(f"Undefined \"{function_name}\" function. Followings are supported function names:\n\t" + "\n\t".join(functions_map.keys()))
47
+
48
+ def EvaluateValue(response_function: ResponseFunction, optimization_problem: OptimizationProblem) -> float:
49
+ response_data = ComponentDataView("evaluated_responses", optimization_problem).GetBufferedData()
50
+
51
+ if response_function.GetImplementedPhysicalKratosVariables():
52
+ if not response_data.HasValue(f"values/{response_function.GetName()}"):
53
+ response_data.SetValue(f"values/{response_function.GetName()}", response_function.CalculateValue())
54
+
55
+ return response_data.GetValue(f"values/{response_function.GetName()}")
56
+ else:
57
+ return response_function.CalculateValue()
58
+
59
+ def EvaluateGradient(response_function: ResponseFunction, physical_variable_gradient_map: 'dict[SupportedSensitivityFieldVariableTypes, Kratos.TensorAdaptors.DoubleCombinedTensorAdaptor]', optimization_problem: OptimizationProblem):
60
+ # first get the tensor adaptors for implemented physical kratos variables
61
+ resp_physical_variable_combined_tensor_adaptors: 'dict[SupportedSensitivityFieldVariableTypes, Kratos.TensorAdaptors.DoubleCombinedTensorAdaptor]' = {}
62
+ for variable, cta in physical_variable_gradient_map.items():
63
+ temp_cta = Kratos.TensorAdaptors.DoubleCombinedTensorAdaptor(cta, perform_store_data_recursively=False, copy=False)
64
+ if variable in response_function.GetImplementedPhysicalKratosVariables():
65
+ # if the response function depends on the variable, then add it to the dictionary for future evaluation.
66
+ resp_physical_variable_combined_tensor_adaptors[variable] = temp_cta
67
+ else:
68
+ # if the response function does not depend on the variable, then assign zeros.
69
+ temp_cta.data[:] = 0.0
70
+ temp_cta.StoreData() # store the combined ta values to its sub tensor adaptors
71
+
72
+ resp_physical_variable_combined_tensor_adaptors_to_evaluate: 'dict[SupportedSensitivityFieldVariableTypes, Kratos.TensorAdaptors.DoubleCombinedTensorAdaptor]' = {}
73
+ response_data = ComponentDataView("evaluated_responses", optimization_problem).GetUnBufferedData()
74
+
75
+ for variable, cta in resp_physical_variable_combined_tensor_adaptors.items():
76
+ # first check whether the gradients have been already evaluated. if so, take the gradients.
77
+ if response_data.HasValue(f"gradients/d{response_function.GetName()}_d{variable.Name()}"):
78
+ # found already evaluated gradient. Use it.
79
+ cta.SetData(response_data.GetValue(f"gradients/d{response_function.GetName()}_d{variable.Name()}").data)
80
+ cta.StoreData() # store the combined ta values to its sub tensor adaptors
81
+ else:
82
+ # gradients have not yet evaluated. put it to the dictionary for later evaluation
83
+ resp_physical_variable_combined_tensor_adaptors_to_evaluate[variable] = cta
84
+
85
+ if len(resp_physical_variable_combined_tensor_adaptors_to_evaluate) != 0:
86
+ response_function.CalculateGradient(resp_physical_variable_combined_tensor_adaptors_to_evaluate)
87
+ for variable, cta in resp_physical_variable_combined_tensor_adaptors_to_evaluate.items():
88
+ response_data.SetValue(f"gradients/d{response_function.GetName()}_d{variable.Name()}", Kratos.TensorAdaptors.DoubleCombinedTensorAdaptor(cta))
89
+
90
+ def GetResponseFunction(current_value: str, optimization_problem: OptimizationProblem) -> ResponseFunction:
91
+ from KratosMultiphysics.OptimizationApplication.responses.literal_value_response_function import LiteralValueResponseFunction
92
+ if current_value == "":
93
+ return LiteralValueResponseFunction(0.0)
94
+ else:
95
+ try:
96
+ # first try to get a literal response function
97
+ return LiteralValueResponseFunction(float(current_value))
98
+ except:
99
+ # literal response function fails. Then the current value may hold one of the followings
100
+ # 1. A leaf response function name
101
+ # 2. A response expression
102
+ # 3. A function call
103
+
104
+ if re.match(r"(^\w+)$", current_value) is not None:
105
+ # the match is a leaf response function name
106
+ return optimization_problem.GetResponse(current_value)
107
+ elif re.match(r"(^\w+\()", current_value) is not None:
108
+ # the match is a function call
109
+ args_starting_index = current_value.index("(")
110
+ function_name = current_value[:args_starting_index]
111
+
112
+ # now need to find the args correctly
113
+ args_list: 'list[str]' = []
114
+ index = args_starting_index + 1
115
+ current_arg = ""
116
+ while index < len(current_value) - 1:
117
+ current_char = current_value[index]
118
+
119
+ if current_char == "(":
120
+ closing_bracket_pos = GetClosingBracketIndex(current_value[index+1:])
121
+ current_arg += current_value[index:index+closing_bracket_pos+2]
122
+ index += closing_bracket_pos + 2
123
+ continue
124
+
125
+ if current_char == ",":
126
+ args_list.append(current_arg)
127
+ current_arg = ""
128
+ else:
129
+ current_arg += current_char
130
+
131
+ index += 1
132
+
133
+ args_list.append(current_arg)
134
+ return GetFunction(function_name, optimization_problem, *[__EvaluateResponseExpressionImpl(arg, optimization_problem) for arg in args_list])
135
+ else:
136
+ # this is a response expression.
137
+ return __EvaluateResponseExpressionImpl(current_value, optimization_problem)
138
+
139
+ def GetValuesAndOperators(response_expression: str, optimization_problem: OptimizationProblem) -> 'tuple[list[ResponseFunction], list[str]]':
140
+ responses: 'list[ResponseFunction]' = []
141
+ operators: 'list[str]' = []
142
+
143
+ index = 0
144
+ current_word = ""
145
+ while index < len(response_expression):
146
+ current_char = response_expression[index]
147
+
148
+ if current_char == "(":
149
+ # found opening bracket
150
+ closing_bracket_position = GetClosingBracketIndex(response_expression[index + 1:])
151
+ if current_word != "":
152
+ current_word = f"{current_word}{response_expression[index:index+closing_bracket_position+2]}"
153
+ else:
154
+ current_word = response_expression[index + 1:index+closing_bracket_position + 1]
155
+ index += closing_bracket_position + 2
156
+ continue
157
+
158
+ # check for binary operator or scientific notation value
159
+ if current_char in BinaryOperatorValues and not (re.match(r"(^[0-9.]+[e|E])$", current_word) and current_char in ["+", "-"]):
160
+ responses.append(GetResponseFunction(current_word, optimization_problem))
161
+ operators.append(current_char)
162
+ current_word = ""
163
+ index += 1
164
+ continue
165
+
166
+ current_word += current_char
167
+ index += 1
168
+
169
+ # add the last current_word
170
+ responses.append(GetResponseFunction(current_word, optimization_problem))
171
+
172
+ return responses, operators
173
+
174
+ def __EvaluateResponseExpressionImpl(response_expression: str, optimization_problem: OptimizationProblem) -> ResponseFunction:
175
+ from KratosMultiphysics.OptimizationApplication.responses.binary_operator_response_function import BinaryOperatorResponseFunction
176
+
177
+ response_expression = response_expression.replace(" ", "")
178
+ responses, operators = GetValuesAndOperators(response_expression, optimization_problem)
179
+
180
+ def __evaluate_operator(list_of_operators: 'list[str]') -> None:
181
+ operator_index = 0
182
+ while operator_index < len(operators):
183
+ if operators[operator_index] in list_of_operators:
184
+ left_operand = responses[operator_index]
185
+ right_operand = responses[operator_index + 1]
186
+
187
+ if not optimization_problem.HasResponse(left_operand) and left_operand.GetImplementedPhysicalKratosVariables() != []:
188
+ # the left operand is not in the optimization, and it will not be accessible since it will
189
+ # be within the BinaryOperatorResponseFunction. Hence adding it to optimization problem
190
+ # so that we can put the intermediate values and gradients to the optimization problem.
191
+ optimization_problem.AddComponent(left_operand)
192
+
193
+ if not optimization_problem.HasResponse(right_operand) and right_operand.GetImplementedPhysicalKratosVariables() != []:
194
+ # the right operand is not in the optimization, and it will not be accessible since it will
195
+ # be within the BinaryOperatorResponseFunction. Hence adding it to optimization problem
196
+ # so that we can put the intermediate values and gradients to the optimization problem.
197
+ optimization_problem.AddComponent(right_operand)
198
+
199
+ # now check whether the left operand is there in the optimization problem
200
+ if optimization_problem.HasResponse(left_operand):
201
+ left_operand_component_data_view = ComponentDataView(left_operand, optimization_problem)
202
+ # if it is in the optimization problem, and no data buffer has been defined, then define one.
203
+ if not left_operand_component_data_view.HasDataBuffer():
204
+ left_operand_component_data_view.SetDataBuffer(1)
205
+
206
+ # now check whether the right operand is there in the optimization problem
207
+ if optimization_problem.HasResponse(right_operand):
208
+ right_operand_component_data_view = ComponentDataView(right_operand, optimization_problem)
209
+ # if it is in the optimization problem, and no data buffer has been defined, then define one.
210
+ if not right_operand_component_data_view.HasDataBuffer():
211
+ right_operand_component_data_view.SetDataBuffer(1)
212
+
213
+ resultant_operator = BinaryOperatorResponseFunction(left_operand, right_operand, BinaryOperatorValuesMap[operators[operator_index]], optimization_problem)
214
+ if not optimization_problem.HasResponse(resultant_operator.GetName()):
215
+ # There is no already existing response with the same operation. Then use the new one.
216
+ responses[operator_index] = resultant_operator
217
+ else:
218
+ # There is an already existing response with the same operation. Then take it.
219
+ responses[operator_index] = optimization_problem.GetResponse(resultant_operator.GetName())
220
+
221
+ del responses[operator_index + 1]
222
+ del operators[operator_index]
223
+ else:
224
+ operator_index += 1
225
+
226
+ # according to BODMAS
227
+ __evaluate_operator(["^"])
228
+ __evaluate_operator(["*", "/"])
229
+ __evaluate_operator(["+", "-"])
230
+
231
+ return responses[0]
232
+
233
+ def EvaluateResponseExpression(response_expression: str, optimization_problem: OptimizationProblem) -> ResponseFunction:
234
+ evaluated_response_impl = __EvaluateResponseExpressionImpl(response_expression, optimization_problem)
235
+ if evaluated_response_impl.GetChildResponses() and evaluated_response_impl.GetImplementedPhysicalKratosVariables():
236
+ # if the response has children and has some dependence on the variables, then
237
+ # we need to use the EvaluationResponseFunction to clear the evaluation data
238
+ # whenever CalculateValue, CalculateGradient is used.
239
+ evaluated_response = EvaluationResponseFunction(evaluated_response_impl, optimization_problem)
240
+ optimization_problem.AddComponent(evaluated_response)
241
+ return evaluated_response
242
+ else:
243
+ # this means the following cases
244
+ # 1. No children, but has dependence variables -> Leaf responses such as mass.
245
+ # 2. No children, no dependence variables -> Leaf responses such as LiteralValueResponse.
246
+ # 3. Has children, no dependence variables -> An expression with only LiteralValueResponses and functions, without any responses such as mass.
247
+ # in the above cases, there is no need to clear the response evaluation data, hence the original evaluated
248
+ # response is returned without the EvaluationResponseFunction wrapper.
249
+ return evaluated_response_impl
@@ -0,0 +1,45 @@
1
+ # ==============================================================================
2
+ # KratosOptimizationApplication
3
+ #
4
+ # License: BSD License
5
+ # license: OptimizationApplication/license.txt
6
+ #
7
+ # Main authors: Reza Najian Asl, https://github.com/RezaNajian
8
+ #
9
+ # ==============================================================================
10
+
11
+ # Import additional libraries
12
+ import time
13
+
14
+ # ==============================================================================
15
+ class Timer:
16
+ # --------------------------------------------------------------------------
17
+ def __init__( self ):
18
+ self.Precision = 3
19
+ self.StartGlobalTime = None
20
+ self.StartLapTime = None
21
+ self.LapTime = None
22
+ # --------------------------------------------------------------------------
23
+ def StartTimer( self ):
24
+ self.StartGlobalTime = time.time()
25
+ self.StartLapTime = time.time()
26
+
27
+ # --------------------------------------------------------------------------
28
+ def GetLapTime( self ):
29
+ LapTime = time.time() - self.StartLapTime
30
+ return round( LapTime, self.Precision )
31
+
32
+ # --------------------------------------------------------------------------
33
+ def StartNewLap( self ):
34
+ self.StartLapTime = time.time()
35
+
36
+ #---------------------------------------------------------------------------
37
+ def GetTotalTime( self ):
38
+ totalTime = time.time() - self.StartGlobalTime
39
+ return round( totalTime, self.Precision )
40
+
41
+ # --------------------------------------------------------------------------
42
+ def GetTimeStamp( self ):
43
+ return time.ctime()
44
+
45
+ # ==============================================================================
@@ -0,0 +1,6 @@
1
+ from typing import Union
2
+
3
+ import KratosMultiphysics as Kratos
4
+
5
+ # used union types for type hinting in python and for automated documentation generation
6
+ SupportedSensitivityFieldVariableTypes = Union[Kratos.DoubleVariable, Kratos.Array1DVariable3]
@@ -0,0 +1,25 @@
1
+ Metadata-Version: 2.5
2
+ Name: KratosOptimizationApplication
3
+ Version: 10.4.4
4
+ Summary: KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
5
+ Author-email: Kratos Team <kratos@listas.cimne.upc.edu>
6
+ License: BSD-4-Clause
7
+ Classifier: Programming Language :: C++
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Topic :: Scientific/Engineering
10
+ Requires-Python: >=3.8
11
+ Requires-Dist: kratosmultiphysics==10.4.4
12
+ Description-Content-Type: text/markdown
13
+
14
+ # OptimizationApplication
15
+
16
+ The Kratos OptimizationApplication is a framework for solving optimization problems in continuum mechanics. It is supposed to handle both gradient-based (adjoint-based) and gradient-free methods.
17
+
18
+ ## Main Features
19
+
20
+ * State-of-the-art techniques and algorithms for shape, thickness and material/topology optimization.
21
+ * Efficient and consistent filtering techniques for parametrization-free shape, thickness and material/topology optimization.
22
+ * Abstract problem formulation which enables concurrent and nested multilevel-multi-scale optimization problems.
23
+ * Adaptive gradient-projection technique, developed specially for problems with an arbitrary large number of design variables of different scales.
24
+ * Modular implementation which enables analysis and optimization of multi-physics problems.
25
+ * Realization and implementation of additive manufacturing constraints, e.g. hangover conditions (support structures), stackability and geometric limitations.
@@ -0,0 +1,106 @@
1
+ KratosMultiphysics/OptimizationApplication/optimizations_controller.py,sha256=GJhXuxbar-apmyc2AS27dvtFJHNAgnoeBWubFNtxyJU,12599
2
+ KratosMultiphysics/OptimizationApplication/model_parts_controller.py,sha256=X8g283E8EE9By6E7P5v283c_bEbs5Qba3lvt7Ldq_a0,5262
3
+ KratosMultiphysics/OptimizationApplication/__init__.py,sha256=gAh661XHyKlmRncykK7oAiXnqQiqz3FH1fwzkmUT5OQ,779
4
+ KratosMultiphysics/OptimizationApplication/responses_controller.py,sha256=XQwzBukmAFHBrUVrbqzimeQpLayKRJNa0CiNYx0dHik,22982
5
+ KratosMultiphysics/OptimizationApplication/optimizer.py,sha256=E5ZytMXClU6hYtz6BvlUepf2tNxv25YDXBhkpO8IsKw,3047
6
+ KratosMultiphysics/OptimizationApplication/analyses_controller.py,sha256=cEjXryoRcAQwl1yV84yLsyg4j73oTEwKtD4kcivNDAI,4130
7
+ KratosMultiphysics/OptimizationApplication/controls_controller.py,sha256=6tAwdVHgWBztpvc0UsHieNUHp-OEZ0m8zGusN4SKUrA,12333
8
+ KratosMultiphysics/OptimizationApplication/optimization_analysis.py,sha256=g61VHDXaFiGoMqUZjYD7aXxmhWZIhrZwCmpTnbM-k20,7779
9
+ KratosMultiphysics/OptimizationApplication/execution_policies/stepping_analysis_execution_policy.py,sha256=48tCRwBVEgWPpXr8V1hrSGDHqfD_0gtGuWSguDrl6mw,4103
10
+ KratosMultiphysics/OptimizationApplication/execution_policies/kratos_analysis_execution_policy.py,sha256=4ZiB2f5gFT2FZKKB9QtKjSE_ZjCq-oD_ktcdGBfbQHE,8704
11
+ KratosMultiphysics/OptimizationApplication/execution_policies/independent_analysis_execution_policy.py,sha256=kUdIy4p_QA3nMdlyvcac9nN8pla-oGIy20tgg1MMHpk,4112
12
+ KratosMultiphysics/OptimizationApplication/execution_policies/execution_policy.py,sha256=Yx0cizsjrhyzPO4epxmYK9pk-RoY5FmhEF427zsDwAM,1199
13
+ KratosMultiphysics/OptimizationApplication/execution_policies/execution_policy_decorator.py,sha256=e4ySkOiyqmWt6V4vJqetjJ4vsQJmQon3FwwOa2JGnzw,3279
14
+ KratosMultiphysics/OptimizationApplication/filtering/implicit_filter.py,sha256=Zs4Amcghb17A7s7iABHZmFGm5XqZPj7lt9zCVge2hzA,10897
15
+ KratosMultiphysics/OptimizationApplication/filtering/filter_utils.py,sha256=oCtZd7JWqNV_1uIdkwWl7wNCbNR_qei5tEQ9hDia-FY,3841
16
+ KratosMultiphysics/OptimizationApplication/filtering/helmholtz_solver_base.py,sha256=tSjb4w1gUufSCCVAkerYBdpkYWyZaL5cWP2R9oNsK6s,12404
17
+ KratosMultiphysics/OptimizationApplication/filtering/python_solvers_wrapper_implicit_filters.py,sha256=EikpXp3mMQY9QpGSSKRbTx2xxNyB_m4tYOoBRD_t3Dc,2809
18
+ KratosMultiphysics/OptimizationApplication/filtering/helmholtz_analysis.py,sha256=b2ZJ3g52pkW9E2JDA_JkbjAXTK4rkULL9ZbqWqsYcdo,7624
19
+ KratosMultiphysics/OptimizationApplication/filtering/helmholtz_shape_solver.py,sha256=7mSwooWqFdSTLnYV4wNoMdUqlKbC0Lv4-tIBj-IFZm8,3995
20
+ KratosMultiphysics/OptimizationApplication/filtering/helmholtz_scalar_solver.py,sha256=YvZlonJsSl-TRawWsXvrBUE6lyzp9BEsV9D3vYJ45NM,2326
21
+ KratosMultiphysics/OptimizationApplication/filtering/filter.py,sha256=7huM4Qc04Mf2LeoU5HoXKX95KwftFpGa3Eg_9W1fYfY,7908
22
+ KratosMultiphysics/OptimizationApplication/filtering/explicit_filter.py,sha256=XIUU8e6uETH_utno6qucY5k547x0Z-T80ISnW9pu-WI,7156
23
+ KratosMultiphysics/OptimizationApplication/filtering/helmholtz_vector_solver.py,sha256=3DXT4sHcGgtDPLATQRJre21IEWGW10_j3YZzofUWyuo,2346
24
+ KratosMultiphysics/OptimizationApplication/processes/optimization_problem_hdf5_output_process.py,sha256=J2nbKevM6eL_gxvpr7bKKJvOBqvBF-iYoDempcbc8rc,5150
25
+ KratosMultiphysics/OptimizationApplication/processes/optimization_problem_vtu_output_process.py,sha256=ckiwLyduSpHNAFzLefHZVIBYl33eOoooq0aM4PhOf2w,5540
26
+ KratosMultiphysics/OptimizationApplication/processes/optimization_problem_field_output_process.py,sha256=I0iG25ZBj3n6_ClTFNDbdE3TmT2lmxO1s8DndppzEgA,6499
27
+ KratosMultiphysics/OptimizationApplication/processes/spatial_statistics_computation_process.py,sha256=EjcyUHlVxVLwJWz6ZtPo2KL-TFL6FKJg9JgQE0A32jY,4625
28
+ KratosMultiphysics/OptimizationApplication/processes/optimization_problem_graph_output_process.py,sha256=wWGaHHGpxogOjKybBOtYiSEsOYpz-zMjg3ZfR5JI3tw,8628
29
+ KratosMultiphysics/OptimizationApplication/processes/optimization_problem_ascii_output_process.py,sha256=SeiPTERz2GekC4XbdNSYq40Err4Tma8jsukHTtzbP8c,10788
30
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm_relaxed_gradient_projection.py,sha256=98BwATZT4N9JfHYlDn_aG9f3k5j4tpQSwT8Gw3GlGfM,14754
31
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm_base.py,sha256=iNsOlNWc-W2OMQSnAh1PpdOXNvUymOTEHzdSRMQ-jH0,23776
32
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm.py,sha256=a4yy8qaa2obtEkM9u4xQwFr27yQUXWcn9sLstg4-J8c,3185
33
+ KratosMultiphysics/OptimizationApplication/algorithms/standardized_objective.py,sha256=nh0u8KmjskJYhKe40ml1iLGCXUeVAHX4O_YaRrUNMHk,7166
34
+ KratosMultiphysics/OptimizationApplication/algorithms/standardized_rgp_constraint.py,sha256=HT6ozzBaS9LtYaYBiZxdAkD7x3iasoZ_VUBKmHJvrnE,12271
35
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm_adam.py,sha256=2jobZGfFO-yng4JLqID2ji0IBEB4anLbGNP45rUffUs,3810
36
+ KratosMultiphysics/OptimizationApplication/algorithms/standardized_NLOPT_objective.py,sha256=xHBwUEuliW9XY56Ziefoeerzr4b7zIT3KtYXjd8hv8M,10254
37
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm_gradient_projection.py,sha256=q0iWyLOFqu2lgXZkZIuEc_pJ_RDqXg-NvUbR_sSznxY,19092
38
+ KratosMultiphysics/OptimizationApplication/algorithms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm_nesterov_accelarated_gradient.py,sha256=-QWaw5c9oJG1D7cZjBHT39cUlggsVo6SFdCueo5cy-U,3498
40
+ KratosMultiphysics/OptimizationApplication/algorithms/standardized_SciPy_constraint.py,sha256=WpyQnonrKe3gCD8Fp9MSzcdfvDYLG9IfkABam-VZnSY,6410
41
+ KratosMultiphysics/OptimizationApplication/algorithms/standardized_SciPy_objective.py,sha256=5hHPASA6suAspqEhxQGISK1CWXusYOMCsPWRxNoZP2E,7614
42
+ KratosMultiphysics/OptimizationApplication/algorithms/SciPy_algorithms.py,sha256=zggMCiPuIZMbhNZRFaHXkpsv2pzNhyF3Aat-fFXbKiA,7958
43
+ KratosMultiphysics/OptimizationApplication/algorithms/NLOPT_algorithms.py,sha256=AZsEhx_88_-0l1_8XRd3rLidNsfxxaL4XmoGKdne2BM,13735
44
+ KratosMultiphysics/OptimizationApplication/algorithms/standardized_NLOPT_constraint.py,sha256=feKdS_nPEfbBeV35w3H21jii_ds89NURcBXGeu3SUUc,9943
45
+ KratosMultiphysics/OptimizationApplication/algorithms/standardized_constraint.py,sha256=_gF0TRIn-cEeBNmcckEYZktUyY3QRGZjjqm2t3RA-2w,9923
46
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm_steepest_descent.py,sha256=-36WI06vtXyAnpLIdtRRHD119AbNRosLRaQM0aMNFbA,9986
47
+ KratosMultiphysics/OptimizationApplication/algorithms/algorithm_momentum_relaxed_gradient_projection.py,sha256=2tXR5k7caJ2JH15jFcX81wl31Brp6ry88hpRE5M-ayE,3708
48
+ KratosMultiphysics/OptimizationApplication/responses/discrete_value_residual_response_function.py,sha256=aFeBTP4l1YM8rkMDDhqJK_bX8e-j__BhhKm8_7iMFUY,7386
49
+ KratosMultiphysics/OptimizationApplication/responses/additive_manufacturing_responses.py,sha256=h8qED3ZW2wnjqEqembbM3-Y1TbCOyy9hVqr9xl-DWL8,21998
50
+ KratosMultiphysics/OptimizationApplication/responses/log_response_function.py,sha256=Zq3iHObOrFW3ru6l3ksgacv4OfjMI8dJhbIhgAW1oHM,2560
51
+ KratosMultiphysics/OptimizationApplication/responses/combined_response_function.py,sha256=JAG0YghYtPKeF5-WFefs4g8nEj5wc-ISp_lYSV__guA,7419
52
+ KratosMultiphysics/OptimizationApplication/responses/external_response_function.py,sha256=33FbW-aDLL0y-cpFKqLMnGyK_bwi0t9ozyWE3FBWjZk,5025
53
+ KratosMultiphysics/OptimizationApplication/responses/base_response.py,sha256=j6teLfHvSdEO2p467B_WOvM55etTJDZ-wimVZ4Rd3j0,3286
54
+ KratosMultiphysics/OptimizationApplication/responses/analysis_free_response_function_factory.py,sha256=qIgpe-ydBinfepefE-xS2np4uXcZy6BnClXY90xN8OM,807
55
+ KratosMultiphysics/OptimizationApplication/responses/response_routine.py,sha256=NgbX7a2392j03s0QBRZfDuOtAhUSYzg1pFeAiKHTLbs,7796
56
+ KratosMultiphysics/OptimizationApplication/responses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ KratosMultiphysics/OptimizationApplication/responses/structural_responses.py,sha256=psUWT97axOgjcgI8rfF2fvp2neFKXLvlYHgbYmTaa6w,18372
58
+ KratosMultiphysics/OptimizationApplication/responses/response_function.py,sha256=sr9y4l8P1ukyTDHFkPMbuAEOB1i_39MVQNnM4Kx1ivA,5527
59
+ KratosMultiphysics/OptimizationApplication/responses/linear_strain_energy_response_function.py,sha256=v376yiLdyPSiZXFBgo1Fj0raC2su57xP0iGTGNH6o-o,4102
60
+ KratosMultiphysics/OptimizationApplication/responses/evaluation_response_function.py,sha256=_NzxVGoPKdMqic_zuNveAuuZdFZnvkFSGRWkxkHD7CQ,3592
61
+ KratosMultiphysics/OptimizationApplication/responses/literal_value_response_function.py,sha256=5iI2JNDcoc5erzGP28E-3-loO687xmQv3ALHUNrTj5s,1288
62
+ KratosMultiphysics/OptimizationApplication/responses/geometric_centroid_deviation_response_function.py,sha256=FVc2jRziSw9ndN3NXJ16oXrP6_ob0gvZ3v6Vt_H5Z04,5413
63
+ KratosMultiphysics/OptimizationApplication/responses/analysis_based_response_function_factory.py,sha256=QeRc-L6hQUhe7J8WO50yc2P9q_iVYvQMOrlpHPzGljs,725
64
+ KratosMultiphysics/OptimizationApplication/responses/binary_operator_response_function.py,sha256=xlLirigV9lQfm3ZczHugbfo1n2dDdqaItFN9QhqIMjI,6388
65
+ KratosMultiphysics/OptimizationApplication/responses/mass_response_function.py,sha256=5PXK0d5YF2CKO1PkYCkyz1XN23WRMEqgCcOwUavJwao,3590
66
+ KratosMultiphysics/OptimizationApplication/model_part_controllers/external_response_function_model_part_controller.py,sha256=dpSheyrVTWXZ71Qx3Mq1b8xS3BnpdkACH4_q_7dOMJg,5586
67
+ KratosMultiphysics/OptimizationApplication/model_part_controllers/connectivity_preserving_model_part_controller.py,sha256=eOmDzCW55_bem4pzLd7py5vTSXPvXsRAFpAmkssMnCo,5018
68
+ KratosMultiphysics/OptimizationApplication/model_part_controllers/model_part_controller.py,sha256=9wtXqPKKtP5yrx1cv1lqBmn3j3S18hd0qMDz7YID4bU,355
69
+ KratosMultiphysics/OptimizationApplication/model_part_controllers/mdpa_model_part_controller.py,sha256=b6P_yJRci7P-TJrMM7HYgzCxK4GWGsbcZ-Mha-8MIgY,2190
70
+ KratosMultiphysics/OptimizationApplication/controls/external_response_function_control.py,sha256=M_DD7aUGgZk5Ol0mF6p_Yc7mtaZwOKfH5Ok_6wM1rNI,8568
71
+ KratosMultiphysics/OptimizationApplication/controls/control.py,sha256=tE4-hEMM4-lkP0_YVok4UKVaTykVBuu3OEvbt79Befc,5246
72
+ KratosMultiphysics/OptimizationApplication/controls/master_control.py,sha256=_WiJHxCXwudysXVtJTMMW-WE5vH7PxeY-rUFKuw70lY,11495
73
+ KratosMultiphysics/OptimizationApplication/controls/shape/vertex_morphing_shape_control.py,sha256=2fbasRliGsy1YUz3fdmll7jnAaTJ3L7Mg8KoaZ3fv08,18223
74
+ KratosMultiphysics/OptimizationApplication/controls/thickness/shell_thickness_control.py,sha256=0HZP9MgR753HuilVpkq4V9ejs-dMRymyz4OHE5BHJUY,11056
75
+ KratosMultiphysics/OptimizationApplication/controls/material/material_properties_control.py,sha256=vnYvZwz1XCpR0Br_ACx0M-8slBAhIFIPH-CgAHzTDhg,6848
76
+ KratosMultiphysics/OptimizationApplication/controls/material/simp_control.py,sha256=nILM4_rxz-6pZQ5Q8O6JyHOO7Mg3TLWk-vXqf_rg09w,13016
77
+ KratosMultiphysics/OptimizationApplication/utilities/response_utilities.py,sha256=_WXe-c6-a_tFmcJKdgQSuTBTNRw7ovD5XV-B_QQymgs,14433
78
+ KratosMultiphysics/OptimizationApplication/utilities/optimization_problem_utilities.py,sha256=KuaVJrgt6sYUIEpvFqeobHlfiHoWs_MBUULHdntPsNc,14927
79
+ KratosMultiphysics/OptimizationApplication/utilities/union_utilities.py,sha256=Tp--h4P9qgErPuLtKEFcEWxRtTV_00evsNs3islFJYc,246
80
+ KratosMultiphysics/OptimizationApplication/utilities/optimization_problem.py,sha256=NkeeodKiYuKfJ8jGxdzX2_eJZwtXicDZioqmDfcY0AU,11574
81
+ KratosMultiphysics/OptimizationApplication/utilities/opt_projection.py,sha256=3N19ARVSDPUrM_GCIVu9HL6jHeQXRlXzDcy6oUzu2F4,9189
82
+ KratosMultiphysics/OptimizationApplication/utilities/timer.py,sha256=pqCxshFQUeNhGEktJKYBrLRXylpkEG1QOjESt98SUbo,1724
83
+ KratosMultiphysics/OptimizationApplication/utilities/opt_line_search.py,sha256=7LIUer8Utqybar8a_YvUcfk2ITPsCTOUP8cgiU7eXlk,8243
84
+ KratosMultiphysics/OptimizationApplication/utilities/component_data_view.py,sha256=PBNjYWbs57j14MwjyaQfntidqcagWl0ae50hvFLgv88,3463
85
+ KratosMultiphysics/OptimizationApplication/utilities/logger_utilities.py,sha256=gK-9W-FS02MfEXnHMaQDHEWZYGw5IY7CxtgVPr9_o2s,8588
86
+ KratosMultiphysics/OptimizationApplication/utilities/buffered_dict.py,sha256=gsrLcSeW8vCZnaE-f0lTG-EPcX_2noqcbp_HPfeIOW8,18145
87
+ KratosMultiphysics/OptimizationApplication/utilities/model_part_utilities.py,sha256=mhzAS0WP9_MfuDKoApxK3nrpSEhbOZ1K6_9qSAMxLb8,7835
88
+ KratosMultiphysics/OptimizationApplication/utilities/helper_utilities.py,sha256=HZEO2nLGEe5abeyaM3m0TQg7LfjqpHC9UsCuj2qXRtI,1867
89
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/magnitude_reduction_conv_criterion.py,sha256=GbDiYs8knO8se-ebIojVUMZIRovHjQ60rV5QqDMQb7E,4652
90
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/target_value_conv_criterion.py,sha256=S8PY_4xfB08WSH5fzPnnkPcPn-dj149Bm7AjqJ0BtJE,3420
91
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/patience_conv_criterion.py,sha256=c235T6uXuVND1mI-yAHiN8kMJBtmDPHdyOZynQ40GkM,6108
92
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/avg_abs_improvement_conv_criterion.py,sha256=9GWK5DNelnYSdWftX4cFqPlh7nCYZiEnQpUdflwoqrc,5059
93
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/l2_conv_criterion.py,sha256=2xZZQxsxUR3bfmxMlTALXVnAHkQnlWarY3Ye_XDYOws,4115
94
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/constraint_conv_criterion.py,sha256=hbmZM9DwzKnpTJ3q8hbmPy3Y2mCeUWGQDRrRYbXz6E4,3516
95
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/max_iter_conv_criterion.py,sha256=9dI_Gfd1Ac0rTArrn1jOf0E5YfoXYXBWN3foRaFNxco,2090
96
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/convergence_criterion.py,sha256=V2Tt8qDPG64ZJnxpnHp9y1BZxsCpSO3hm8Yp1r1NNec,686
97
+ KratosMultiphysics/OptimizationApplication/convergence_criteria/combined_conv_criterion.py,sha256=WvD5Mu1Q1jznGJloEav-m3OULD5WO-udI0DD3lDDmf8,4198
98
+ KratosMultiphysics/.libs/libKratosOptimizationCore.dylib,sha256=IDenpH-IsEsWJzHMi1fe_NEdiZFAuFwns0qAxFJtUI8,9615712
99
+ KratosMultiphysics/.libs/KratosOptimizationApplication.so,sha256=wj4zByWAYH4ZgY_fmMGY42FNmkpzYn-cT3CQTPXDFU0,3545296
100
+ kratosoptimizationapplication.dylibs/libstdc++.6.dylib,sha256=UBC8pEzZeJ8SX8NP4S0fmEoPSoD-ATlEkYKn1lE1oao,3403264
101
+ kratosoptimizationapplication.dylibs/libKratosCore.dylib,sha256=Mz0PnN4WSdvlN8yh4PP_8smVlOup8tgcC_gcLKJVYes,63629792
102
+ kratosoptimizationapplication.dylibs/libgcc_s.1.1.dylib,sha256=fpfFgLpcOF0UncBU_FcuHCon2OBULeoTde2MpWjflFk,219232
103
+ kratosoptimizationapplication.dylibs/libgomp.1.dylib,sha256=D51-J5ZMfdwkdGXB-bAeBcBB7SgnynnqnM1gwISndz4,438880
104
+ kratosoptimizationapplication-10.4.4.dist-info/RECORD,,
105
+ kratosoptimizationapplication-10.4.4.dist-info/WHEEL,sha256=QX0UaoWXQIAv8vp5R3do793urekDoJdJRoGCk8nXIBY,115
106
+ kratosoptimizationapplication-10.4.4.dist-info/METADATA,sha256=FaRtLu3Y_yQAa17XqEMVgNQxAWHDN97cs1TUndTSHPk,1677
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+ Generator: delocate 0.13.0
6
+
@@ -0,0 +1,4 @@
1
+ [diffend] Oversized file quarantined before diffing.
2
+ name: kratosoptimizationapplication.dylibs/libKratosCore.dylib
3
+ size: 63629792 bytes
4
+ sha256: 333d0f9cde1649dbe537cca1e0f3fff2c99594eba9f2d81c0bf81c2ca25561eb