diff --git a/iga/README.md b/iga/README.md
index 11e192c2..582c2188 100644
--- a/iga/README.md
+++ b/iga/README.md
@@ -1,10 +1,19 @@
# Iga Examples
+This folder contains examples related to Isogeometric Analysis in Kratos.
+
+They are realized using the IgaApplication
+
+The Examples are continuously updated and extended
+
## Use Cases
- [External Boundary Circle (NURBS)](https://github.com/KratosMultiphysics/Examples/blob/master/iga/use_cases/external_boundary_circle_with_nurbs/README.md)
- [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)
- [3D Laplacian on an Embedded Cube with SBM](https://github.com/KratosMultiphysics/Examples/blob/master/iga/use_cases/laplacian_3d_cube_sbm/README.md)
## Validation Cases
-
-# Use Cases
+- [Buckling Analysis - Single Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/blob/master/iga/validation/buckling_analysis_single_patch_cantilever_beam/README.md)
+- [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)
+- [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)
+- [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)
+- [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)
diff --git a/iga/validation/README.md b/iga/validation/README.md
index 78c1f8ac..efed75d2 100644
--- a/iga/validation/README.md
+++ b/iga/validation/README.md
@@ -2,3 +2,8 @@
This folder contains the validation cases:
+- [Buckling Analysis - Single Patch - Cantilever Beam](buckling_analysis_single_patch_cantilever_beam/README.md)
+- [Geometric Linear Analysis - Single Patch - Scordelis-Lo Roof](geometric_linear_analysis_single_patch_scordelis_lo_roof/README.md)
+- [Geometric Linear Analysis - Trimmed Patch - Plate with Hole](geometric_linear_analysis_trimmed_patch_plate_with_hole/README.md)
+- [Geometric Non-Linear Analysis - Multi Patch - Cantilever Beam](geometric_nonlinear_analysis_multi_patch_cantilever_beam/README.md)
+- [Geometric Non-Linear Analysis - Single Patch - Cantilever Beam](geometric_nonlinear_analysis_single_patch_cantilever_beam/README.md)
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/README.md b/iga/validation/buckling_analysis_single_patch_cantilever_beam/README.md
new file mode 100644
index 00000000..0175b941
--- /dev/null
+++ b/iga/validation/buckling_analysis_single_patch_cantilever_beam/README.md
@@ -0,0 +1,49 @@
+# Buckling Analysis - Single Patch - Cantilever Beam
+
+**Author:** Aakash Ravichandran
+
+**Kratos version:** 10.2
+
+**Source files:** [Buckling Analysis - Single Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/tree/master/iga/validation/buckling_analysis_single_patch_cantilever_beam/source)
+
+## Problem definition
+
+This example presents the validation of buckling analysis in Kratos with Isogeometric Analysis.
+
+
+

+
+*Structural System [1]*
+
+
+
+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.
+
+## Results
+
+The buckling load factors are shown in table below. The corresponding buckling modes are shown in image below.
+
+
+
+| | Reference | Kratos |
+| :--- | :--- | :--- |
+| $\lambda_{cr}^{(1)}$ | 4.1123 | 4.06977 |
+| $\lambda_{cr}^{(2)}$ | 16.449 | 16.1693 |
+| $\lambda_{cr}^{(3)}$ | 37.011 | 36.6759 |
+| $\lambda_{cr}^{(4)}$ | 102.81 | 102.106 |
+
+
+
+| Buckling Mode Shape 1 | Buckling Mode Shape 2 |
+| :---: | :---: |
+|  |  |
+
+| Buckling Mode Shape 3 | Buckling Mode Shape 4 |
+| :---: | :---: |
+|  |  |
+
+
+
+## References
+
+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)
\ No newline at end of file
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_1.png b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_1.png
new file mode 100644
index 00000000..19580627
Binary files /dev/null and b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_1.png differ
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_2.png b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_2.png
new file mode 100644
index 00000000..53fcb4b5
Binary files /dev/null and b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_2.png differ
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_3.png b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_3.png
new file mode 100644
index 00000000..cb15b1ee
Binary files /dev/null and b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_3.png differ
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_4.png b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_4.png
new file mode 100644
index 00000000..adbfbd9d
Binary files /dev/null and b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Buckling_Mode_4.png differ
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Reference_Model.png b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Reference_Model.png
new file mode 100644
index 00000000..b8584dd8
Binary files /dev/null and b/iga/validation/buckling_analysis_single_patch_cantilever_beam/data/Reference_Model.png differ
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/ProjectParameters.json b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/ProjectParameters.json
new file mode 100644
index 00000000..bc7833c4
--- /dev/null
+++ b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/ProjectParameters.json
@@ -0,0 +1,177 @@
+{
+ "problem_data": {
+ "problem_name": "Buckling_Analysis",
+ "echo_level": 0,
+ "parallel_type": "OpenMP",
+ "start_time": 0,
+ "end_time": 0.1
+ },
+ "solver_settings": {
+ "model_part_name": "IgaModelPart",
+ "domain_size": 1,
+ "echo_level": 1,
+ "buffer_size": 2,
+ "analysis_type": "linear",
+ "model_import_settings": {
+ "input_type": "use_input_model_part"
+ },
+ "material_import_settings": {
+ "materials_filename": "materials.json"
+ },
+ "time_stepping": {
+ "time_step": 1
+ },
+ "rotation_dofs": false,
+ "reform_dofs_at_each_step": false,
+ "line_search": false,
+ "compute_reactions": true,
+ "clear_storage": false,
+ "move_mesh_flag": true,
+ "convergence_criterion": "residual_criterion",
+ "displacement_relative_tolerance": 0.0001,
+ "displacement_absolute_tolerance": 1E-09,
+ "residual_relative_tolerance": 0.0001,
+ "residual_absolute_tolerance": 1E-09,
+ "max_iteration": 1,
+ "builder_and_solver_settings" : {
+ "advanced_settings": {},
+ "use_block_builder": true,
+ "use_lagrange_BS": false
+ },
+ "solver_type": "prebuckling",
+ "buckling_settings" : {
+ "initial_load_increment" : 1.0,
+ "small_load_increment" : 0.0005,
+ "path_following_step" : 0.5,
+ "convergence_ratio" : 0.05,
+ "make_matrices_symmetric" : true
+ },
+ "eigensolver_settings" : {
+ "solver_type" : "eigen_eigensystem",
+ "max_iteration" : 1000,
+ "tolerance" : 1e-6,
+ "number_of_eigenvalues" : 5,
+ "echo_level" : 1
+ },
+ "auxiliary_variables_list": [],
+ "auxiliary_dofs_list": [],
+ "auxiliary_reaction_list": []
+ },
+ "modelers": [
+ {
+ "modeler_name": "CadIoModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "geometry_file_name": "geometry.cad.json",
+ "output_geometry_file_name": "Buckling_Analysis_kratos_0.georhino.json"
+ }
+ },
+ {
+ "modeler_name": "RefinementModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "physics_file_name": "refinements.iga.json"
+ }
+ },
+ {
+ "modeler_name": "IgaModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "analysis_model_part_name": "IgaModelPart",
+ "physics_file_name": "physics.iga.json"
+ }
+ }
+ ],
+ "processes": {
+ "additional_processes": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Buckling_Analysis_kratos_shell_1_integrationdomain.json",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "output_geometry_elements": true,
+ "output_geometry_conditions": false
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Buckling_Analysis_kratos_support_2_integrationdomain.json",
+ "model_part_name": "IgaModelPart.Support_2",
+ "output_geometry_elements": false,
+ "output_geometry_conditions": true
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_eigen_values_process",
+ "Parameters": {
+ "output_file_name": "Buckling_Analysis_kratos_eigen_values.post.res",
+ "model_part_name": "IgaModelPart"
+ }
+ }
+ ],
+ "dirichlet_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ },
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2_Rotational",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ],
+ "neumann_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_to_conditions_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Load_3",
+ "variable_name": "DEAD_LOAD",
+ "value": [
+ -5,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ]
+ },
+ "output_processes": {
+ "output_process_list": []
+ }
+}
\ No newline at end of file
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/geometry.cad.json b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/geometry.cad.json
new file mode 100644
index 00000000..12396c4b
--- /dev/null
+++ b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/geometry.cad.json
@@ -0,0 +1,507 @@
+{
+ "tolerances": {
+ "model_tolerance": 0.001
+ },
+ "version_number": 1,
+ "breps": [
+ {
+ "brep_id": 1,
+ "faces": [
+ {
+ "brep_id": 2,
+ "swapped_surface_normal": false,
+ "surface": {
+ "is_trimmed": true,
+ "is_rational": false,
+ "degrees": [
+ 2,
+ 2
+ ],
+ "knot_vectors": [
+ [
+ 0,
+ 0,
+ 0,
+ 2,
+ 2,
+ 2
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 100,
+ 100,
+ 100
+ ]
+ ],
+ "control_points": [
+ [
+ 1,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 2,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 3,
+ [
+ 0,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 4,
+ [
+ 50,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 5,
+ [
+ 50,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 6,
+ [
+ 50,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 7,
+ [
+ 100,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 8,
+ [
+ 100,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 9,
+ [
+ 100,
+ 2,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "boundary_loops": [
+ {
+ "loop_type": "outer",
+ "trimming_curves": [
+ {
+ "trim_index": 0,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 2,
+ 2
+ ],
+ "active_range": [
+ 0,
+ 2
+ ],
+ "control_points": [
+ [
+ 10,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 11,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 1,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 100,
+ 100
+ ],
+ "active_range": [
+ 0,
+ 100
+ ],
+ "control_points": [
+ [
+ 12,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 13,
+ [
+ 2,
+ 100,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 2,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 2,
+ 2
+ ],
+ "active_range": [
+ 0,
+ 2
+ ],
+ "control_points": [
+ [
+ 14,
+ [
+ 2,
+ 100,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 15,
+ [
+ 0,
+ 100,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 3,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 100,
+ 100
+ ],
+ "active_range": [
+ 0,
+ 100
+ ],
+ "control_points": [
+ [
+ 16,
+ [
+ 0,
+ 100,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 17,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "embedded_loops": [],
+ "embedded_edges": [],
+ "embedded_points": []
+ }
+ ],
+ "edges": [
+ {
+ "brep_id": 3,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 2,
+ 2,
+ 2
+ ],
+ "active_range": [
+ 0,
+ 2
+ ],
+ "control_points": [
+ [
+ 18,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 19,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 20,
+ [
+ 0,
+ 2,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 0,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 4,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 100,
+ 100,
+ 100
+ ],
+ "active_range": [
+ 0,
+ 100
+ ],
+ "control_points": [
+ [
+ 21,
+ [
+ 0,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 22,
+ [
+ 50,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 23,
+ [
+ 100,
+ 2,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 1,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 5,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -2,
+ -2,
+ -2,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -2,
+ 0
+ ],
+ "control_points": [
+ [
+ 24,
+ [
+ 100,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 25,
+ [
+ 100,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 26,
+ [
+ 100,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 2,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 6,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -100,
+ -100,
+ -100,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -100,
+ 0
+ ],
+ "control_points": [
+ [
+ 27,
+ [
+ 100,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 28,
+ [
+ 50,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 29,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 3,
+ "relative_direction": true
+ }
+ ]
+ }
+ ],
+ "vertices": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/kratos_main_iga.py b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/kratos_main_iga.py
new file mode 100644
index 00000000..ad02f37c
--- /dev/null
+++ b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/kratos_main_iga.py
@@ -0,0 +1,11 @@
+import KratosMultiphysics
+import KratosMultiphysics.IgaApplication
+from KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis import StructuralMechanicsAnalysis
+
+if __name__ == "__main__":
+ with open("ProjectParameters.json",'r') as parameter_file:
+ parameters = KratosMultiphysics.Parameters(parameter_file.read())
+
+ model = KratosMultiphysics.Model()
+ simulation = StructuralMechanicsAnalysis(model, parameters)
+ simulation.Run()
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/materials.json b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/materials.json
new file mode 100644
index 00000000..2921201d
--- /dev/null
+++ b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/materials.json
@@ -0,0 +1,21 @@
+{
+ "properties": [
+ {
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "properties_id": 1,
+ "Material": {
+ "name": "Steel",
+ "constitutive_law": {
+ "name": "LinearElasticPlaneStress2DLaw"
+ },
+ "Variables": {
+ "THICKNESS": 1,
+ "YOUNG_MODULUS": 1e6,
+ "POISSON_RATIO": 0,
+ "DENSITY": 1
+ },
+ "Tables": {}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/physics.iga.json b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/physics.iga.json
new file mode 100644
index 00000000..29387ed4
--- /dev/null
+++ b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/physics.iga.json
@@ -0,0 +1,50 @@
+{
+ "element_condition_list": [
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "GeometrySurface",
+ "iga_model_part": "StructuralAnalysis_1",
+ "parameters": {
+ "type": "element",
+ "name": "Shell3pElement",
+ "shape_function_derivatives_order": 3
+ }
+ },
+ {
+ "brep_id": 2,
+ "geometry_type": "GeometrySurfaceNodes",
+ "iga_model_part": "Support_2",
+ "parameters": {
+ "local_parameters": [
+ -1,
+ 0
+ ]
+ }
+ },
+ {
+ "brep_id": 2,
+ "geometry_type": "GeometrySurfaceVariationNodes",
+ "iga_model_part": "Support_2_Rotational",
+ "parameters": {
+ "local_parameters": [
+ -1,
+ 0
+ ]
+ }
+ },
+ {
+ "brep_ids": [
+ 5
+ ],
+ "geometry_type": "SurfaceEdge",
+ "iga_model_part": "Load_3",
+ "parameters": {
+ "type": "condition",
+ "name": "LoadCondition",
+ "shape_function_derivatives_order": 2
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/refinements.iga.json b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/refinements.iga.json
new file mode 100644
index 00000000..411ffe53
--- /dev/null
+++ b/iga/validation/buckling_analysis_single_patch_cantilever_beam/source/refinements.iga.json
@@ -0,0 +1,17 @@
+{
+ "refinements": [
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "NurbsSurface",
+ "model_part_name": "IgaModelPart",
+ "parameters": {
+ "insert_nb_per_span_u": 4,
+ "insert_nb_per_span_v": 20,
+ "increase_degree_u": 2,
+ "increase_degree_v": 2
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/README.md b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/README.md
new file mode 100644
index 00000000..c6a1b78c
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/README.md
@@ -0,0 +1,38 @@
+# Geometric Linear Analysis - Single Patch - Scordelis-Lo Roof
+
+**Author:** Aakash Ravichandran
+
+**Kratos version:** 10.4
+
+**Source files:** [Geometric Linear Analysis - Single Patch - Scordelis-Lo Roof](https://github.com/KratosMultiphysics/Examples/tree/master/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source)
+
+
+## Problem definition
+
+This example presents the validation of Scordelis-Lo Roof with Shell3pElement in geometric linear analysis [1].
+
+
+

+
+*Structural System [1]*
+
+
+Load = 90 per unit
+
+The roof is modeled using single NURBS patch with the Shell3pElement. The CAD model is constructed with single span b-splines of curve degree 2 in both axis of the roof. Additional refinement is applied in Kratos, by increasing the curve degree to 4 and inserting 6 knots in each direction of the roof.
+
+
+## Results
+
+The displacement at mid of the free edge as -0.3068 units, which is in agreement with the reference value of -0.3024 units.
+
+
+

+
+*Displacement Result*
+
+
+
+## References
+
+1. Josef M. Kiendl, *Isogeometric Analysis and Shape Optimal Design of Shell Structures*, PhD Dissertation, pp. 51–52. [Link](https://mediatum.ub.tum.de/doc/1002634/464162.pdf)
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/data/Model.png b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/data/Model.png
new file mode 100644
index 00000000..241f82aa
Binary files /dev/null and b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/data/Model.png differ
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/data/Reference_Model.png b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/data/Reference_Model.png
new file mode 100644
index 00000000..1a7ce338
Binary files /dev/null and b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/data/Reference_Model.png differ
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/ProjectParameters.json b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/ProjectParameters.json
new file mode 100644
index 00000000..67002d6a
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/ProjectParameters.json
@@ -0,0 +1,176 @@
+{
+ "problem_data": {
+ "problem_name": "Scordelis_Lo_roof_single_patch_linear_analysis",
+ "echo_level": 0,
+ "parallel_type": "OpenMP",
+ "start_time": 0,
+ "end_time": 0.1
+ },
+ "solver_settings": {
+ "model_part_name": "IgaModelPart",
+ "domain_size": 1,
+ "echo_level": 1,
+ "buffer_size": 2,
+ "analysis_type": "linear",
+ "model_import_settings": {
+ "input_type": "use_input_model_part"
+ },
+ "material_import_settings": {
+ "materials_filename": "materials.json"
+ },
+ "time_stepping": {
+ "time_step": 1
+ },
+ "rotation_dofs": false,
+ "reform_dofs_at_each_step": false,
+ "line_search": false,
+ "compute_reactions": true,
+ "block_builder": true,
+ "clear_storage": false,
+ "move_mesh_flag": true,
+ "convergence_criterion": "residual_criterion",
+ "displacement_relative_tolerance": 0.0001,
+ "displacement_absolute_tolerance": 1E-09,
+ "residual_relative_tolerance": 0.0001,
+ "residual_absolute_tolerance": 1E-09,
+ "max_iteration": 1,
+ "solver_type": "static",
+ "linear_solver_settings": {
+ "solver_type": "LinearSolversApplication.sparse_lu",
+ "max_iteration": 500,
+ "tolerance": 1E-09,
+ "scaling": false,
+ "verbosity": 1
+ },
+ "auxiliary_variables_list": [],
+ "auxiliary_dofs_list": [],
+ "auxiliary_reaction_list": []
+ },
+ "modelers": [
+ {
+ "modeler_name": "CadIoModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "geometry_file_name": "geometry.cad.json",
+ "output_geometry_file_name": "Scordelis_Lo_roof_single_patch_linear_analysis_kratos_0.georhino.json"
+ }
+ },
+ {
+ "modeler_name": "RefinementModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "physics_file_name": "refinements.iga.json"
+ }
+ },
+ {
+ "modeler_name": "IgaModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "analysis_model_part_name": "IgaModelPart",
+ "physics_file_name": "physics.iga.json"
+ }
+ }
+ ],
+ "processes": {
+ "additional_processes": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Scordelis_Lo_roof_single_patch_linear_analysis_kratos_shell_1_integrationdomain.json",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "output_geometry_elements": true,
+ "output_geometry_conditions": false
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Scordelis_Lo_roof_single_patch_linear_analysis_kratos_support_2_integrationdomain.json",
+ "model_part_name": "IgaModelPart.Support_2",
+ "output_geometry_elements": false,
+ "output_geometry_conditions": true
+ }
+ }
+ ],
+ "dirichlet_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ null,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ],
+ "neumann_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_to_conditions_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Load_3",
+ "variable_name": "DEAD_LOAD",
+ "value": [
+ 0,
+ 0,
+ -90
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ]
+ },
+ "output_processes": {
+ "output_process_list": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [
+ "DISPLACEMENT"
+ ],
+ "integration_point_results": [
+ "CAUCHY_STRESS",
+ "PK2_STRESS",
+ "INTERNAL_MOMENT"
+ ],
+ "output_file_name": "Scordelis_Lo_roof_single_patch_linear_analysis_kratos_shell_1.post.res",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [],
+ "integration_point_results": [
+ "REACTION"
+ ],
+ "output_file_name": "Scordelis_Lo_roof_single_patch_linear_analysis_kratos_support_2.post.res",
+ "model_part_name": "IgaModelPart.Support_2",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/geometry.cad.json b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/geometry.cad.json
new file mode 100644
index 00000000..5c064ad4
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/geometry.cad.json
@@ -0,0 +1,507 @@
+{
+ "tolerances": {
+ "model_tolerance": 0.001
+ },
+ "version_number": 1,
+ "breps": [
+ {
+ "brep_id": 1,
+ "faces": [
+ {
+ "brep_id": 2,
+ "swapped_surface_normal": false,
+ "surface": {
+ "is_trimmed": true,
+ "is_rational": true,
+ "degrees": [
+ 2,
+ 2
+ ],
+ "knot_vectors": [
+ [
+ 0,
+ 0,
+ 0,
+ 34.906585039886586,
+ 34.906585039886586,
+ 34.906585039886586
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 50,
+ 50,
+ 50
+ ]
+ ],
+ "control_points": [
+ [
+ 1,
+ [
+ 16.069690242163485,
+ 0,
+ 19.151111077974452,
+ 1
+ ]
+ ],
+ [
+ 2,
+ [
+ 4.6377383332166693E-15,
+ 0,
+ 32.635182233306963,
+ 0.766044443118978
+ ]
+ ],
+ [
+ 3,
+ [
+ -16.069690242163485,
+ 0,
+ 19.151111077974456,
+ 1
+ ]
+ ],
+ [
+ 4,
+ [
+ 16.069690242163489,
+ 25,
+ 19.151111077974456,
+ 1
+ ]
+ ],
+ [
+ 5,
+ [
+ 6.9566074998250028E-15,
+ 24.999999999999996,
+ 32.635182233306956,
+ 0.76604444311897812
+ ]
+ ],
+ [
+ 6,
+ [
+ -16.069690242163478,
+ 25,
+ 19.151111077974456,
+ 1
+ ]
+ ],
+ [
+ 7,
+ [
+ 16.069690242163489,
+ 50,
+ 19.151111077974452,
+ 1
+ ]
+ ],
+ [
+ 8,
+ [
+ 9.2754766664333386E-15,
+ 50,
+ 32.635182233306963,
+ 0.766044443118978
+ ]
+ ],
+ [
+ 9,
+ [
+ -16.069690242163482,
+ 50,
+ 19.151111077974456,
+ 1
+ ]
+ ]
+ ]
+ },
+ "boundary_loops": [
+ {
+ "loop_type": "outer",
+ "trimming_curves": [
+ {
+ "trim_index": 0,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 34.906585039886586,
+ 34.906585039886586
+ ],
+ "active_range": [
+ 0,
+ 34.906585039886586
+ ],
+ "control_points": [
+ [
+ 10,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 11,
+ [
+ 34.906585039886586,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 1,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 50,
+ 50
+ ],
+ "active_range": [
+ 0,
+ 50
+ ],
+ "control_points": [
+ [
+ 12,
+ [
+ 34.906585039886586,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 13,
+ [
+ 34.906585039886586,
+ 50,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 2,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 34.906585039886586,
+ 34.906585039886586
+ ],
+ "active_range": [
+ 0,
+ 34.906585039886586
+ ],
+ "control_points": [
+ [
+ 14,
+ [
+ 34.906585039886586,
+ 50,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 15,
+ [
+ 0,
+ 50,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 3,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 50,
+ 50
+ ],
+ "active_range": [
+ 0,
+ 50
+ ],
+ "control_points": [
+ [
+ 16,
+ [
+ 0,
+ 50,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 17,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "embedded_loops": [],
+ "embedded_edges": [],
+ "embedded_points": []
+ }
+ ],
+ "edges": [
+ {
+ "brep_id": 3,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 34.906585039886586,
+ 34.906585039886586,
+ 34.906585039886586
+ ],
+ "active_range": [
+ 0,
+ 34.906585039886586
+ ],
+ "control_points": [
+ [
+ 18,
+ [
+ 16.069690242163485,
+ 0,
+ 19.151111077974452,
+ 1
+ ]
+ ],
+ [
+ 19,
+ [
+ 4.6377383332166693E-15,
+ 0,
+ 32.635182233306963,
+ 0.766044443118978
+ ]
+ ],
+ [
+ 20,
+ [
+ -16.069690242163485,
+ 0,
+ 19.151111077974456,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 0,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 4,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 50,
+ 50,
+ 50
+ ],
+ "active_range": [
+ 0,
+ 50
+ ],
+ "control_points": [
+ [
+ 21,
+ [
+ -16.069690242163485,
+ 0,
+ 19.151111077974456,
+ 1
+ ]
+ ],
+ [
+ 22,
+ [
+ -16.069690242163478,
+ 25,
+ 19.151111077974456,
+ 1
+ ]
+ ],
+ [
+ 23,
+ [
+ -16.069690242163482,
+ 50,
+ 19.151111077974456,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 1,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 5,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -34.906585039886586,
+ -34.906585039886586,
+ -34.906585039886586,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -34.906585039886586,
+ 0
+ ],
+ "control_points": [
+ [
+ 24,
+ [
+ -16.069690242163482,
+ 50,
+ 19.151111077974456,
+ 1
+ ]
+ ],
+ [
+ 25,
+ [
+ 9.2754766664333386E-15,
+ 50,
+ 32.635182233306963,
+ 0.766044443118978
+ ]
+ ],
+ [
+ 26,
+ [
+ 16.069690242163489,
+ 50,
+ 19.151111077974452,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 2,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 6,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -50,
+ -50,
+ -50,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -50,
+ 0
+ ],
+ "control_points": [
+ [
+ 27,
+ [
+ 16.069690242163489,
+ 50,
+ 19.151111077974452,
+ 1
+ ]
+ ],
+ [
+ 28,
+ [
+ 16.069690242163489,
+ 25,
+ 19.151111077974456,
+ 1
+ ]
+ ],
+ [
+ 29,
+ [
+ 16.069690242163485,
+ 0,
+ 19.151111077974452,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 3,
+ "relative_direction": true
+ }
+ ]
+ }
+ ],
+ "vertices": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/kratos_main_iga.py b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/kratos_main_iga.py
new file mode 100644
index 00000000..ad02f37c
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/kratos_main_iga.py
@@ -0,0 +1,11 @@
+import KratosMultiphysics
+import KratosMultiphysics.IgaApplication
+from KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis import StructuralMechanicsAnalysis
+
+if __name__ == "__main__":
+ with open("ProjectParameters.json",'r') as parameter_file:
+ parameters = KratosMultiphysics.Parameters(parameter_file.read())
+
+ model = KratosMultiphysics.Model()
+ simulation = StructuralMechanicsAnalysis(model, parameters)
+ simulation.Run()
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/materials.json b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/materials.json
new file mode 100644
index 00000000..16044f3c
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/materials.json
@@ -0,0 +1,21 @@
+{
+ "properties": [
+ {
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "properties_id": 1,
+ "Material": {
+ "name": "Steel",
+ "constitutive_law": {
+ "name": "LinearElasticPlaneStress2DLaw"
+ },
+ "Variables": {
+ "THICKNESS": 0.25,
+ "YOUNG_MODULUS": 4.32e8,
+ "POISSON_RATIO": 0,
+ "DENSITY": 1
+ },
+ "Tables": {}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/physics.iga.json b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/physics.iga.json
new file mode 100644
index 00000000..df33dd7d
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/physics.iga.json
@@ -0,0 +1,50 @@
+{
+ "element_condition_list": [
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "GeometrySurface",
+ "iga_model_part": "StructuralAnalysis_1",
+ "parameters": {
+ "type": "element",
+ "name": "Shell3pElement",
+ "shape_function_derivatives_order": 3
+ }
+ },
+ {
+ "brep_id": 2,
+ "geometry_type": "GeometrySurfaceNodes",
+ "iga_model_part": "Support_2",
+ "parameters": {
+ "local_parameters": [
+ -1,
+ 0
+ ]
+ }
+ },
+ {
+ "brep_id": 2,
+ "geometry_type": "GeometrySurfaceNodes",
+ "iga_model_part": "Support_2",
+ "parameters": {
+ "local_parameters": [
+ -1,
+ 1
+ ]
+ }
+ },
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "GeometrySurface",
+ "iga_model_part": "Load_3",
+ "parameters": {
+ "type": "condition",
+ "name": "LoadCondition",
+ "shape_function_derivatives_order": 2
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/refinements.iga.json b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/refinements.iga.json
new file mode 100644
index 00000000..1e34aadf
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_single_patch_scordelis_lo_roof/source/refinements.iga.json
@@ -0,0 +1,17 @@
+{
+ "refinements": [
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "NurbsSurface",
+ "model_part_name": "IgaModelPart",
+ "parameters": {
+ "insert_nb_per_span_u": 5,
+ "insert_nb_per_span_v": 5,
+ "increase_degree_u": 2,
+ "increase_degree_v": 2
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/README.md b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/README.md
new file mode 100644
index 00000000..9e00a587
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/README.md
@@ -0,0 +1,36 @@
+# Geometric Linear Analysis - Trimmed Patch - Plate with Hole
+
+**Author:** Aakash Ravichandran
+
+**Kratos version:** 10.4
+
+**Source files:** [Geometric Linear Analysis - Trimmed Patch - Plate with Hole](https://github.com/KratosMultiphysics/Examples/tree/master/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source)
+
+
+## Problem definition
+
+This example presents the validation of geometric linear analysis for a square plate with a circular hole subjected to bending.
+
+
+

+
+*Structural System [1]*
+
+
+The plate is modeled using single trimmed NURBS patch with the Shell3pElement. The CAD model is constructed with single span b-splines of curve degree 2 in both axis of the plate. Additional refinement is applied in Kratos, by increasing the curve degree to 4 and inserting 15 knots in each direction of the plate.
+
+
+## Results
+
+The displacement at point A is obtained as -6.3511 units, which is in agreement with the reference value of -6.3499 units.
+
+
+

+
+*Displacement Result*
+
+
+
+## References
+
+1. Michael Breitenberger, *CAD-Integrated Design and Analysis of Shell Structures*, PhD Dissertation, pp. 122–125. [Link](https://mediatum.ub.tum.de/doc/1311417/93268.pdf)
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/data/Model.png b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/data/Model.png
new file mode 100644
index 00000000..8e9272f3
Binary files /dev/null and b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/data/Model.png differ
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/data/Reference_Model.png b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/data/Reference_Model.png
new file mode 100644
index 00000000..de9b22cf
Binary files /dev/null and b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/data/Reference_Model.png differ
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/ProjectParameters.json b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/ProjectParameters.json
new file mode 100644
index 00000000..c59b9f7d
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/ProjectParameters.json
@@ -0,0 +1,193 @@
+{
+ "problem_data": {
+ "problem_name": "Plate_with_hole_trimmed_patch_linear",
+ "echo_level": 0,
+ "parallel_type": "OpenMP",
+ "start_time": 0,
+ "end_time": 0.1
+ },
+ "solver_settings": {
+ "model_part_name": "IgaModelPart",
+ "domain_size": 1,
+ "echo_level": 1,
+ "buffer_size": 2,
+ "analysis_type": "linear",
+ "model_import_settings": {
+ "input_type": "use_input_model_part"
+ },
+ "material_import_settings": {
+ "materials_filename": "materials.json"
+ },
+ "time_stepping": {
+ "time_step": 1
+ },
+ "rotation_dofs": false,
+ "reform_dofs_at_each_step": false,
+ "line_search": false,
+ "compute_reactions": true,
+ "block_builder": true,
+ "clear_storage": false,
+ "move_mesh_flag": true,
+ "convergence_criterion": "residual_criterion",
+ "displacement_relative_tolerance": 0.0001,
+ "displacement_absolute_tolerance": 1E-09,
+ "residual_relative_tolerance": 0.0001,
+ "residual_absolute_tolerance": 1E-09,
+ "max_iteration": 1,
+ "solver_type": "static",
+ "linear_solver_settings": {
+ "solver_type": "LinearSolversApplication.sparse_lu",
+ "max_iteration": 500,
+ "tolerance": 1E-09,
+ "scaling": false,
+ "verbosity": 1
+ },
+ "auxiliary_variables_list": [],
+ "auxiliary_dofs_list": [],
+ "auxiliary_reaction_list": []
+ },
+ "modelers": [
+ {
+ "modeler_name": "CadIoModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "geometry_file_name": "geometry.cad.json",
+ "output_geometry_file_name": "Plate_with_hole_trimmed_patch_linear_kratos_0.georhino.json"
+ }
+ },
+ {
+ "modeler_name": "RefinementModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "physics_file_name": "refinements.iga.json"
+ }
+ },
+ {
+ "modeler_name": "IgaModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "analysis_model_part_name": "IgaModelPart",
+ "physics_file_name": "physics.iga.json"
+ }
+ }
+ ],
+ "processes": {
+ "additional_processes": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Plate_with_hole_trimmed_patch_linear_kratos_shell_1_integrationdomain.json",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "output_geometry_elements": true,
+ "output_geometry_conditions": false
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Plate_with_hole_trimmed_patch_linear_kratos_support_2_integrationdomain.json",
+ "model_part_name": "IgaModelPart.Support_2",
+ "output_geometry_elements": false,
+ "output_geometry_conditions": true
+ }
+ }
+ ],
+ "dirichlet_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ },
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2_Rotational",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ],
+ "neumann_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_to_conditions_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Load_3",
+ "variable_name": "DEAD_LOAD",
+ "value": [
+ 0,
+ 0,
+ -10
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ]
+ },
+ "output_processes": {
+ "output_process_list": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [
+ "DISPLACEMENT"
+ ],
+ "integration_point_results": [
+ "CAUCHY_STRESS",
+ "PK2_STRESS",
+ "INTERNAL_MOMENT"
+ ],
+ "output_file_name": "Plate_with_hole_trimmed_patch_linear_kratos_shell_1.post.res",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [],
+ "integration_point_results": [
+ "REACTION"
+ ],
+ "output_file_name": "Plate_with_hole_trimmed_patch_linear_kratos_support_2.post.res",
+ "model_part_name": "IgaModelPart.Support_2",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/geometry.cad.json b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/geometry.cad.json
new file mode 100644
index 00000000..013f8013
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/geometry.cad.json
@@ -0,0 +1,1013 @@
+{
+ "tolerances": {
+ "model_tolerance": 0.001
+ },
+ "version_number": 1,
+ "breps": [
+ {
+ "brep_id": 1,
+ "faces": [
+ {
+ "brep_id": 2,
+ "swapped_surface_normal": false,
+ "surface": {
+ "is_trimmed": true,
+ "is_rational": false,
+ "degrees": [
+ 2,
+ 2
+ ],
+ "knot_vectors": [
+ [
+ 0,
+ 0,
+ 0,
+ 10,
+ 10,
+ 10
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 10,
+ 10,
+ 10
+ ]
+ ],
+ "control_points": [
+ [
+ 1,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 2,
+ [
+ 5,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 3,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 4,
+ [
+ 0,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 5,
+ [
+ 5,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 6,
+ [
+ 10,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 7,
+ [
+ 0,
+ 10,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 8,
+ [
+ 5,
+ 10,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 9,
+ [
+ 10,
+ 10,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "boundary_loops": [
+ {
+ "loop_type": "outer",
+ "trimming_curves": [
+ {
+ "trim_index": 0,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 10,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 11,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 1,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 12,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 13,
+ [
+ 10,
+ 10,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 2,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 14,
+ [
+ 10,
+ 10,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 15,
+ [
+ 0,
+ 10,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 3,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 16,
+ [
+ 0,
+ 10,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 17,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "loop_type": "inner",
+ "trimming_curves": [
+ {
+ "trim_index": 4,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 3,
+ "knot_vector": [
+ -18.849555921538759,
+ -18.849555921538759,
+ -18.849555921538759,
+ -18.849555921538759,
+ -16.493361431346411,
+ -16.493361431346411,
+ -16.493361431346411,
+ -14.137166941154067,
+ -14.137166941154067,
+ -14.137166941154067,
+ -11.780972450961722,
+ -11.780972450961722,
+ -11.780972450961722,
+ -9.42477796076938,
+ -9.42477796076938,
+ -9.42477796076938,
+ -7.0685834705770336,
+ -7.0685834705770336,
+ -7.0685834705770336,
+ -4.7123889803846906,
+ -4.7123889803846906,
+ -4.7123889803846906,
+ -2.3561944901923453,
+ -2.3561944901923453,
+ -2.3561944901923453,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -18.849555921538759,
+ 0
+ ],
+ "control_points": [
+ [
+ 18,
+ [
+ 8,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 19,
+ [
+ 8,
+ 4.20435053048137,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 20,
+ [
+ 7.6839294789037442,
+ 3.4412887917844608,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 21,
+ [
+ 7.1213203435596428,
+ 2.8786796564403581,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 22,
+ [
+ 6.55871120821554,
+ 2.3160705210962544,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 23,
+ [
+ 5.7956494695186365,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 24,
+ [
+ 5,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 25,
+ [
+ 4.204350530481368,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 26,
+ [
+ 3.44128879178446,
+ 2.3160705210962531,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 27,
+ [
+ 2.8786796564403563,
+ 2.8786796564403572,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 28,
+ [
+ 2.3160705210962544,
+ 3.4412887917844595,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 29,
+ [
+ 2,
+ 4.2043505304813706,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 30,
+ [
+ 2,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 31,
+ [
+ 2,
+ 5.795649469518632,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 32,
+ [
+ 2.316070521096254,
+ 6.55871120821554,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 33,
+ [
+ 2.8786796564403581,
+ 7.1213203435596428,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 34,
+ [
+ 3.4412887917844626,
+ 7.6839294789037469,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 35,
+ [
+ 4.2043505304813671,
+ 8,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 36,
+ [
+ 5,
+ 8,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 37,
+ [
+ 5.795649469518624,
+ 8,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 38,
+ [
+ 6.5587112082155441,
+ 7.6839294789037424,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 39,
+ [
+ 7.1213203435596428,
+ 7.1213203435596428,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 40,
+ [
+ 7.683929478903746,
+ 6.5587112082155405,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 41,
+ [
+ 8,
+ 5.7956494695186294,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 42,
+ [
+ 8,
+ 5,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "embedded_loops": [],
+ "embedded_edges": [],
+ "embedded_points": []
+ }
+ ],
+ "edges": [
+ {
+ "brep_id": 3,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 10,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 43,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 44,
+ [
+ 5,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 45,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 0,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 4,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 10,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 46,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 47,
+ [
+ 10,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 48,
+ [
+ 10,
+ 10,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 1,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 5,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -10,
+ -10,
+ -10,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -10,
+ 0
+ ],
+ "control_points": [
+ [
+ 49,
+ [
+ 10,
+ 10,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 50,
+ [
+ 5,
+ 10,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 51,
+ [
+ 0,
+ 10,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 2,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 6,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -10,
+ -10,
+ -10,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -10,
+ 0
+ ],
+ "control_points": [
+ [
+ 52,
+ [
+ 0,
+ 10,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 53,
+ [
+ 0,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 54,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 3,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 7,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -18.849555921538759,
+ -18.849555921538759,
+ -18.849555921538759,
+ -14.137166941154069,
+ -14.137166941154069,
+ -9.42477796076938,
+ -9.42477796076938,
+ -4.71238898038469,
+ -4.71238898038469,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -18.849555921538759,
+ 0
+ ],
+ "control_points": [
+ [
+ 55,
+ [
+ 8,
+ 4.9999999999999991,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 56,
+ [
+ 7.9999999999999982,
+ 1.9999999999999996,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 57,
+ [
+ 4.9999999999999991,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 58,
+ [
+ 1.9999999999999996,
+ 2,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 59,
+ [
+ 2,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 60,
+ [
+ 2,
+ 8,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 61,
+ [
+ 5,
+ 8,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 62,
+ [
+ 8,
+ 8,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 63,
+ [
+ 8,
+ 4.9999999999999991,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 4,
+ "relative_direction": true
+ }
+ ]
+ }
+ ],
+ "vertices": []
+ },
+ {
+ "brep_id": 9,
+ "faces": [],
+ "edges": [
+ {
+ "brep_id": 8,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 4.71238898038469,
+ 4.71238898038469,
+ 9.42477796076938,
+ 9.42477796076938,
+ 14.137166941154069,
+ 14.137166941154069,
+ 18.849555921538759,
+ 18.849555921538759,
+ 18.849555921538759
+ ],
+ "active_range": [
+ 0,
+ 18.849555921538759
+ ],
+ "control_points": [
+ [
+ 64,
+ [
+ 8,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 65,
+ [
+ 8,
+ 8,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 66,
+ [
+ 5,
+ 8,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 67,
+ [
+ 2,
+ 8,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 68,
+ [
+ 2,
+ 5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 69,
+ [
+ 1.9999999999999996,
+ 2,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 70,
+ [
+ 4.9999999999999991,
+ 2,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 71,
+ [
+ 7.9999999999999982,
+ 1.9999999999999996,
+ 0,
+ 0.70710678118654757
+ ]
+ ],
+ [
+ 72,
+ [
+ 8,
+ 5,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [],
+ "embedded_points": [],
+ "embedded_edges": []
+ }
+ ],
+ "vertices": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/kratos_main_iga.py b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/kratos_main_iga.py
new file mode 100644
index 00000000..ad02f37c
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/kratos_main_iga.py
@@ -0,0 +1,11 @@
+import KratosMultiphysics
+import KratosMultiphysics.IgaApplication
+from KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis import StructuralMechanicsAnalysis
+
+if __name__ == "__main__":
+ with open("ProjectParameters.json",'r') as parameter_file:
+ parameters = KratosMultiphysics.Parameters(parameter_file.read())
+
+ model = KratosMultiphysics.Model()
+ simulation = StructuralMechanicsAnalysis(model, parameters)
+ simulation.Run()
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/materials.json b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/materials.json
new file mode 100644
index 00000000..319af392
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/materials.json
@@ -0,0 +1,21 @@
+{
+ "properties": [
+ {
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "properties_id": 1,
+ "Material": {
+ "name": "Steel",
+ "constitutive_law": {
+ "name": "LinearElasticPlaneStress2DLaw"
+ },
+ "Variables": {
+ "THICKNESS": 0.1,
+ "YOUNG_MODULUS": 10e6,
+ "POISSON_RATIO": 0,
+ "DENSITY": 0
+ },
+ "Tables": {}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/physics.iga.json b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/physics.iga.json
new file mode 100644
index 00000000..0eca05fb
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/physics.iga.json
@@ -0,0 +1,50 @@
+{
+ "element_condition_list": [
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "GeometrySurface",
+ "iga_model_part": "StructuralAnalysis_1",
+ "parameters": {
+ "type": "element",
+ "name": "Shell3pElement",
+ "shape_function_derivatives_order": 3
+ }
+ },
+ {
+ "brep_id": 2,
+ "geometry_type": "GeometrySurfaceNodes",
+ "iga_model_part": "Support_2",
+ "parameters": {
+ "local_parameters": [
+ 0,
+ -1
+ ]
+ }
+ },
+ {
+ "brep_id": 2,
+ "geometry_type": "GeometrySurfaceVariationNodes",
+ "iga_model_part": "Support_2_Rotational",
+ "parameters": {
+ "local_parameters": [
+ 0,
+ -1
+ ]
+ }
+ },
+ {
+ "brep_ids": [
+ 4
+ ],
+ "geometry_type": "SurfaceEdge",
+ "iga_model_part": "Load_3",
+ "parameters": {
+ "type": "condition",
+ "name": "LoadCondition",
+ "shape_function_derivatives_order": 2
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/refinements.iga.json b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/refinements.iga.json
new file mode 100644
index 00000000..395afc34
--- /dev/null
+++ b/iga/validation/geometric_linear_analysis_trimmed_patch_plate_with_hole/source/refinements.iga.json
@@ -0,0 +1,17 @@
+{
+ "refinements": [
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "NurbsSurface",
+ "model_part_name": "IgaModelPart",
+ "parameters": {
+ "insert_nb_per_span_u": 15,
+ "insert_nb_per_span_v": 15,
+ "increase_degree_u": 2,
+ "increase_degree_v": 2
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/README.md b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/README.md
new file mode 100644
index 00000000..d3d193c0
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/README.md
@@ -0,0 +1,45 @@
+# Geometric Non-Linear Analysis - Multi Patch - Cantilever Beam
+
+**Author:** Aakash Ravichandran
+
+**Kratos version:** 10.4
+
+**Source files:** [Geometric Non-Linear Analysis - Multi Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/tree/master/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source)
+
+## Problem definition
+
+This example presents the validation of geometric non-linear analysis of a cantilever beam subjected to a end shear force [1].
+
+
+

+
+*Structural System [1]*
+
+
+
+The cantilever beam is modeled using two connected NURBS patches with the Shell3pElement. The CAD model of both the patches is constructed with single span B-spline surfaces. The first patch has an curve degree of 2 in both axes and the second patch has an curve degree of 3 in the longitudinal direction and 2 in the transverse direction. Additional refinement is applied in Kratos by increasing the curve degree by 1 in both directions for both patches. Furthermore, h-refinement is applied by inserting 4 knots longitudinally and 3 knots transversely in the first patch, alongside 12 knots longitudinally and 4 knots transversely in the second patch. Hence on the edge where two surfaces gets connected, in the first patch number of elements is 4 and in 2nd patch the number of elements is 5. Therefore they are nonconforming patches.
+
+## Results
+
+The load-displacement curve obtained at the free end is shown in [figure](data/LoadStep_vs_Displacement_XZ.png). This shows a good agreement with the reference [1] - Figure 2a and Table 2.
+
+
+

+
+*Displacement Result*
+
+
+
+
+
+| Reference Force vs Displacement [1] | Force vs Displacement - From Kratos |
+| :---: | :---: |
+|

|

|
+
+
+
+
+
+## References
+
+1. Sze, K. Y., Liu, X. H., & Lo, S. H. (2004). Popular benchmark problems for geometric nonlinear analysis of shells. *Finite Elements in Analysis and Design*, 40(11), 1551–1569. https://doi.org/10.1016/j.finel.2003.11.001
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/LoadStep_vs_Displacement_XZ.png b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/LoadStep_vs_Displacement_XZ.png
new file mode 100644
index 00000000..6f1d41b8
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/LoadStep_vs_Displacement_XZ.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Model.png b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Model.png
new file mode 100644
index 00000000..d7976f05
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Model.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Reference_LoadStep_vs_Displacement_XZ.png b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Reference_LoadStep_vs_Displacement_XZ.png
new file mode 100644
index 00000000..a0800bd3
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Reference_LoadStep_vs_Displacement_XZ.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Reference_Model.png b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Reference_Model.png
new file mode 100644
index 00000000..ace07021
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/data/Reference_Model.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/ProjectParameters.json b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/ProjectParameters.json
new file mode 100644
index 00000000..cb26fcc7
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/ProjectParameters.json
@@ -0,0 +1,251 @@
+{
+ "problem_data": {
+ "problem_name": "Cantilever_beam_geometric_nonlinear_analysis",
+ "echo_level": 0,
+ "parallel_type": "OpenMP",
+ "start_time": 0,
+ "end_time": 1
+ },
+ "solver_settings": {
+ "model_part_name": "IgaModelPart",
+ "domain_size": 1,
+ "echo_level": 1,
+ "buffer_size": 2,
+ "analysis_type": "non_linear",
+ "model_import_settings": {
+ "input_type": "use_input_model_part"
+ },
+ "material_import_settings": {
+ "materials_filename": "materials.json"
+ },
+ "time_stepping": {
+ "time_step": 0.1
+ },
+ "rotation_dofs": false,
+ "reform_dofs_at_each_step": false,
+ "line_search": false,
+ "compute_reactions": true,
+ "block_builder": true,
+ "clear_storage": false,
+ "move_mesh_flag": true,
+ "convergence_criterion": "residual_criterion",
+ "displacement_relative_tolerance": 0.0001,
+ "displacement_absolute_tolerance": 0.0001,
+ "residual_relative_tolerance": 0.0001,
+ "residual_absolute_tolerance": 0.0001,
+ "max_iteration": 100,
+ "solver_type": "static",
+ "linear_solver_settings": {
+ "solver_type": "LinearSolversApplication.sparse_lu",
+ "max_iteration": 500,
+ "tolerance": 1E-09,
+ "scaling": false,
+ "verbosity": 1
+ },
+ "auxiliary_variables_list": [],
+ "auxiliary_dofs_list": [],
+ "auxiliary_reaction_list": []
+ },
+ "modelers": [
+ {
+ "modeler_name": "CadIoModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "geometry_file_name": "geometry.cad.json",
+ "output_geometry_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_0.georhino.json"
+ }
+ },
+ {
+ "modeler_name": "RefinementModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "physics_file_name": "refinements.iga.json"
+ }
+ },
+ {
+ "modeler_name": "IgaModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "analysis_model_part_name": "IgaModelPart",
+ "physics_file_name": "physics.iga.json"
+ }
+ }
+ ],
+ "processes": {
+ "additional_processes": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_shell_1_integrationdomain.json",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "output_geometry_elements": true,
+ "output_geometry_conditions": false
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_support_2_integrationdomain.json",
+ "model_part_name": "IgaModelPart.Support_2",
+ "output_geometry_elements": false,
+ "output_geometry_conditions": true
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_coupling_4_integrationdomain.json",
+ "model_part_name": "IgaModelPart.Coupling_4",
+ "output_geometry_elements": false,
+ "output_geometry_conditions": false,
+ "output_coupling_geometry_conditions": true
+ }
+ }
+ ],
+ "dirichlet_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ },
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2_Rotational",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "assign_vector_variable_and_constraints_to_conditions_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Coupling_4",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "assign_vector_variable_and_constraints_to_conditions_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Coupling_4",
+ "variable_name": "ROTATION",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ],
+ "neumann_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_to_conditions_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Load_3",
+ "variable_name": "DEAD_LOAD",
+ "value": [
+ 0,
+ 0,
+ "(-4*t)*1.0"
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ]
+ },
+ "output_processes": {
+ "output_process_list": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [
+ "DISPLACEMENT"
+ ],
+ "integration_point_results": [
+ "CAUCHY_STRESS",
+ "PK2_STRESS",
+ "INTERNAL_MOMENT"
+ ],
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_shell_1.post.res",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [],
+ "integration_point_results": [
+ "REACTION"
+ ],
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_support_2.post.res",
+ "model_part_name": "IgaModelPart.Support_2",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [],
+ "integration_point_results": [],
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_coupling_4.post.res",
+ "model_part_name": "IgaModelPart.Coupling_4",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/geometry.cad.json b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/geometry.cad.json
new file mode 100644
index 00000000..540f5118
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/geometry.cad.json
@@ -0,0 +1,1190 @@
+{
+ "tolerances": {
+ "model_tolerance": 0.001
+ },
+ "version_number": 1,
+ "breps": [
+ {
+ "brep_id": 1,
+ "faces": [
+ {
+ "brep_id": 3,
+ "swapped_surface_normal": false,
+ "surface": {
+ "is_trimmed": true,
+ "is_rational": false,
+ "degrees": [
+ 2,
+ 2
+ ],
+ "knot_vectors": [
+ [
+ 0,
+ 0,
+ 0,
+ 2,
+ 2,
+ 2
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1
+ ]
+ ],
+ "control_points": [
+ [
+ 3,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 4,
+ [
+ 1,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 5,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 6,
+ [
+ 0,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 7,
+ [
+ 1,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 8,
+ [
+ 2,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 9,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 10,
+ [
+ 1,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 11,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "boundary_loops": [
+ {
+ "loop_type": "outer",
+ "trimming_curves": [
+ {
+ "trim_index": 0,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 2,
+ 2
+ ],
+ "active_range": [
+ 0,
+ 2
+ ],
+ "control_points": [
+ [
+ 12,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 13,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 1,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 14,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 15,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 2,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 2,
+ 2
+ ],
+ "active_range": [
+ 0,
+ 2
+ ],
+ "control_points": [
+ [
+ 16,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 17,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 3,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 18,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 19,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "embedded_loops": [],
+ "embedded_edges": [
+ {
+ "trim_index": 6,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 1,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 2,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ],
+ "embedded_points": []
+ }
+ ],
+ "edges": [
+ {
+ "brep_id": 5,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 2,
+ 2,
+ 2
+ ],
+ "active_range": [
+ 0,
+ 2
+ ],
+ "control_points": [
+ [
+ 20,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 21,
+ [
+ 1,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 22,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 3,
+ "trim_index": 0,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 6,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 23,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 24,
+ [
+ 2,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 25,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 3,
+ "trim_index": 1,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 7,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -2,
+ -2,
+ -2,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -2,
+ 0
+ ],
+ "control_points": [
+ [
+ 26,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 27,
+ [
+ 1,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 28,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 3,
+ "trim_index": 2,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 8,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -1,
+ 0
+ ],
+ "control_points": [
+ [
+ 29,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 30,
+ [
+ 0,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 31,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 3,
+ "trim_index": 3,
+ "relative_direction": true
+ }
+ ]
+ }
+ ],
+ "vertices": []
+ },
+ {
+ "brep_id": 2,
+ "faces": [
+ {
+ "brep_id": 4,
+ "swapped_surface_normal": false,
+ "surface": {
+ "is_trimmed": true,
+ "is_rational": false,
+ "degrees": [
+ 3,
+ 2
+ ],
+ "knot_vectors": [
+ [
+ 0,
+ 0,
+ 0,
+ 0,
+ 8,
+ 8,
+ 8,
+ 8
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1
+ ]
+ ],
+ "control_points": [
+ [
+ 34,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 35,
+ [
+ 4.6666666666666661,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 36,
+ [
+ 7.33333333333333,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 37,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 38,
+ [
+ 2,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 39,
+ [
+ 4.6666666666666661,
+ 0.49999999999999983,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 40,
+ [
+ 7.3333333333333313,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 41,
+ [
+ 10,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 42,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 43,
+ [
+ 4.6666666666666661,
+ 0.99999999999999967,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 44,
+ [
+ 7.33333333333333,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 45,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "boundary_loops": [
+ {
+ "loop_type": "outer",
+ "trimming_curves": [
+ {
+ "trim_index": 0,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 8,
+ 8
+ ],
+ "active_range": [
+ 0,
+ 8
+ ],
+ "control_points": [
+ [
+ 46,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 47,
+ [
+ 8,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 1,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 48,
+ [
+ 8,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 49,
+ [
+ 8,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 2,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 8,
+ 8
+ ],
+ "active_range": [
+ 0,
+ 8
+ ],
+ "control_points": [
+ [
+ 50,
+ [
+ 8,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 51,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 3,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 52,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 53,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "embedded_loops": [],
+ "embedded_edges": [
+ {
+ "trim_index": 6,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 32,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 33,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ],
+ "embedded_points": []
+ }
+ ],
+ "edges": [
+ {
+ "brep_id": 9,
+ "3d_curve": {
+ "degree": 3,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 8,
+ 8,
+ 8,
+ 8
+ ],
+ "active_range": [
+ 0,
+ 8
+ ],
+ "control_points": [
+ [
+ 54,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 55,
+ [
+ 4.6666666666666661,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 56,
+ [
+ 7.33333333333333,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 57,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 4,
+ "trim_index": 0,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 10,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 58,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 59,
+ [
+ 10,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 60,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 4,
+ "trim_index": 1,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 11,
+ "3d_curve": {
+ "degree": 3,
+ "knot_vector": [
+ -8,
+ -8,
+ -8,
+ -8,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -8,
+ 0
+ ],
+ "control_points": [
+ [
+ 61,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 62,
+ [
+ 7.33333333333333,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 63,
+ [
+ 4.6666666666666661,
+ 0.99999999999999967,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 64,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 4,
+ "trim_index": 2,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 12,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -1,
+ 0
+ ],
+ "control_points": [
+ [
+ 65,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 66,
+ [
+ 2,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 67,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 4,
+ "trim_index": 3,
+ "relative_direction": true
+ }
+ ]
+ }
+ ],
+ "vertices": []
+ },
+ {
+ "brep_id": 14,
+ "faces": [],
+ "edges": [
+ {
+ "brep_id": 13,
+ "3d_curve": {
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 69,
+ [
+ 2,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 70,
+ [
+ 2,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 3,
+ "trim_index": 6,
+ "relative_direction": true
+ },
+ {
+ "brep_id": 4,
+ "trim_index": 6,
+ "relative_direction": true
+ }
+ ]
+ }
+ ],
+ "vertices": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/kratos_main_iga.py b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/kratos_main_iga.py
new file mode 100644
index 00000000..ad02f37c
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/kratos_main_iga.py
@@ -0,0 +1,11 @@
+import KratosMultiphysics
+import KratosMultiphysics.IgaApplication
+from KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis import StructuralMechanicsAnalysis
+
+if __name__ == "__main__":
+ with open("ProjectParameters.json",'r') as parameter_file:
+ parameters = KratosMultiphysics.Parameters(parameter_file.read())
+
+ model = KratosMultiphysics.Model()
+ simulation = StructuralMechanicsAnalysis(model, parameters)
+ simulation.Run()
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/materials.json b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/materials.json
new file mode 100644
index 00000000..10ba8bef
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/materials.json
@@ -0,0 +1,31 @@
+{
+ "properties": [
+ {
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "properties_id": 1,
+ "Material": {
+ "name": "Steel",
+ "constitutive_law": {
+ "name": "LinearElasticPlaneStress2DLaw"
+ },
+ "Variables": {
+ "THICKNESS": 0.1,
+ "YOUNG_MODULUS": 1.2e6,
+ "POISSON_RATIO": 0,
+ "DENSITY": 1
+ },
+ "Tables": {}
+ }
+ },
+ {
+ "model_part_name": "IgaModelPart.Coupling_4",
+ "properties_id": 4,
+ "Material": {
+ "Variables": {
+ "PENALTY_FACTOR": 10000000000.001
+ },
+ "Tables": {}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/physics.iga.json b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/physics.iga.json
new file mode 100644
index 00000000..0fe14761
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/physics.iga.json
@@ -0,0 +1,64 @@
+{
+ "element_condition_list": [
+ {
+ "brep_ids": [
+ 3,
+ 4
+ ],
+ "geometry_type": "GeometrySurface",
+ "iga_model_part": "StructuralAnalysis_1",
+ "parameters": {
+ "type": "element",
+ "name": "Shell3pElement",
+ "shape_function_derivatives_order": 3
+ }
+ },
+ {
+ "brep_id": 3,
+ "geometry_type": "GeometrySurfaceNodes",
+ "iga_model_part": "Support_2",
+ "parameters": {
+ "local_parameters": [
+ 0,
+ -1
+ ]
+ }
+ },
+ {
+ "brep_id": 3,
+ "geometry_type": "GeometrySurfaceVariationNodes",
+ "iga_model_part": "Support_2_Rotational",
+ "parameters": {
+ "local_parameters": [
+ 0,
+ -1
+ ]
+ }
+ },
+ {
+ "brep_ids": [
+ 10
+ ],
+ "geometry_type": "SurfaceEdge",
+ "iga_model_part": "Load_3",
+ "parameters": {
+ "type": "condition",
+ "name": "LoadCondition",
+ "shape_function_derivatives_order": 2
+ }
+ },
+ {
+ "brep_ids": [
+ 13
+ ],
+ "geometry_type": "SurfaceEdgeSurfaceEdge",
+ "iga_model_part": "Coupling_4",
+ "parameters": {
+ "type": "condition",
+ "name": "CouplingPenaltyCondition",
+ "shape_function_derivatives_order": 2,
+ "variables": []
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/refinements.iga.json b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/refinements.iga.json
new file mode 100644
index 00000000..576934a9
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_multi_patch_cantilever_beam/source/refinements.iga.json
@@ -0,0 +1,30 @@
+{
+ "refinements": [
+ {
+ "brep_ids": [
+ 3
+ ],
+ "geometry_type": "NurbsSurface",
+ "model_part_name": "IgaModelPart",
+ "parameters": {
+ "insert_nb_per_span_u": 4,
+ "insert_nb_per_span_v": 3,
+ "increase_degree_u": 1,
+ "increase_degree_v": 1
+ }
+ },
+ {
+ "brep_ids": [
+ 4
+ ],
+ "geometry_type": "NurbsSurface",
+ "model_part_name": "IgaModelPart",
+ "parameters": {
+ "insert_nb_per_span_u": 12,
+ "insert_nb_per_span_v": 4,
+ "increase_degree_u": 1,
+ "increase_degree_v": 1
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/README.md b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/README.md
new file mode 100644
index 00000000..cbba6538
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/README.md
@@ -0,0 +1,43 @@
+# Geometric Non-Linear Analysis - Single Patch - Cantilever Beam
+
+**Author:** Aakash Ravichandran
+
+**Kratos version:** 10.4
+
+**Source files:** [Geometric Non-Linear Analysis - Single Patch - Cantilever Beam](https://github.com/KratosMultiphysics/Examples/tree/master/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source)
+
+## Problem definition
+
+This example presents the validation of geometric non-linear analysis of a cantilever beam subjected to a end shear force [1].
+
+
+

+
+*Structural System [1]*
+
+
+
+The cantilever beam is modeled using a single NURB patch with the Shell3pElement. The CAD model of the patch is constructed with single span B-spline surface. The patch has an curve degree of 3 in the longitudinal direction and 2 in the transverse direction. Additional refinement is applied in Kratos by increasing the curve degree by 1 in both directions for both patches. Furthermore, h-refinement is applied by inserting 10 knots longitudinally and 3 knots transversely in the patch.
+
+## Results
+
+The load-displacement curve obtained at the free end is shown in [figure](data/LoadStep_vs_Displacement_XZ.png). This shows a good agreement with the reference [1] - Figure 2a and Table 2.
+
+
+

+
+*Displacement Result*
+
+
+
+
+| Reference Force vs Displacement [1] | Force vs Displacement - From Kratos |
+| :---: | :---: |
+|

|

|
+
+
+
+
+## References
+
+1. Sze, K. Y., Liu, X. H., & Lo, S. H. (2004). Popular benchmark problems for geometric nonlinear analysis of shells. *Finite Elements in Analysis and Design*, 40(11), 1551–1569. https://doi.org/10.1016/j.finel.2003.11.001
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/LoadStep_vs_Displacement_XZ.png b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/LoadStep_vs_Displacement_XZ.png
new file mode 100644
index 00000000..d0718005
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/LoadStep_vs_Displacement_XZ.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Model.png b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Model.png
new file mode 100644
index 00000000..5d01d7ea
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Model.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Reference_LoadStep_vs_Displacement_XZ.png b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Reference_LoadStep_vs_Displacement_XZ.png
new file mode 100644
index 00000000..a0800bd3
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Reference_LoadStep_vs_Displacement_XZ.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Reference_Model.png b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Reference_Model.png
new file mode 100644
index 00000000..ace07021
Binary files /dev/null and b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/data/Reference_Model.png differ
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/ProjectParameters.json b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/ProjectParameters.json
new file mode 100644
index 00000000..d35dd4e5
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/ProjectParameters.json
@@ -0,0 +1,193 @@
+{
+ "problem_data": {
+ "problem_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos",
+ "echo_level": 0,
+ "parallel_type": "OpenMP",
+ "start_time": 0,
+ "end_time": 0.95
+ },
+ "solver_settings": {
+ "model_part_name": "IgaModelPart",
+ "domain_size": 1,
+ "echo_level": 1,
+ "buffer_size": 2,
+ "analysis_type": "non_linear",
+ "model_import_settings": {
+ "input_type": "use_input_model_part"
+ },
+ "material_import_settings": {
+ "materials_filename": "materials.json"
+ },
+ "time_stepping": {
+ "time_step": 0.1
+ },
+ "rotation_dofs": false,
+ "reform_dofs_at_each_step": false,
+ "line_search": false,
+ "compute_reactions": true,
+ "block_builder": true,
+ "clear_storage": false,
+ "move_mesh_flag": true,
+ "convergence_criterion": "residual_criterion",
+ "displacement_relative_tolerance": 0.0001,
+ "displacement_absolute_tolerance": 0.0001,
+ "residual_relative_tolerance": 0.0001,
+ "residual_absolute_tolerance": 0.0001,
+ "max_iteration": 100,
+ "solver_type": "static",
+ "linear_solver_settings": {
+ "solver_type": "LinearSolversApplication.sparse_lu",
+ "max_iteration": 500,
+ "tolerance": 1E-09,
+ "scaling": false,
+ "verbosity": 1
+ },
+ "auxiliary_variables_list": [],
+ "auxiliary_dofs_list": [],
+ "auxiliary_reaction_list": []
+ },
+ "modelers": [
+ {
+ "modeler_name": "CadIoModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "geometry_file_name": "geometry.cad.json",
+ "output_geometry_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_0.georhino.json"
+ }
+ },
+ {
+ "modeler_name": "RefinementModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "physics_file_name": "refinements.iga.json"
+ }
+ },
+ {
+ "modeler_name": "IgaModeler",
+ "Parameters": {
+ "echo_level": 0,
+ "cad_model_part_name": "IgaModelPart",
+ "analysis_model_part_name": "IgaModelPart",
+ "physics_file_name": "physics.iga.json"
+ }
+ }
+ ],
+ "processes": {
+ "additional_processes": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_shell_1_integrationdomain.json",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "output_geometry_elements": true,
+ "output_geometry_conditions": false
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "output_quadrature_domain_process",
+ "Parameters": {
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_support_2_integrationdomain.json",
+ "model_part_name": "IgaModelPart.Support_2",
+ "output_geometry_elements": false,
+ "output_geometry_conditions": true
+ }
+ }
+ ],
+ "dirichlet_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ },
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Support_2_Rotational",
+ "variable_name": "DISPLACEMENT",
+ "value": [
+ 0,
+ 0,
+ 0
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ],
+ "neumann_process_list": [
+ {
+ "kratos_module": "KratosMultiphysics",
+ "python_module": "assign_vector_variable_to_conditions_process",
+ "Parameters": {
+ "model_part_name": "IgaModelPart.Load_3",
+ "variable_name": "DEAD_LOAD",
+ "value": [
+ 0,
+ 0,
+ "(-4*t)*1.0"
+ ],
+ "interval": [
+ 0,
+ "End"
+ ]
+ }
+ }
+ ]
+ },
+ "output_processes": {
+ "output_process_list": [
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [
+ "DISPLACEMENT"
+ ],
+ "integration_point_results": [
+ "CAUCHY_STRESS",
+ "PK2_STRESS",
+ "INTERNAL_MOMENT"
+ ],
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_shell_1.post.res",
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ },
+ {
+ "kratos_module": "IgaApplication",
+ "python_module": "iga_output_process",
+ "Parameters": {
+ "nodal_results": [],
+ "integration_point_results": [
+ "REACTION"
+ ],
+ "output_file_name": "Cantilever_beam_geometric_nonlinear_analysis_kratos_support_2.post.res",
+ "model_part_name": "IgaModelPart.Support_2",
+ "file_label": "step",
+ "output_control_type": "time",
+ "output_frequency": 0.1
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/geometry.cad.json b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/geometry.cad.json
new file mode 100644
index 00000000..e08c0896
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/geometry.cad.json
@@ -0,0 +1,558 @@
+{
+ "tolerances": {
+ "model_tolerance": 0.001
+ },
+ "version_number": 1,
+ "breps": [
+ {
+ "brep_id": 1,
+ "faces": [
+ {
+ "brep_id": 2,
+ "swapped_surface_normal": false,
+ "surface": {
+ "is_trimmed": true,
+ "is_rational": false,
+ "degrees": [
+ 3,
+ 2
+ ],
+ "knot_vectors": [
+ [
+ 0,
+ 0,
+ 0,
+ 0,
+ 10,
+ 10,
+ 10,
+ 10
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1
+ ]
+ ],
+ "control_points": [
+ [
+ 1,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 2,
+ [
+ 3.3333333333333339,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 3,
+ [
+ 6.6666666666666661,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 4,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 5,
+ [
+ 0,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 6,
+ [
+ 3.3333333333333339,
+ 0.50000000000000011,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 7,
+ [
+ 6.666666666666667,
+ 0.49999999999999994,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 8,
+ [
+ 10,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 9,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 10,
+ [
+ 3.3333333333333339,
+ 1.0000000000000002,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 11,
+ [
+ 6.6666666666666661,
+ 0.99999999999999989,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 12,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "boundary_loops": [
+ {
+ "loop_type": "outer",
+ "trimming_curves": [
+ {
+ "trim_index": 0,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 13,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 14,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 1,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 15,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 2,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 17,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 18,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ },
+ {
+ "trim_index": 3,
+ "curve_direction": true,
+ "parameter_curve": {
+ "is_rational": false,
+ "degree": 1,
+ "knot_vector": [
+ 0,
+ 0,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 19,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 20,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "embedded_loops": [],
+ "embedded_edges": [],
+ "embedded_points": []
+ }
+ ],
+ "edges": [
+ {
+ "brep_id": 3,
+ "3d_curve": {
+ "degree": 3,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 10,
+ 10,
+ 10,
+ 10
+ ],
+ "active_range": [
+ 0,
+ 10
+ ],
+ "control_points": [
+ [
+ 21,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 22,
+ [
+ 3.3333333333333339,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 23,
+ [
+ 6.6666666666666661,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 24,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 0,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 4,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 1
+ ],
+ "active_range": [
+ 0,
+ 1
+ ],
+ "control_points": [
+ [
+ 25,
+ [
+ 10,
+ 0,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 26,
+ [
+ 10,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 27,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 1,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 5,
+ "3d_curve": {
+ "degree": 3,
+ "knot_vector": [
+ -10,
+ -10,
+ -10,
+ -10,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -10,
+ 0
+ ],
+ "control_points": [
+ [
+ 28,
+ [
+ 10,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 29,
+ [
+ 6.6666666666666661,
+ 0.99999999999999989,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 30,
+ [
+ 3.3333333333333339,
+ 1.0000000000000002,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 31,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 2,
+ "relative_direction": true
+ }
+ ]
+ },
+ {
+ "brep_id": 6,
+ "3d_curve": {
+ "degree": 2,
+ "knot_vector": [
+ -1,
+ -1,
+ -1,
+ 0,
+ 0,
+ 0
+ ],
+ "active_range": [
+ -1,
+ 0
+ ],
+ "control_points": [
+ [
+ 32,
+ [
+ 0,
+ 1,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 33,
+ [
+ 0,
+ 0.5,
+ 0,
+ 1
+ ]
+ ],
+ [
+ 34,
+ [
+ 0,
+ 0,
+ 0,
+ 1
+ ]
+ ]
+ ]
+ },
+ "topology": [
+ {
+ "brep_id": 2,
+ "trim_index": 3,
+ "relative_direction": true
+ }
+ ]
+ }
+ ],
+ "vertices": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/kratos_main_iga.py b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/kratos_main_iga.py
new file mode 100644
index 00000000..ad02f37c
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/kratos_main_iga.py
@@ -0,0 +1,11 @@
+import KratosMultiphysics
+import KratosMultiphysics.IgaApplication
+from KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis import StructuralMechanicsAnalysis
+
+if __name__ == "__main__":
+ with open("ProjectParameters.json",'r') as parameter_file:
+ parameters = KratosMultiphysics.Parameters(parameter_file.read())
+
+ model = KratosMultiphysics.Model()
+ simulation = StructuralMechanicsAnalysis(model, parameters)
+ simulation.Run()
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/materials.json b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/materials.json
new file mode 100644
index 00000000..f209ffaf
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/materials.json
@@ -0,0 +1,21 @@
+{
+ "properties": [
+ {
+ "model_part_name": "IgaModelPart.StructuralAnalysis_1",
+ "properties_id": 1,
+ "Material": {
+ "name": "Steel",
+ "constitutive_law": {
+ "name": "LinearElasticPlaneStress2DLaw"
+ },
+ "Variables": {
+ "THICKNESS": 0.1,
+ "YOUNG_MODULUS": 1.2e6,
+ "POISSON_RATIO": 0,
+ "DENSITY": 1
+ },
+ "Tables": {}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/physics.iga.json b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/physics.iga.json
new file mode 100644
index 00000000..379ae664
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/physics.iga.json
@@ -0,0 +1 @@
+{"element_condition_list":[{"brep_ids":[2],"geometry_type":"GeometrySurface","iga_model_part":"StructuralAnalysis_1","parameters":{"type":"element","name":"Shell3pElement","shape_function_derivatives_order":3}},{"brep_id":2,"geometry_type":"GeometrySurfaceNodes","iga_model_part":"Support_2","parameters":{"local_parameters":[0,-1]}},{"brep_id":2,"geometry_type":"GeometrySurfaceVariationNodes","iga_model_part":"Support_2_Rotational","parameters":{"local_parameters":[0,-1]}},{"brep_ids":[4],"geometry_type":"SurfaceEdge","iga_model_part":"Load_3","parameters":{"type":"condition","name":"LoadCondition","shape_function_derivatives_order":2}}]}
diff --git a/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/refinements.iga.json b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/refinements.iga.json
new file mode 100644
index 00000000..98eb75fb
--- /dev/null
+++ b/iga/validation/geometric_nonlinear_analysis_single_patch_cantilever_beam/source/refinements.iga.json
@@ -0,0 +1,17 @@
+{
+ "refinements": [
+ {
+ "brep_ids": [
+ 2
+ ],
+ "geometry_type": "NurbsSurface",
+ "model_part_name": "IgaModelPart",
+ "parameters": {
+ "insert_nb_per_span_u": 10,
+ "insert_nb_per_span_v": 3,
+ "increase_degree_u": 1,
+ "increase_degree_v": 1
+ }
+ }
+ ]
+}
\ No newline at end of file