Skip to content

Commit 1c29d3c

Browse files
authored
Merge pull request #156 from KratosMultiphysics/Add_IGA_Validation
Add IGA Validation Examples
2 parents 12c7353 + c461c9b commit 1c29d3c

54 files changed

Lines changed: 5475 additions & 2 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

iga/README.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
# Iga Examples
22

3+
This folder contains examples related to Isogeometric Analysis in Kratos.
4+
5+
They are realized using the IgaApplication
6+
7+
The Examples are continuously updated and extended
8+
39
## Use Cases
410
- [External Boundary Circle (NURBS)](https://github.com/KratosMultiphysics/Examples/blob/master/iga/use_cases/external_boundary_circle_with_nurbs/README.md)
511
- [IGA Single-Patch Shell in Membrane Action with Weak Supports and Line Load](https://github.com/KratosMultiphysics/Examples/blob/master/iga/use_cases/iga_shell_3p_single_patch/README.md)
612
- [3D Laplacian on an Embedded Cube with SBM](https://github.com/KratosMultiphysics/Examples/blob/master/iga/use_cases/laplacian_3d_cube_sbm/README.md)
713

814
## Validation Cases
9-
10-
# Use Cases
15+
- [Buckling Analysis - Single Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/blob/master/iga/validation/buckling_analysis_single_patch_cantilever_beam/README.md)
16+
- [Geometric Linear Analysis - Single Patch - Scordelis-Lo Roof](https://github.com/KratosMultiphysics/Examples/blob/master/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/README.md)
17+
- [Geometric Linear Analysis - Trimmed Patch - Plate with Hole](https://github.com/KratosMultiphysics/Examples/blob/master/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/README.md)
18+
- [Geometric Non-Linear Analysis - Multi Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/blob/master/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/README.md)
19+
- [Geometric Non-Linear Analysis - Single Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/blob/master/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/README.md)

iga/validation/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@
22

33
This folder contains the validation cases:
44

5+
- [Buckling Analysis - Single Patch - Cantilever Beam](buckling_analysis_single_patch_cantilever_beam/README.md)
6+
- [Geometric Linear Analysis - Single Patch - Scordelis-Lo Roof](geometric_linear_analysis_single_patch_scordelis_lo_roof/README.md)
7+
- [Geometric Linear Analysis - Trimmed Patch - Plate with Hole](geometric_linear_analysis_trimmed_patch_plate_with_hole/README.md)
8+
- [Geometric Non-Linear Analysis - Multi Patch - Cantilever Beam](geometric_nonlinear_analysis_multi_patch_cantilever_beam/README.md)
9+
- [Geometric Non-Linear Analysis - Single Patch - Cantilever Beam](geometric_nonlinear_analysis_single_patch_cantilever_beam/README.md)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Buckling Analysis - Single Patch - Cantilever Beam
2+
3+
**Author:** Aakash Ravichandran
4+
5+
**Kratos version:** 10.2
6+
7+
**Source files:** [Buckling Analysis - Single Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/tree/master/iga/validation/buckling_analysis_single_patch_cantilever_beam/source)
8+
9+
## Problem definition
10+
11+
This example presents the validation of buckling analysis in Kratos with Isogeometric Analysis.
12+
13+
<div align="center">
14+
<img src="data/Reference_Model.png" alt="Displacement" width="600">
15+
16+
*Structural System [1]*
17+
</div>
18+
19+
20+
The cantilever beam is modeled using single NURBS patch with the Shell3pElement. The CAD model is constructed with single span B-spline surfaces and has a curve degree of 2 in both directions of the plane. Additional refinement is applied in Kratos, by increasing the curve degree to 4 in both axes and inserting 4 knots in the width and 20 knots along the length of the beam.
21+
22+
## Results
23+
24+
The buckling load factors are shown in table below. The corresponding buckling modes are shown in image below.
25+
26+
<div align="center">
27+
28+
| | Reference | Kratos |
29+
| :--- | :--- | :--- |
30+
| $\lambda_{cr}^{(1)}$ | 4.1123 | 4.06977 |
31+
| $\lambda_{cr}^{(2)}$ | 16.449 | 16.1693 |
32+
| $\lambda_{cr}^{(3)}$ | 37.011 | 36.6759 |
33+
| $\lambda_{cr}^{(4)}$ | 102.81 | 102.106 |
34+
35+
</div>
36+
37+
| Buckling Mode Shape 1 | Buckling Mode Shape 2 |
38+
| :---: | :---: |
39+
| ![Buckling Mode Shape 1](data/Buckling_Mode_1.png) | ![Buckling Mode Shape 2](data/Buckling_Mode_2.png) |
40+
41+
| Buckling Mode Shape 3 | Buckling Mode Shape 4 |
42+
| :---: | :---: |
43+
| ![Buckling Mode Shape 3](data/Buckling_Mode_3.png) | ![Buckling Mode Shape 4](data/Buckling_Mode_4.png) |
44+
45+
46+
47+
## References
48+
49+
1. Altair Engineering, Inc. (2026). *OS-V: 0080 Buckling of Shells and Composites with Offset*. In Altair OptiStruct Verification Problems. [link](https://help.altair.com/hwsolvers/os/topics/solvers/os/buckling_of_shells_and_composites_with_offset_verification_r.htm)
17 KB
Loading
26.6 KB
Loading
20.9 KB
Loading
33.7 KB
Loading
13.8 KB
Loading
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
{
2+
"problem_data": {
3+
"problem_name": "Buckling_Analysis",
4+
"echo_level": 0,
5+
"parallel_type": "OpenMP",
6+
"start_time": 0,
7+
"end_time": 0.1
8+
},
9+
"solver_settings": {
10+
"model_part_name": "IgaModelPart",
11+
"domain_size": 1,
12+
"echo_level": 1,
13+
"buffer_size": 2,
14+
"analysis_type": "linear",
15+
"model_import_settings": {
16+
"input_type": "use_input_model_part"
17+
},
18+
"material_import_settings": {
19+
"materials_filename": "materials.json"
20+
},
21+
"time_stepping": {
22+
"time_step": 1
23+
},
24+
"rotation_dofs": false,
25+
"reform_dofs_at_each_step": false,
26+
"line_search": false,
27+
"compute_reactions": true,
28+
"clear_storage": false,
29+
"move_mesh_flag": true,
30+
"convergence_criterion": "residual_criterion",
31+
"displacement_relative_tolerance": 0.0001,
32+
"displacement_absolute_tolerance": 1E-09,
33+
"residual_relative_tolerance": 0.0001,
34+
"residual_absolute_tolerance": 1E-09,
35+
"max_iteration": 1,
36+
"builder_and_solver_settings" : {
37+
"advanced_settings": {},
38+
"use_block_builder": true,
39+
"use_lagrange_BS": false
40+
},
41+
"solver_type": "prebuckling",
42+
"buckling_settings" : {
43+
"initial_load_increment" : 1.0,
44+
"small_load_increment" : 0.0005,
45+
"path_following_step" : 0.5,
46+
"convergence_ratio" : 0.05,
47+
"make_matrices_symmetric" : true
48+
},
49+
"eigensolver_settings" : {
50+
"solver_type" : "eigen_eigensystem",
51+
"max_iteration" : 1000,
52+
"tolerance" : 1e-6,
53+
"number_of_eigenvalues" : 5,
54+
"echo_level" : 1
55+
},
56+
"auxiliary_variables_list": [],
57+
"auxiliary_dofs_list": [],
58+
"auxiliary_reaction_list": []
59+
},
60+
"modelers": [
61+
{
62+
"modeler_name": "CadIoModeler",
63+
"Parameters": {
64+
"echo_level": 0,
65+
"cad_model_part_name": "IgaModelPart",
66+
"geometry_file_name": "geometry.cad.json",
67+
"output_geometry_file_name": "Buckling_Analysis_kratos_0.georhino.json"
68+
}
69+
},
70+
{
71+
"modeler_name": "RefinementModeler",
72+
"Parameters": {
73+
"echo_level": 0,
74+
"physics_file_name": "refinements.iga.json"
75+
}
76+
},
77+
{
78+
"modeler_name": "IgaModeler",
79+
"Parameters": {
80+
"echo_level": 0,
81+
"cad_model_part_name": "IgaModelPart",
82+
"analysis_model_part_name": "IgaModelPart",
83+
"physics_file_name": "physics.iga.json"
84+
}
85+
}
86+
],
87+
"processes": {
88+
"additional_processes": [
89+
{
90+
"kratos_module": "IgaApplication",
91+
"python_module": "output_quadrature_domain_process",
92+
"Parameters": {
93+
"output_file_name": "Buckling_Analysis_kratos_shell_1_integrationdomain.json",
94+
"model_part_name": "IgaModelPart.StructuralAnalysis_1",
95+
"output_geometry_elements": true,
96+
"output_geometry_conditions": false
97+
}
98+
},
99+
{
100+
"kratos_module": "IgaApplication",
101+
"python_module": "output_quadrature_domain_process",
102+
"Parameters": {
103+
"output_file_name": "Buckling_Analysis_kratos_support_2_integrationdomain.json",
104+
"model_part_name": "IgaModelPart.Support_2",
105+
"output_geometry_elements": false,
106+
"output_geometry_conditions": true
107+
}
108+
},
109+
{
110+
"kratos_module": "IgaApplication",
111+
"python_module": "output_eigen_values_process",
112+
"Parameters": {
113+
"output_file_name": "Buckling_Analysis_kratos_eigen_values.post.res",
114+
"model_part_name": "IgaModelPart"
115+
}
116+
}
117+
],
118+
"dirichlet_process_list": [
119+
{
120+
"kratos_module": "KratosMultiphysics",
121+
"python_module": "assign_vector_variable_process",
122+
"Parameters": {
123+
"model_part_name": "IgaModelPart.Support_2",
124+
"variable_name": "DISPLACEMENT",
125+
"value": [
126+
0,
127+
0,
128+
0
129+
],
130+
"interval": [
131+
0,
132+
"End"
133+
]
134+
}
135+
},
136+
{
137+
"kratos_module": "KratosMultiphysics",
138+
"python_module": "assign_vector_variable_process",
139+
"Parameters": {
140+
"model_part_name": "IgaModelPart.Support_2_Rotational",
141+
"variable_name": "DISPLACEMENT",
142+
"value": [
143+
0,
144+
0,
145+
0
146+
],
147+
"interval": [
148+
0,
149+
"End"
150+
]
151+
}
152+
}
153+
],
154+
"neumann_process_list": [
155+
{
156+
"kratos_module": "KratosMultiphysics",
157+
"python_module": "assign_vector_variable_to_conditions_process",
158+
"Parameters": {
159+
"model_part_name": "IgaModelPart.Load_3",
160+
"variable_name": "DEAD_LOAD",
161+
"value": [
162+
-5,
163+
0,
164+
0
165+
],
166+
"interval": [
167+
0,
168+
"End"
169+
]
170+
}
171+
}
172+
]
173+
},
174+
"output_processes": {
175+
"output_process_list": []
176+
}
177+
}

0 commit comments

Comments
 (0)