KratosShapeOptimizationApplication 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 (69) hide show
  1. KratosMultiphysics/.libs/KratosShapeOptimizationApplication.so +0 -0
  2. KratosMultiphysics/.libs/libKratosShapeOptimizationCore.dylib +0 -0
  3. KratosMultiphysics/ShapeOptimizationApplication/TemplateMainKratosShapeOptimization.py +31 -0
  4. KratosMultiphysics/ShapeOptimizationApplication/__init__.py +19 -0
  5. KratosMultiphysics/ShapeOptimizationApplication/algorithms/__init__.py +0 -0
  6. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_base.py +31 -0
  7. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_bead_optimization.py +412 -0
  8. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_factory.py +62 -0
  9. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_gradient_projection.py +317 -0
  10. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_penalized_projection.py +225 -0
  11. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_relaxed_gradient_projection.py +580 -0
  12. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_shape_fraction_optimization.py +622 -0
  13. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_steepest_descent.py +255 -0
  14. KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_trust_region.py +657 -0
  15. KratosMultiphysics/ShapeOptimizationApplication/analyzers/__init__.py +0 -0
  16. KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_base.py +30 -0
  17. KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_empty.py +21 -0
  18. KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_factory.py +310 -0
  19. KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_internal.py +155 -0
  20. KratosMultiphysics/ShapeOptimizationApplication/communicator_factory.py +259 -0
  21. KratosMultiphysics/ShapeOptimizationApplication/custom_ios/__init__.py +0 -0
  22. KratosMultiphysics/ShapeOptimizationApplication/custom_ios/wrl_io.py +82 -0
  23. KratosMultiphysics/ShapeOptimizationApplication/custom_ios/wrl_reader.py +119 -0
  24. KratosMultiphysics/ShapeOptimizationApplication/loggers/__init__.py +0 -0
  25. KratosMultiphysics/ShapeOptimizationApplication/loggers/data_logger_factory.py +199 -0
  26. KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_base.py +28 -0
  27. KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_gid.py +112 -0
  28. KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_unv.py +73 -0
  29. KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_vtk.py +96 -0
  30. KratosMultiphysics/ShapeOptimizationApplication/loggers/sensitivity_heatmap_logger.py +91 -0
  31. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_base.py +128 -0
  32. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_bead_optimization.py +79 -0
  33. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_gradient_projection.py +80 -0
  34. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_penalized_projection.py +79 -0
  35. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_relaxed_gradient_projection.py +108 -0
  36. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_shape_fraction_optimization.py +92 -0
  37. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_steepest_descent.py +64 -0
  38. KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_trust_region.py +100 -0
  39. KratosMultiphysics/ShapeOptimizationApplication/mapper_factory.py +100 -0
  40. KratosMultiphysics/ShapeOptimizationApplication/mapping/__init__.py +0 -0
  41. KratosMultiphysics/ShapeOptimizationApplication/mapping/in_plane_vertex_morphing_mapper.py +140 -0
  42. KratosMultiphysics/ShapeOptimizationApplication/mapping/sliding_vertex_morphing_mapper.py +378 -0
  43. KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/__init__.py +0 -0
  44. KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/mesh_controller_base.py +22 -0
  45. KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/mesh_controller_basic_updating.py +35 -0
  46. KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/mesh_controller_with_solver.py +237 -0
  47. KratosMultiphysics/ShapeOptimizationApplication/model_part_controller_factory.py +197 -0
  48. KratosMultiphysics/ShapeOptimizationApplication/optimizer_factory.py +235 -0
  49. KratosMultiphysics/ShapeOptimizationApplication/response_functions/__init__.py +0 -0
  50. KratosMultiphysics/ShapeOptimizationApplication/response_functions/airfoil_2d_responses.py +189 -0
  51. KratosMultiphysics/ShapeOptimizationApplication/response_functions/face_angle.py +140 -0
  52. KratosMultiphysics/ShapeOptimizationApplication/response_functions/mesh_based_packaging.py +70 -0
  53. KratosMultiphysics/ShapeOptimizationApplication/response_functions/packaging_response_base.py +156 -0
  54. KratosMultiphysics/ShapeOptimizationApplication/response_functions/plane_based_packaging.py +61 -0
  55. KratosMultiphysics/ShapeOptimizationApplication/response_functions/response_function_factory.py +40 -0
  56. KratosMultiphysics/ShapeOptimizationApplication/response_functions/surface_normal_shape_change.py +125 -0
  57. KratosMultiphysics/ShapeOptimizationApplication/response_functions/total_volume.py +56 -0
  58. KratosMultiphysics/ShapeOptimizationApplication/utilities/__init__.py +0 -0
  59. KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_math.py +443 -0
  60. KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_sensitivity_heatmap.py +235 -0
  61. KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_timer.py +47 -0
  62. KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_variable_utilities.py +54 -0
  63. kratosshapeoptimizationapplication-10.4.4.dist-info/METADATA +31 -0
  64. kratosshapeoptimizationapplication-10.4.4.dist-info/RECORD +69 -0
  65. kratosshapeoptimizationapplication-10.4.4.dist-info/WHEEL +6 -0
  66. kratosshapeoptimizationapplication.dylibs/libKratosCore.dylib +4 -0
  67. kratosshapeoptimizationapplication.dylibs/libgcc_s.1.1.dylib +0 -0
  68. kratosshapeoptimizationapplication.dylibs/libgomp.1.dylib +0 -0
  69. kratosshapeoptimizationapplication.dylibs/libstdc++.6.dylib +0 -0
