diff --git a/structural_mechanics/README.md b/structural_mechanics/README.md
index 89e5b5bd..3bba9a8c 100644
--- a/structural_mechanics/README.md
+++ b/structural_mechanics/README.md
@@ -9,6 +9,7 @@ The Examples are continously updated and extended
## Validation
- [Beam Eigenvalue Analysis](validation/beam_eigenvalue_analysis/README.md)
- [Beam Non-Linear Cantilever](validation/beam_nonlinear_cantilever/README.md)
+- [Beam Non-Linear 3D Cantilever (Bathe & Bolourchi)](validation/beam_nonlinear_cantilever3D_bathe/README.md)
- [Beam Shallow-angled Structure](validation/beam_shallow_angled_structure/README.md)
- [Beam Roll Up](validation/beam_roll_up/README.md)
- [Truss Two-Bar-Truss Snapthrough](validation/truss_snap_through/README.md)
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/README.md b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/README.md
new file mode 100644
index 00000000..95c45b8d
--- /dev/null
+++ b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/README.md
@@ -0,0 +1,46 @@
+# Non-Linear cantilever beam (Bathe & Bolourchi)
+
+**Author:** Carlos Lázaro
+
+**Kratos version:** 8.1
+
+**Source files:** [Beam Non-Linear Cantilever 3D Bathe](https://github.com/KratosMultiphysics/Examples/tree/master/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source)
+
+## Problem definition
+
+This is a classical test for coupled 3D bending, torsion and traction of a curved cantilever subjected to a transverse load. The cantilever has circular shape of radius 100 and spans 45 deg. The cross section is square (1 x 1).
+The transverse end load _F_ increases up to a magnitude of 600. The load has fixed direction throughout the whole process.
+
+
+
+_Bathe & Bolourchi cantilever: static system_
+
+According to [1], _E_ = 1.0 E+07, _ν_ = 0 and _A_ = 1.0
+_Iy_ = _Iz_ = 0.0833333
+The value of _It_ is not given in the original article. The best approximation to the results of the article is achieved taking _It_ = _I0_ = 0.1666667
+
+## Results
+
+The 8-element discretization follows the original example in reference [1]. The load is applied in 60 steps with a load-control strategy. The following figure shows the (non-scaled) final configuration corresponding to the load of magnitude 600.
+
+
+
+_Bathe & Bolourchi cantilever: Non-scaled deformed shape for the total load (8 elements, tip load F = 600 applied in 60 steps)_
+
+The equilibrium paths corresponding to the tip displacements are plotted following the style of [1]:
+
+
+
+_Bathe & Bolourchi cantilever: Equilibrium paths for each component of the tip displacement in non-dimensional coordinates_
+
+The comparison between the computed displacements of the tip and those given in [1] is:
+
+| | Computed | Reference [1]
+|--|----------|---------------
+|u | -13.4890 | -13.4
+|v | -23.5318 | -23.5
+|w | 53.4998 | 53.4
+
+## References
+
+[1] K.-J. Bathe, S. Bolourchi. Large displacement analysis of three-dimensional beam structures. _International Journal for Numerical Methods in Engineering_, 1979, vol. 14, pp. 961-986.
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/deformed_configuration.png b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/deformed_configuration.png
new file mode 100644
index 00000000..572016d7
Binary files /dev/null and b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/deformed_configuration.png differ
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/displacement_graph.png b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/displacement_graph.png
new file mode 100644
index 00000000..ab25bc4f
Binary files /dev/null and b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/displacement_graph.png differ
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/initial_configuration.png b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/initial_configuration.png
new file mode 100644
index 00000000..44cf9f0c
Binary files /dev/null and b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/data/initial_configuration.png differ
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/Bathe_cantilever.mdpa b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/Bathe_cantilever.mdpa
new file mode 100644
index 00000000..677b755f
--- /dev/null
+++ b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/Bathe_cantilever.mdpa
@@ -0,0 +1,97 @@
+Begin ModelPartData
+// VARIABLE_NAME value
+End ModelPartData
+
+Begin Properties 0
+End Properties
+Begin Nodes
+ 1 29.2893218813 70.7106781187 0.0000000000
+ 2 22.6989546637 63.4393284164 0.0000000000
+ 3 16.8530387697 55.5570233020 0.0000000000
+ 4 11.8078735652 47.1396736826 0.0000000000
+ 5 7.6120467489 38.2683432365 0.0000000000
+ 6 4.3059664268 29.0284677254 0.0000000000
+ 7 1.9214719597 19.5090322016 0.0000000000
+ 8 0.4815273328 9.8017140330 0.0000000000
+ 9 0.0000000000 0.0000000000 0.0000000000
+End Nodes
+
+
+Begin Elements CrBeamElement3D2N// GUI group identifier: Cantilever
+ 1 0 9 8
+ 2 0 8 7
+ 3 0 7 6
+ 4 0 6 5
+ 5 0 5 4
+ 6 0 4 3
+ 7 0 3 2
+ 8 0 2 1
+End Elements
+
+Begin ElementalData LOCAL_AXIS_2 // Groups: Cantilever
+ 1 [3]( -0.9987954592, 0.0490676131, -0.0000000000)
+ 2 [3]( -0.9891765692, 0.1467300751, -0.0000000000)
+ 3 [3]( -0.9700312575, 0.2429801629, -0.0000000000)
+ 4 [3]( -0.9415439701, 0.3368901193, -0.0000000000)
+ 5 [3]( -0.9039894139, 0.4275548382, -0.0000000000)
+ 6 [3]( -0.8577286010, 0.5141027592, -0.0000000000)
+ 7 [3]( -0.8032072910, 0.5956996287, -0.0000000000)
+ 8 [3]( -0.7409510842, 0.6715590003, -0.0000000000)
+End ElementalData
+
+Begin Conditions PointLoadCondition3D1N// GUI group identifier: End
+ 1 0 1
+End Conditions
+
+Begin SubModelPart Parts_Beam_Cantilever // Group Cantilever // Subtree Parts_Beam
+ Begin SubModelPartNodes
+ 1
+ 2
+ 3
+ 4
+ 6
+ 7
+ 8
+ 9
+ End SubModelPartNodes
+ Begin SubModelPartElements
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ End SubModelPartElements
+ Begin SubModelPartConditions
+ End SubModelPartConditions
+End SubModelPart
+Begin SubModelPart DISPLACEMENT_Support // Group Support // Subtree DISPLACEMENT
+ Begin SubModelPartNodes
+ 9
+ End SubModelPartNodes
+ Begin SubModelPartElements
+ End SubModelPartElements
+ Begin SubModelPartConditions
+ End SubModelPartConditions
+End SubModelPart
+Begin SubModelPart ROTATION_Support // Group Support // Subtree ROTATION
+ Begin SubModelPartNodes
+ 9
+ End SubModelPartNodes
+ Begin SubModelPartElements
+ End SubModelPartElements
+ Begin SubModelPartConditions
+ End SubModelPartConditions
+End SubModelPart
+Begin SubModelPart PointLoad3D_End // Group End // Subtree PointLoad3D
+ Begin SubModelPartNodes
+ 1
+ End SubModelPartNodes
+ Begin SubModelPartElements
+ End SubModelPartElements
+ Begin SubModelPartConditions
+ 1
+ End SubModelPartConditions
+End SubModelPart
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/MainKratos.py b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/MainKratos.py
new file mode 100644
index 00000000..dcb8f3e6
--- /dev/null
+++ b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/MainKratos.py
@@ -0,0 +1,69 @@
+import sys
+import time
+
+import KratosMultiphysics
+from KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis import StructuralMechanicsAnalysis
+
+"""
+For user-scripting it is intended that a new class is derived
+from StructuralMechanicsAnalysis to do modifications
+"""
+
+class StructuralMechanicsAnalysisWithFlush(StructuralMechanicsAnalysis):
+
+ def __init__(self, model, project_parameters, flush_frequency=10.0):
+ super().__init__(model, project_parameters)
+ self.flush_frequency = flush_frequency
+ self.last_flush = time.time()
+ sys.stdout.flush()
+
+ ### Output options ###
+ ######################
+
+ # Printing displacements
+ self.output_displacements_flag = True
+ self.output_displacement_model_part_names = ["Structure.PointLoad3D_End"]
+
+ def Initialize(self):
+ super().Initialize()
+ sys.stdout.flush()
+ KratosMultiphysics.Logger.Flush()
+
+ def FinalizeSolutionStep(self):
+ super().FinalizeSolutionStep()
+
+ if self.parallel_type == "OpenMP":
+ now = time.time()
+ if now - self.last_flush > self.flush_frequency:
+ sys.stdout.flush()
+ self.last_flush = now
+
+ def Finalize(self):
+ super().Finalize()
+
+ # Printing nodal displacements
+ if self.output_displacements_flag:
+ print('')
+ print('*********************')
+ for sub_model_part_name in self.output_displacement_model_part_names:
+ print("MODEL PART: {0}".format(sub_model_part_name))
+ print('NODAL DISPLACEMENTS')
+ for node in self.model[sub_model_part_name].Nodes:
+ displacement = node.GetSolutionStepValue(KratosMultiphysics.DISPLACEMENT)
+ DX = displacement[0]
+ DY = displacement[1]
+ DZ = displacement[2]
+ print ("Node {0}: DX = {1:.4f} DY = {2:.4f} DZ = {3:.4f}".format(node.Id, DX, DY, DZ))
+ print('*********************')
+ else:
+ pass
+
+
+if __name__ == "__main__":
+
+ with open("ProjectParameters.json", 'r') as parameter_file:
+ parameters = KratosMultiphysics.Parameters(parameter_file.read())
+
+ global_model = KratosMultiphysics.Model()
+ simulation = StructuralMechanicsAnalysisWithFlush(global_model, parameters)
+ simulation.Run()
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/ProjectParameters.json b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/ProjectParameters.json
new file mode 100644
index 00000000..445a4b6b
--- /dev/null
+++ b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/ProjectParameters.json
@@ -0,0 +1,128 @@
+{
+ "problem_data" : {
+ "problem_name" : "Bathe_cantilever",
+ "parallel_type" : "OpenMP",
+ "echo_level" : 1,
+ "start_time" : 0.0,
+ "end_time" : 1.0
+ },
+ "solver_settings" : {
+ "solver_type" : "Static",
+ "model_part_name" : "Structure",
+ "domain_size" : 3,
+ "echo_level" : 0,
+ "analysis_type" : "non_linear",
+ "model_import_settings" : {
+ "input_type" : "mdpa",
+ "input_filename" : "Bathe_cantilever"
+ },
+ "material_import_settings" : {
+ "materials_filename" : "StructuralMaterials.json"
+ },
+ "time_stepping" : {
+ "time_step" : 0.0166666667
+ },
+ "line_search" : false,
+ "convergence_criterion" : "residual_criterion",
+ "displacement_relative_tolerance" : 0.0001,
+ "displacement_absolute_tolerance" : 1e-6,
+ "residual_relative_tolerance" : 0.0001,
+ "residual_absolute_tolerance" : 1e-6,
+ "max_iteration" : 10,
+ "rotation_dofs" : true,
+ "volumetric_strain_dofs" : false
+ },
+ "processes" : {
+ "constraints_process_list" : [{
+ "python_module" : "assign_vector_variable_process",
+ "kratos_module" : "KratosMultiphysics",
+ "process_name" : "AssignVectorVariableProcess",
+ "Parameters" : {
+ "model_part_name" : "Structure.DISPLACEMENT_Support",
+ "variable_name" : "DISPLACEMENT",
+ "interval" : [0.0,"End"],
+ "constrained" : [true,true,true],
+ "value" : [0.0,0.0,0.0]
+ }
+ },{
+ "python_module" : "assign_vector_variable_process",
+ "kratos_module" : "KratosMultiphysics",
+ "process_name" : "AssignVectorVariableProcess",
+ "Parameters" : {
+ "model_part_name" : "Structure.ROTATION_Support",
+ "variable_name" : "ROTATION",
+ "interval" : [0.0,"End"],
+ "constrained" : [true,true,true],
+ "value" : [0.0,0.0,0.0]
+ }
+ }],
+ "loads_process_list" : [{
+ "python_module" : "assign_vector_by_direction_to_condition_process",
+ "kratos_module" : "KratosMultiphysics",
+ "check" : "DirectorVectorNonZero direction",
+ "process_name" : "AssignVectorByDirectionToConditionProcess",
+ "Parameters" : {
+ "model_part_name" : "Structure.PointLoad3D_End",
+ "variable_name" : "POINT_LOAD",
+ "interval" : [0.0,"End"],
+ "modulus" : "600*t",
+ "direction" : [0.0,0.0,1.0]
+ }
+ }],
+ "list_other_processes" : []
+ },
+ "output_processes" : {
+ "gid_output" : [{
+ "python_module" : "gid_output_process",
+ "kratos_module" : "KratosMultiphysics",
+ "process_name" : "GiDOutputProcess",
+ "help" : "This process writes postprocessing files for GiD",
+ "Parameters" : {
+ "model_part_name" : "Structure",
+ "output_name" : "Bathe_cantilever",
+ "postprocess_parameters" : {
+ "result_file_configuration" : {
+ "gidpost_flags" : {
+ "GiDPostMode" : "GiD_PostBinary",
+ "WriteDeformedMeshFlag" : "WriteDeformed",
+ "WriteConditionsFlag" : "WriteConditions",
+ "MultiFileFlag" : "SingleFile"
+ },
+ "file_label" : "step",
+ "output_control_type" : "step",
+ "output_interval" : 1,
+ "body_output" : true,
+ "node_output" : false,
+ "skin_output" : false,
+ "plane_output" : [],
+ "nodal_results" : ["DISPLACEMENT","REACTION","ROTATION","REACTION_MOMENT"],
+ "gauss_point_results" : ["FORCE","MOMENT"],
+ "nodal_nonhistorical_results" : []
+ },
+ "point_data_configuration" : []
+ }
+ }
+ }],
+ "vtk_output" : [{
+ "python_module" : "vtk_output_process",
+ "kratos_module" : "KratosMultiphysics",
+ "process_name" : "VtkOutputProcess",
+ "help" : "This process writes postprocessing files for Paraview",
+ "Parameters" : {
+ "model_part_name" : "Structure",
+ "output_control_type" : "step",
+ "output_interval" : 1,
+ "file_format" : "ascii",
+ "output_precision" : 7,
+ "output_sub_model_parts" : false,
+ "output_path" : "vtk_output",
+ "save_output_files_in_folder" : true,
+ "nodal_solution_step_data_variables" : ["DISPLACEMENT","REACTION","ROTATION","REACTION_MOMENT"],
+ "nodal_data_value_variables" : [],
+ "element_data_value_variables" : [],
+ "condition_data_value_variables" : [],
+ "gauss_point_variables_extrapolated_to_nodes" : ["FORCE","MOMENT"]
+ }
+ }]
+ }
+}
diff --git a/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/StructuralMaterials.json b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/StructuralMaterials.json
new file mode 100644
index 00000000..3f913195
--- /dev/null
+++ b/structural_mechanics/validation/beam_nonlinear_cantilever3D_bathe/source/StructuralMaterials.json
@@ -0,0 +1,21 @@
+{
+ "properties" : [{
+ "model_part_name" : "Structure.Parts_Beam_Cantilever",
+ "properties_id" : 1,
+ "Material" : {
+ "constitutive_law" : {
+ "name" : "BeamConstitutiveLaw"
+ },
+ "Variables" : {
+ "DENSITY" : 7850.0,
+ "YOUNG_MODULUS" : 10000000.0,
+ "POISSON_RATIO" : 0.0,
+ "CROSS_AREA" : 1.0,
+ "TORSIONAL_INERTIA" : 0.1666666666666667,
+ "I22" : 0.0833333333333333,
+ "I33" : 0.0833333333333333
+ },
+ "Tables" : {}
+ }
+ }]
+}