Skip to content

Commit 0c36606

Browse files
authored
add optapp examples
1 parent 52a5b17 commit 0c36606

23 files changed

Lines changed: 571505 additions & 0 deletions
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"problem_data": {
3+
"echo_level": 0,
4+
"parallel_type": "OpenMP",
5+
"start_time": 0.0,
6+
"end_time": 1.0
7+
},
8+
"solver_settings": {
9+
"domain_size": 3,
10+
"echo_level": 0,
11+
"solver_type": "structural_similarity",
12+
"model_part_name": "3D_Hook",
13+
"compute_reactions": false,
14+
"calculate_mesh_velocity": false,
15+
"model_import_settings": {
16+
"input_type": "use_input_model_part"
17+
},
18+
"time_stepping": {
19+
"time_step": 1.1
20+
}
21+
}
22+
}
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
{
2+
"problem_data": {
3+
"parallel_type": "OpenMP",
4+
"echo_level": 0
5+
},
6+
"model_parts": [
7+
{
8+
"settings": {
9+
"model_part_name": "3D_Hook",
10+
"domain_size": 3,
11+
"input_filename": "../hook"
12+
}
13+
}
14+
],
15+
"analyses": [
16+
{
17+
"name": "main",
18+
"type": "kratos_analysis_execution_policy",
19+
"settings": {
20+
"model_part_names": [
21+
"3D_Hook"
22+
],
23+
"analysis_module": "KratosMultiphysics.StructuralMechanicsApplication",
24+
"analysis_type": "StructuralMechanicsAnalysis",
25+
"analysis_settings": {
26+
"@include_json": "../primal_parameters_main.json"
27+
},
28+
"analysis_output_settings": {
29+
"nodal_solution_step_data_variables": [
30+
"DISPLACEMENT"
31+
],
32+
"nodal_data_value_variables": [],
33+
"element_data_value_variables": [],
34+
"condition_data_value_variables": []
35+
}
36+
}
37+
},
38+
{
39+
"name": "tip",
40+
"type": "kratos_analysis_execution_policy",
41+
"settings": {
42+
"model_part_names": [
43+
"3D_Hook"
44+
],
45+
"analysis_module": "KratosMultiphysics.StructuralMechanicsApplication",
46+
"analysis_type": "StructuralMechanicsAnalysis",
47+
"analysis_settings": {
48+
"@include_json": "../primal_parameters_tip.json"
49+
},
50+
"analysis_output_settings": {
51+
"nodal_solution_step_data_variables": [],
52+
"nodal_data_value_variables": [],
53+
"element_data_value_variables": [],
54+
"condition_data_value_variables": []
55+
}
56+
}
57+
}
58+
],
59+
"responses": [
60+
{
61+
"name": "mass",
62+
"type": "mass_response_function",
63+
"settings": {
64+
"evaluated_model_part_names": [
65+
"3D_Hook"
66+
],
67+
"perturbation_size": 1e-8
68+
}
69+
},
70+
{
71+
"name": "strain_energy_main",
72+
"type": "linear_strain_energy_response_function",
73+
"settings": {
74+
"evaluated_model_part_names": [
75+
"3D_Hook"
76+
],
77+
"primal_analysis_name": "main",
78+
"perturbation_size": 1e-6
79+
}
80+
},
81+
{
82+
"name": "strain_energy_tip",
83+
"type": "linear_strain_energy_response_function",
84+
"settings": {
85+
"evaluated_model_part_names": [
86+
"3D_Hook"
87+
],
88+
"primal_analysis_name": "tip",
89+
"perturbation_size": 1e-6
90+
}
91+
}
92+
],
93+
"controls": [
94+
{
95+
"name": "shape_control",
96+
"type": "shape.vertex_morphing_shape_control",
97+
"settings": {
98+
"controlled_model_part_names": [
99+
"3D_Hook.design_surface_1"
100+
],
101+
"mesh_motion_solver_type": "mesh_moving_analysis",
102+
"output_all_fields": true,
103+
"mesh_motion_solver_settings": {
104+
"@include_json": "mesh_motion_parameters.json"
105+
},
106+
"filter_settings": {
107+
"filter_type": "explicit_filter",
108+
"filter_function_type": "linear",
109+
"max_nodes_in_filter_radius": 100000,
110+
"filter_radius_settings": {
111+
"filter_radius_type": "constant",
112+
"filter_radius": 25.0
113+
},
114+
"filtering_boundary_conditions": {
115+
"damping_type": "nearest_entity",
116+
"damping_function_type": "cosine",
117+
"damped_model_part_settings": {
118+
"3D_Hook.non_design_top_1": [
119+
true,
120+
true,
121+
true
122+
],
123+
"3D_Hook.non_design_inner_1": [
124+
true,
125+
true,
126+
true
127+
],
128+
"3D_Hook.tip_1": [
129+
true,
130+
true,
131+
true
132+
]
133+
}
134+
}
135+
}
136+
}
137+
}
138+
],
139+
"algorithm_settings": {
140+
"type": "algorithm_gradient_projection",
141+
"settings": {
142+
"echo_level": 0,
143+
"line_search": {
144+
"type": "const_step",
145+
"init_step": 3.0,
146+
"gradient_scaling": "inf_norm"
147+
},
148+
"conv_settings": {
149+
"type": "max_iter",
150+
"max_iter": 100
151+
},
152+
"linear_solver_settings": {
153+
"solver_type": "LinearSolversApplication.dense_col_piv_householder_qr"
154+
},
155+
"correction_size": 2.0
156+
},
157+
"controls": [
158+
"shape_control"
159+
],
160+
"objective": {
161+
"response_name": "mass",
162+
"type": "minimization",
163+
"scaling": 1.0
164+
},
165+
"constraints": [
166+
{
167+
"response_name": "strain_energy_main",
168+
"type": "<=",
169+
"scaling": 1.0,
170+
"scaled_ref_value": "initial_value",
171+
"violation_scaling": 5.0
172+
},
173+
{
174+
"response_name": "strain_energy_tip",
175+
"type": "<=",
176+
"scaling": 1.0,
177+
"scaled_ref_value": "initial_value",
178+
"violation_scaling": 5.0
179+
}
180+
]
181+
},
182+
"processes": {
183+
"kratos_processes": {},
184+
"optimization_data_processes": {
185+
"output_processes": [
186+
{
187+
"type": "optimization_problem_ascii_output_process",
188+
"module": "KratosMultiphysics.OptimizationApplication.processes",
189+
"settings": {
190+
"output_file_name": "summary.csv",
191+
"write_kratos_version": false,
192+
"write_time_stamp": false,
193+
"list_of_output_components": [
194+
"all"
195+
],
196+
"format_info": {
197+
"int_length": 7,
198+
"float_precision": 6,
199+
"bool_values": [
200+
"no",
201+
"yes"
202+
],
203+
"string_length": 10
204+
}
205+
}
206+
},
207+
{
208+
"type": "optimization_problem_vtu_output_process",
209+
"module": "KratosMultiphysics.OptimizationApplication.processes",
210+
"settings": {
211+
"file_name": "<model_part_full_name>_<step>",
212+
"file_format": "binary",
213+
"output_path": "Optimization_Results",
214+
"save_output_files_in_folder": true,
215+
"write_deformed_configuration": false,
216+
"list_of_output_components": [
217+
"all"
218+
],
219+
"output_precision": 7,
220+
"output_interval": 1,
221+
"echo_level": 0
222+
}
223+
}
224+
]
225+
}
226+
}
227+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Import Kratos core and apps
2+
import KratosMultiphysics as Kratos
3+
import KratosMultiphysics.StructuralMechanicsApplication
4+
import KratosMultiphysics.ShapeOptimizationApplication as KratosSOA
5+
6+
# Additional imports
7+
from KratosMultiphysics.OptimizationApplication.optimization_analysis import OptimizationAnalysis
8+
9+
def RunSimulation():
10+
with open("optimization_parameters.json",'r') as parameter_file:
11+
parameters = Kratos.Parameters(parameter_file.read())
12+
13+
# Defining the model_part
14+
model = Kratos.Model()
15+
analysis = OptimizationAnalysis(model, parameters)
16+
analysis.Run()
17+
18+
def VisualizeMdpa():
19+
model = Kratos.Model()
20+
model_part = model.CreateModelPart("test")
21+
Kratos.ModelPartIO("../hook", Kratos.ModelPartIO.READ | Kratos.ModelPartIO.MESH_ONLY).ReadModelPart(model_part)
22+
23+
Kratos.VtuOutput(model_part.GetSubModelPart("domain")).PrintOutput("testing/domain")
24+
Kratos.VtuOutput(model_part.GetSubModelPart("design_surface_1")).PrintOutput("testing/design_surface_1")
25+
Kratos.VtuOutput(model_part.GetSubModelPart("non_design_top_1")).PrintOutput("testing/non_design_top_1")
26+
Kratos.VtuOutput(model_part.GetSubModelPart("non_design_inner_1")).PrintOutput("testing/non_design_inner_1")
27+
28+
model_part.CreateSubModelPart("boundary")
29+
KratosSOA.GeometryUtilities(model_part).ExtractBoundaryNodes("boundary")
30+
Kratos.VtuOutput(model_part.GetSubModelPart("boundary")).PrintOutput("testing/boundary")
31+
32+
if __name__ == "__main__":
33+
# VisualizeMdpa()
34+
RunSimulation()

0 commit comments

Comments
 (0)