@@ -0,0 +1,235 @@
1
+ # ==============================================================================
2
+ # KratosShapeOptimizationApplication
3
+ #
4
+ # License: BSD License
5
+ # license: ShapeOptimizationApplication/license.txt
6
+ #
7
+ # Main authors: Schmölz David, https://github.com/dschmoelz
8
+ #
9
+ # ==============================================================================
10
+
11
+ # Kratos Core and Apps
12
+ import KratosMultiphysics as Kratos
13
+ import KratosMultiphysics.ShapeOptimizationApplication as KSO
14
+ from KratosMultiphysics.ShapeOptimizationApplication.utilities import custom_math as cm
15
+ # Import additional libraries
16
+
17
+ # some response are continuously formulated
18
+ continuous_response_gradients = ("plane_based_packaging", "mesh_based_packaging")
19
+
20
+ # ==============================================================================
21
+ # --------------------------------------------------------------------------
22
+ class SensitivityHeatmapCalculator(object):
23
+
24
+ # --------------------------------------------------------------------------
25
+ def __init__(self, design_surface, objectives, constraints, settings):
26
+ self.design_surface = design_surface
27
+ self.objectives = objectives
28
+ self.constraints = constraints
29
+
30
+ if objectives.size() > 1:
31
+ raise RuntimeError("Sensitivity Heatmap only supports one objective function!")
32
+
33
+ self.settings = settings
34
+ self.norm_type = settings["norm_type"].GetString()
35
+ if self.norm_type not in ("max", "l2"):
36
+ raise NameError("""The following norm type is not supported by the
37
+ sensitivity heatmap logger (name may be misspelled): """ + self.norm_type)
38
+
39
+ self.sensitivity_weighting = settings["sensitivity_weighting"].GetBool()
40
+ self.map_sensitivities = settings["mapping"].GetBool()
41
+ self.relaxation_method = settings["relaxation_method"].GetString()
42
+ if self.relaxation_method not in ("reciprocal", "constant"):
43
+ raise NameError("""The following relaxation method is not supported by the
44
+ sensitivity heatmap logger (name may be misspelled): """ + self.relaxation_method)
45
+
46
+ self.design_variable_name = settings["design_variable_name"].GetString()
47
+ self.design_variable_dimension = settings["design_variable_dimension"].GetInt()
48
+
49
+ self.optimization_utilities = KSO.OptimizationUtilities
50
+
51
+ # --------------------------------------------------------------------------
52
+ def ComputeHeatmaps(self, optimization_iteration, mapper):
53
+
54
+ # calculate nodal areas for weighting
55
+ if self.sensitivity_weighting:
56
+ KSO.GeometryUtilities(self.design_surface).CalculateNodalAreasFromConditions()
57
+
58
+ self.__ComputeIndividualHeatmaps(optimization_iteration, mapper)
59
+ if self.constraints.size() != 0:
60
+ self.__ComputeAggregatedHeatmap(optimization_iteration, mapper)
61
+
62
+ # --------------------------------------------------------------------------
63
+ def __ComputeIndividualHeatmaps(self, optimization_iteration, mapper):
64
+
65
+ objective_gradient_name = f"DF1D{self.design_variable_name}"
66
+ objective_type = self.objectives[0]["response_settings"]["response_type"]
67
+ self.__ComputeResponseHeatmap(objective_gradient_name, objective_type, optimization_iteration, mapper)
68
+
69
+ if self.constraints.size() != 0:
70
+ for itr in range(self.constraints.size()):
71
+ constraint_gradient_name = f"DC{(itr+1)}D{self.design_variable_name}"
72
+ constraint_type = self.constraints[itr]["response_settings"]["response_type"]
73
+ self.__ComputeResponseHeatmap(constraint_gradient_name, constraint_type, optimization_iteration, mapper)
74
+
75
+ # --------------------------------------------------------------------------
76
+ def __ComputeAggregatedHeatmap(self, optimization_iteration, mapper):
77
+
78
+ # normalize objective gradient
79
+ objective_gradient_name = f"DF1D{self.design_variable_name}"
80
+ objective_type = self.objectives[0]["response_settings"]["response_type"]
81
+ df_dx_normalized = self.__NormalizeResponseGradient(objective_gradient_name, objective_type)
82
+
83
+ # normalize constraints
84
+ dc_dx_normalized = []
85
+ for itr in range(self.constraints.size()):
86
+ constraint_gradient_name = f"DC{(itr+1)}D{self.design_variable_name}"
87
+ constraint_type = self.constraints[itr]["response_settings"]["response_type"]
88
+ dc_dx_normalized.append(self.__NormalizeResponseGradient(constraint_gradient_name, constraint_type))
89
+
90
+ # fill heat map for each node
91
+ heat = Kratos.Vector(len(self.design_surface.Nodes))
92
+ for i in range(len(self.design_surface.Nodes)):
93
+ index = self.design_variable_dimension*i
94
+ df_dx_i = df_dx_normalized[index:index+self.design_variable_dimension]
95
+ df_dx_i_norm = cm.Norm2(df_dx_i)
96
+
97
+ heat_i = df_dx_i_norm
98
+ for dc_dx in dc_dx_normalized:
99
+ dc_dx_i = dc_dx[index:index+self.design_variable_dimension]
100
+ dc_dx_i_norm = cm.Norm2(dc_dx_i)
101
+ heat_i = max(heat_i, dc_dx_i_norm)
102
+
103
+ heat[i] = heat_i
104
+
105
+ if self.norm_type == "max":
106
+ heat_map_name = "HEATMAP_MAX"
107
+ elif self.norm_type == "l2":
108
+ heat_map_name = "HEATMAP_L2"
109
+
110
+ # relax heatmap
111
+ relaxation_coefficient = self.__GetRelaxationCoefficient(optimization_iteration)
112
+ if optimization_iteration == 1:
113
+ heat_relaxed = heat
114
+ else:
115
+ prev_heat = Kratos.Vector()
116
+ self.optimization_utilities.AssembleVector(self.design_surface, prev_heat, Kratos.KratosGlobals.GetVariable(heat_map_name))
117
+ heat_relaxed = Kratos.Vector(len(self.design_surface.Nodes))
118
+ for i in range(len(self.design_surface.Nodes)):
119
+ heat_relaxed[i] = relaxation_coefficient * heat[i] + (1 - relaxation_coefficient) * prev_heat[i]
120
+
121
+ self.optimization_utilities.AssignVectorToVariable(self.design_surface, heat_relaxed, Kratos.KratosGlobals.GetVariable(heat_map_name))
122
+
123
+ # --------------------------------------------------------------------------
124
+ def __ComputeResponseHeatmap( self, response_gradient_name, response_type, optimization_iteration, mapper):
125
+
126
+ response_is_weighted = False
127
+ if self.sensitivity_weighting and \
128
+ response_type not in continuous_response_gradients:
129
+ response_is_weighted = True
130
+
131
+ if response_is_weighted:
132
+ self.__WeightResponseGradient(response_gradient_name)
133
+ response_gradient_name += "_WEIGHTED"
134
+ if self.map_sensitivities:
135
+ # reponse has been already mapped by the optimization algorithm if it is not weighted
136
+ if response_is_weighted:
137
+ self.__MapResponseGradient(response_gradient_name, mapper)
138
+ response_gradient_name += "_MAPPED"
139
+
140
+ self.__RelaxResponseHeatmap(response_gradient_name, optimization_iteration)
141
+
142
+ # --------------------------------------------------------------------------
143
+ def __WeightResponseGradient( self, response_gradient_name ):
144
+
145
+ nodal_area = Kratos.Vector()
146
+ self.optimization_utilities.AssembleVector(self.design_surface, nodal_area, Kratos.KratosGlobals.GetVariable("NODAL_AREA"))
147
+
148
+ dg_dx = Kratos.Vector()
149
+ self.optimization_utilities.AssembleVector(self.design_surface, dg_dx, Kratos.KratosGlobals.GetVariable(response_gradient_name))
150
+
151
+ # weight response gradients with nodal area
152
+ dg_dx_weighted = Kratos.Vector(self.design_variable_dimension*len(self.design_surface.Nodes))
153
+ for i in range(len(self.design_surface.Nodes)):
154
+ for dim in range(self.design_variable_dimension):
155
+ index = self.design_variable_dimension * i + dim
156
+ if nodal_area[i] > 1e-8:
157
+ dg_dx_weighted[index] = dg_dx[index] / nodal_area[i]
158
+ else:
159
+ dg_dx_weighted[index] = dg_dx[index]
160
+
161
+ response_gradient_weighted_name = f"{response_gradient_name}_WEIGHTED"
162
+ self.optimization_utilities.AssignVectorToVariable(self.design_surface, dg_dx_weighted,
163
+ Kratos.KratosGlobals.GetVariable(response_gradient_weighted_name))
164
+
165
+ # --------------------------------------------------------------------------
166
+ def __MapResponseGradient( self, response_gradient_name, mapper ):
167
+
168
+ response_gradient_mapped_name = f"{response_gradient_name}_MAPPED"
169
+ mapper.InverseMap(Kratos.KratosGlobals.GetVariable(response_gradient_name),
170
+ Kratos.KratosGlobals.GetVariable(response_gradient_mapped_name))
171
+
172
+ # --------------------------------------------------------------------------
173
+ def __RelaxResponseHeatmap( self, response_gradient_name, optimization_iteration ):
174
+
175
+ relaxation_coefficient = self.__GetRelaxationCoefficient(optimization_iteration)
176
+
177
+ dg_dx = Kratos.Vector()
178
+ self.optimization_utilities.AssembleVector(self.design_surface, dg_dx, Kratos.KratosGlobals.GetVariable(response_gradient_name))
179
+
180
+ g_name = f"{response_gradient_name[0:4]}"
181
+ heatmap_dgdx_name = f"HEATMAP_{g_name}{self.design_variable_name}"
182
+ if optimization_iteration == 1:
183
+ heat_dfdx_relaxed = dg_dx
184
+ else:
185
+ prev_heat_dfdx = Kratos.Vector()
186
+ self.optimization_utilities.AssembleVector(self.design_surface, prev_heat_dfdx, Kratos.KratosGlobals.GetVariable(heatmap_dgdx_name))
187
+ heat_dfdx_relaxed = Kratos.Vector(self.design_variable_dimension*len(self.design_surface.Nodes))
188
+ for i in range(len(self.design_surface.Nodes)):
189
+ for dim in range(self.design_variable_dimension):
190
+ index = self.design_variable_dimension * i + dim
191
+ heat_dfdx_relaxed[index] = relaxation_coefficient * dg_dx[index] + (1 - relaxation_coefficient) * prev_heat_dfdx[index]
192
+
193
+ self.optimization_utilities.AssignVectorToVariable(self.design_surface, heat_dfdx_relaxed, Kratos.KratosGlobals.GetVariable(heatmap_dgdx_name))
194
+
195
+ # --------------------------------------------------------------------------
196
+ def __NormalizeResponseGradient( self, response_gradient_name, response_type ):
197
+
198
+ response_is_weighted = False
199
+ if self.sensitivity_weighting and \
200
+ response_type not in continuous_response_gradients:
201
+ response_is_weighted = True
202
+
203
+ if response_is_weighted:
204
+ response_gradient_name += "_WEIGHTED"
205
+ if self.map_sensitivities:
206
+ response_gradient_name += "_MAPPED"
207
+
208
+ optimization_utilities = KSO.OptimizationUtilities
209
+
210
+ dg_dx = Kratos.Vector()
211
+ optimization_utilities.AssembleVector(self.design_surface, dg_dx, Kratos.KratosGlobals.GetVariable(response_gradient_name))
212
+
213
+ if self.norm_type == "max":
214
+ dg_dx_norm = cm.NormInf3D(dg_dx)
215
+ elif self.norm_type == "l2":
216
+ dg_dx_norm = cm.Norm2(dg_dx)
217
+ else:
218
+ raise RuntimeError("Sensitivity Heatmap only supports 'max' or 'l2' norm!")
219
+
220
+ if dg_dx_norm != 0.0:
221
+ dg_dx_normalized = (1/dg_dx_norm) * dg_dx
222
+ else:
223
+ dg_dx_normalized = 0 * dg_dx
224
+
225
+ return dg_dx_normalized
226
+
227
+ # --------------------------------------------------------------------------
228
+ def __GetRelaxationCoefficient( self, optimization_iteration ):
229
+
230
+ if self.relaxation_method == "reciprocal":
231
+ return 1 / optimization_iteration
232
+ elif self.relaxation_method == "constant":
233
+ return self.settings["relaxation_coefficient"].GetDouble()
234
+
235
+ # ==============================================================================
@@ -0,0 +1,47 @@
1
+ # ==============================================================================
2
+ # KratosShapeOptimizationApplication
3
+ #
4
+ # License: BSD License
5
+ # license: ShapeOptimizationApplication/license.txt
6
+ #
7
+ # Main authors: Baumgaertner Daniel, https://github.com/dbaumgaertner
8
+ # Geiser Armin, https://github.com/armingeiser
9
+ #
10
+ # ==============================================================================
11
+
12
+
13
+ # Import additional libraries
14
+ import time
15
+
16
+ # ==============================================================================
17
+ class Timer:
18
+ # --------------------------------------------------------------------------
19
+ def __init__( self ):
20
+ self.Precision = 3
21
+ self.StartGlobalTime = None
22
+ self.StartLapTime = None
23
+ self.LapTime = None
24
+ # --------------------------------------------------------------------------
25
+ def StartTimer( self ):
26
+ self.StartGlobalTime = time.time()
27
+ self.StartLapTime = time.time()
28
+
29
+ # --------------------------------------------------------------------------
30
+ def GetLapTime( self ):
31
+ LapTime = time.time() - self.StartLapTime
32
+ return round( LapTime, self.Precision )
33
+
34
+ # --------------------------------------------------------------------------
35
+ def StartNewLap( self ):
36
+ self.StartLapTime = time.time()
37
+
38
+ #---------------------------------------------------------------------------
39
+ def GetTotalTime( self ):
40
+ totalTime = time.time() - self.StartGlobalTime
41
+ return round( totalTime, self.Precision )
42
+
43
+ # --------------------------------------------------------------------------
44
+ def GetTimeStamp( self ):
45
+ return time.ctime()
46
+
47
+ # ==============================================================================
@@ -0,0 +1,54 @@
1
+ # ==============================================================================
2
+ # KratosShapeOptimizationApplication
3
+ #
4
+ # License: BSD License
5
+ # license: ShapeOptimizationApplication/license.txt
6
+ #
7
+ # Main authors: Baumgaertner Daniel, https://github.com/dbaumgaertner
8
+ #
9
+ # ==============================================================================
10
+ def WriteDictionaryDataOnNodalVariable(data, model_part, nodal_variable):
11
+ for node_id, tmp_gradient in data.items():
12
+ model_part.Nodes[node_id].SetSolutionStepValue(nodal_variable, 0, tmp_gradient)
13
+
14
+ # ------------------------------------------------------------------------------
15
+ def ReadNodalVariableToList(model_part, nodal_variable, dimension=3):
16
+ variable_values_list = [0.0]*model_part.NumberOfNodes()*dimension
17
+
18
+ for itr, node in enumerate(model_part.Nodes):
19
+ tmp_values = node.GetSolutionStepValue(nodal_variable)
20
+
21
+ if dimension == 1:
22
+ variable_values_list[itr] = tmp_values
23
+ else:
24
+ for i in range(dimension):
25
+ variable_values_list[dimension*itr+i] = tmp_values[i]
26
+
27
+ return variable_values_list
28
+
29
+ # --------------------------------------------------------------------------
30
+ def WriteListToNodalVariable(input_list, model_part, nodal_variable, dimension=3):
31
+ if len(input_list) != model_part.NumberOfNodes()*dimension:
32
+ raise RuntimeError("custom_variable_utility::WriteListToNodalVariable: Wrong size of input_list!")
33
+
34
+ k = 0
35
+ for node in model_part.Nodes:
36
+ if dimension == 1:
37
+ tmp_values = input_list[k]
38
+ else:
39
+ tmp_values = input_list[k:k+dimension]
40
+ node.SetSolutionStepValue(nodal_variable, tmp_values)
41
+ k = k+dimension
42
+
43
+ # --------------------------------------------------------------------------
44
+ def WriteNodeCoordinatesToList(model_part):
45
+ variable_values_list = [0.0]*model_part.NumberOfNodes()*3
46
+
47
+ for itr, node in enumerate(model_part.Nodes):
48
+ variable_values_list[3*itr+0] = node.X
49
+ variable_values_list[3*itr+1] = node.Y
50
+ variable_values_list[3*itr+2] = node.Z
51
+
52
+ return variable_values_list
53
+
54
+ # ==============================================================================
@@ -0,0 +1,31 @@
1
+ Metadata-Version: 2.5
2
+ Name: KratosShapeOptimizationApplication
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
+ # ShapeOptimizationApplication
15
+
16
+ The Kratos ShapeOptimizationApplication contains an implementation of the Vertex Morphing method for node-based shape optimization.
17
+
18
+ It can be used in combination with the Adjoint Sensitivity Analysis capabilities of the Kratos StructuralMechanicsApplication and ConvectionDiffusionApplication.
19
+ Additionally it offers an interface to use external response functions via custom python code.
20
+
21
+
22
+ ## Examples
23
+
24
+ A few application examples can be found [here](https://github.com/KratosMultiphysics/Examples/tree/master/shape_optimization)
25
+
26
+
27
+ ### References
28
+
29
+ - Bletzinger, K.-U. A consistent frame for sensitivity filtering and the vertex assigned morphing of optimal shape. Struct Multidisc Optim 49, 873–895 (2014). https://doi.org/10.1007/s00158-013-1031-5
30
+ - Bletzinger, K.-U. (2017). Shape Optimization. In Encyclopedia of Computational Mechanics Second Edition (eds E. Stein, R. Borst and T.J.R. Hughes). https://doi.org/10.1002/9781119176817.ecm2109
31
+
@@ -0,0 +1,69 @@
1
+ kratosshapeoptimizationapplication-10.4.4.dist-info/RECORD,,
2
+ kratosshapeoptimizationapplication-10.4.4.dist-info/WHEEL,sha256=QX0UaoWXQIAv8vp5R3do793urekDoJdJRoGCk8nXIBY,115
3
+ kratosshapeoptimizationapplication-10.4.4.dist-info/METADATA,sha256=jx423yyqWHk18LzRHbxDcHMvvtw0pY12B3ZoHKmP8xg,1663
4
+ KratosMultiphysics/.libs/libKratosShapeOptimizationCore.dylib,sha256=txhN5_COSYCgS8vtqqhItjZBObIf19JuG4AAO6Xg6Hs,4755424
5
+ KratosMultiphysics/.libs/KratosShapeOptimizationApplication.so,sha256=0lqzYU-jDzuqqTsCc8G0wiITOw1cIFqlcD9m8zrFAHI,1951360
6
+ KratosMultiphysics/ShapeOptimizationApplication/TemplateMainKratosShapeOptimization.py,sha256=AfN_XDKyrCs5o9QVoeBBDrvSLIhMVrlt9C5zXHUDMMI,1343
7
+ KratosMultiphysics/ShapeOptimizationApplication/communicator_factory.py,sha256=YvM5Q_psPUe9KR0UgnS-XSOwS48RBgb3LQdD9Mgc6SE,13498
8
+ KratosMultiphysics/ShapeOptimizationApplication/mapper_factory.py,sha256=C2EVo5Zov9PO7ANfxoimtkAsOpyPxEGy-fVQVL9HuNw,5476
9
+ KratosMultiphysics/ShapeOptimizationApplication/__init__.py,sha256=1P0_CzQiDhtVBO3QcOPUOb02FSIRfPMHcIh6nR0wyn8,811
10
+ KratosMultiphysics/ShapeOptimizationApplication/model_part_controller_factory.py,sha256=ZP_y4SZ-s0-5WxGGZzHyXj7LYg6frAUl5NxHTREWKFk,9727
11
+ KratosMultiphysics/ShapeOptimizationApplication/optimizer_factory.py,sha256=U3VHdu1CFE6-VEYXOlmtBhMqSePRFqVjg-qOW93-i4o,13333
12
+ KratosMultiphysics/ShapeOptimizationApplication/mapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ KratosMultiphysics/ShapeOptimizationApplication/mapping/in_plane_vertex_morphing_mapper.py,sha256=fU18L0CCsAsD7gNEIBYsWZOW3dH9LTMvu0iU5smOhYk,6901
14
+ KratosMultiphysics/ShapeOptimizationApplication/mapping/sliding_vertex_morphing_mapper.py,sha256=W8kxcqb6bS0ogU79Lrr2G2EkaauQxKuou7RqSaCMeZA,18652
15
+ KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_base.py,sha256=3lANIAwI22R0WUMZwRAlOYRdaNnC35THTQDloZ09GZQ,1316
16
+ KratosMultiphysics/ShapeOptimizationApplication/analyzers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_factory.py,sha256=LeHftBaQkFB72tHS4R--OYWSWcjiPQ8oTcKrj3eLUDM,15259
18
+ KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_internal.py,sha256=co0MVNw7Gopdh_sG1QaNht6ccMQh927_1_CtOxOUSmA,8283
19
+ KratosMultiphysics/ShapeOptimizationApplication/analyzers/analyzer_empty.py,sha256=llKIFS6yS0wjwFPngDU5iAAg9z-ysH7zgC2Zqv_gyEs,856
20
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_shape_fraction_optimization.py,sha256=Iqz9LUCyKCrb_eMI5Vb9u4-1ye-jSNFPLh6oOUyyYoA,5161
21
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_base.py,sha256=2r_kDALwjPkxClOZzP5wA9-C_79Og9oMIhG4rFBFy0I,1423
22
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_unv.py,sha256=rV4TSp8awUTHy5uCFvQujfR-9vIZI-oyTQZe0QzHW_g,3603
23
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_gid.py,sha256=UlABuCjfV3fNo6luedL1xAbAHKi9OfQ7UZWKlOxtfp4,5466
24
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/design_logger_vtk.py,sha256=Q3oztFf6wp0CssJRMyyeBHzVagbKrPjZi1RJKBkHFxk,4488
25
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_steepest_descent.py,sha256=DkKLvcX9Y0jETdptCv1p_J3aKvnr70FWLfPAVGdqEco,3445
26
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/sensitivity_heatmap_logger.py,sha256=W9bXwk2iLzfAPc9Z_5HzLrGVjVmPnSzDnLgv5XJzAdY,4893
27
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_penalized_projection.py,sha256=FlFMxlwHNU2teYva23XxkBw3l2E39Y0G_YF2ofKVnQw,4353
28
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_trust_region.py,sha256=7sWCeWLt6QswCalSuoGAyVsghXVn6u2KiZftDHb60Po,5835
29
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/data_logger_factory.py,sha256=BGaBqpgyIbv4TXNFmHaaBZSjCGvAZfcM9sOt4-02NVs,11563
31
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_base.py,sha256=UAgNb2hbnDVswkBl_89lezdWG_EeOa4Jva4AglWrOfU,6205
32
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_gradient_projection.py,sha256=weeqZr-VpMcVlbeeHzVsjO6q4MzQAFV694cKMWxDWHw,4418
33
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_relaxed_gradient_projection.py,sha256=HZMrZgxwSm0RlmlucC_ycErObco7YE7_CYhXvViFBhs,6523
34
+ KratosMultiphysics/ShapeOptimizationApplication/loggers/value_logger_bead_optimization.py,sha256=jJcfjvKAiEXKlztD4mAvONFzA97YC4qhDjcq3MQKob4,4791
35
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_relaxed_gradient_projection.py,sha256=fOD-WxxIE6CUgeX-OoJ3aGbJ0HGOA3m4LAF5RL21Vko,30146
36
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_base.py,sha256=_ob_wfceg7ERX5qy82wf2KA5SzCZbKOHZByzZJdzsy4,1694
37
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_factory.py,sha256=YcckC9lvfgdo0qBNATS3Kvc2DGTAEdCa-QVYMKujcxg,3473
38
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_trust_region.py,sha256=cuE8QrG7HNUJgPAe3krqAzM6DajMDZQTVaqlfJw0nhA,31404
39
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_gradient_projection.py,sha256=wY4yJc66vJNC7nVvIY6AIhWR17vk1z4fH6LaM51guxg,16325
40
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_penalized_projection.py,sha256=6irbx7BlkzegKD_MW3FlMJthQNgCdQC0PHeyPhdGbPU,11809
42
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_shape_fraction_optimization.py,sha256=azOH5HfwmZYTzLDtcW4k0CoXOefIm-6-xO5wmk1J4KU,29713
43
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_bead_optimization.py,sha256=-itmON5GPfO-4OveYzBviQvpgiidgMP_J2P63v20ZnE,21979
44
+ KratosMultiphysics/ShapeOptimizationApplication/algorithms/algorithm_steepest_descent.py,sha256=pMmxcGn8oMlLhq0Id6yltdWkzNiTR4gEkPItAs1ZvAs,13163
45
+ KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/mesh_controller_base.py,sha256=l0sAcDyRpLXzJlbGG7uYCu3IzNBjta9OLi1mFcxuUNg,994
46
+ KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/mesh_controller_basic_updating.py,sha256=Fv7Bf0waVdXxDBezHdEAwCCmAl4U7reaB1A67B8BEGY,1609
48
+ KratosMultiphysics/ShapeOptimizationApplication/mesh_controllers/mesh_controller_with_solver.py,sha256=9t7Ch4nGinngGnUEpky7ytHj_R4rtcusNqfmNAsVwk0,12262
49
+ KratosMultiphysics/ShapeOptimizationApplication/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_variable_utilities.py,sha256=zgXXHFnFGxRqV4JYDDZsg1ACObeuZjnerwCA_uFlysU,2247
51
+ KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_timer.py,sha256=_B5VyHa-NYHNAy2GlkC3D7AONkrQlxiPwL9Cov-Bydc,1807
52
+ KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_math.py,sha256=bTn0lCPIL43G3kbRl8LR63L-FagytxIxKQEjtNZontE,14277
53
+ KratosMultiphysics/ShapeOptimizationApplication/utilities/custom_sensitivity_heatmap.py,sha256=WS7Zwp_RceelYMgsTkKxV5R6chFgk7tpx8_sUOMZ0Vg,11819
54
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/plane_based_packaging.py,sha256=CyeCBx6EcWStVKWxQHKB7rP4PpCsaS84PsGfiGvufPs,2364
55
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/surface_normal_shape_change.py,sha256=Y9jr2KTGebjrF0s_xjhb56L0xwUH9uHIt9pZyq5kVy4,5308
56
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/packaging_response_base.py,sha256=8TOtPgJUa2JRfGzj_Fiv84d9boZT3rcgEVaIIAotudY,6244
57
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/airfoil_2d_responses.py,sha256=QOZBh24p3oYdkiAw3ODl2rvJdpdkUO_ts1Nqs2x-gdg,8085
59
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/mesh_based_packaging.py,sha256=b81rbJsbdyTkYeOM3cy_o_15YfJPUiGiL5k7IzIK4m8,3464
60
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/response_function_factory.py,sha256=fwGhvmGbNAqFKchUEMGckyWNyvXGya4_dtdnmqaNlkg,2202
61
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/face_angle.py,sha256=P3w9KTZNsxSMoFPFxeCBt3n76T7q183yYTgZ0JliW98,6177
62
+ KratosMultiphysics/ShapeOptimizationApplication/response_functions/total_volume.py,sha256=rYqbghaDCAQZMg_JvINRNjet1HpJy-33VbWhEbLyfuc,2030
63
+ KratosMultiphysics/ShapeOptimizationApplication/custom_ios/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ KratosMultiphysics/ShapeOptimizationApplication/custom_ios/wrl_io.py,sha256=Ap1UN-c2cmZ77MheXk9a-luQhaJP5xjZQb4RvxYuT_k,2924
65
+ KratosMultiphysics/ShapeOptimizationApplication/custom_ios/wrl_reader.py,sha256=ZH8I2bCv1PtWnKBrgYsf_aRQcDYp5SISfT28K3IyN4s,3596
66
+ kratosshapeoptimizationapplication.dylibs/libstdc++.6.dylib,sha256=lDZLIq4u6sqHdlyjTrjv8K_7Fx_3RQXY-2mxFRTDCOo,3403264
67
+ kratosshapeoptimizationapplication.dylibs/libKratosCore.dylib,sha256=hGkjDVH4S_5Txr7smcg_iHAPoexX50PoTHg96ihqphM,63629792
68
+ kratosshapeoptimizationapplication.dylibs/libgcc_s.1.1.dylib,sha256=D3xFlDs2JSc4DNp_v6MhwALp3uhoFXbEGmCA2x6nyvE,219232
69
+ kratosshapeoptimizationapplication.dylibs/libgomp.1.dylib,sha256=KI92xW3zsH_6Ki1IUmgpSZ7OYuVmGjvJpGPtMGtd2BM,438880
@@ -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: kratosshapeoptimizationapplication.dylibs/libKratosCore.dylib
3
+ size: 63629792 bytes
4
+ sha256: 8469230d51f84bfe53c6beec99c83f88700fa1ec57e743e84c783dea286aa613