From ec73f5e60e045fac7b5cc28b58b45735fea3343f Mon Sep 17 00:00:00 2001 From: mnabideltares Date: Mon, 12 Feb 2024 13:20:31 +0100 Subject: [PATCH 01/23] Remoded face swapping for Triangle3D3, and 3D6, Fixed the existing test cases --- ...ighbour_elements_of_conditions_process.cpp | 11 -------- .../test_normal_load_tetra_10n.mdpa | 16 +++++------ .../test_tetra_10n.gid/test_tetra_10n.mdpa | 16 +++++------ .../test_tetra_4n.gid/test_tetra_4n.mdpa | 16 +++++------ .../test_thermal_heat_flux_3D10N.mdpa | 28 +++++++++---------- .../test_thermal_heat_flux_3D4N.mdpa | 28 +++++++++---------- ...est_transient_thermal_heat_flux_3D10N.mdpa | 28 +++++++++---------- ...test_transient_thermal_heat_flux_3D4N.mdpa | 28 +++++++++---------- 8 files changed, 80 insertions(+), 91 deletions(-) diff --git a/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp b/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp index 69c64ab086cb..2c5274e65bba 100644 --- a/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp +++ b/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp @@ -36,17 +36,6 @@ void FindNeighbourElementsOfConditionsProcess::Execute() Ids[i] = rGeometry[i].Id(); } - if (rGeometry.GetGeometryType() == GeometryData::KratosGeometryType::Kratos_Triangle3D3) { - // reverse ordering to be consistent with face ordering - std::swap(Ids[1], Ids[2]); - } - - if (rGeometry.GetGeometryType() == GeometryData::KratosGeometryType::Kratos_Triangle3D6) { - // reverse ordering to be consistent with face ordering - std::swap(Ids[1], Ids[2]); - std::swap(Ids[3], Ids[5]); - } - if (rGeometry.GetGeometryType() == GeometryData::KratosGeometryType::Kratos_Quadrilateral3D4) { // reverse ordering to be consistent with face ordering std::swap(Ids[0], Ids[3]); diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa b/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa index d414380c9c34..15cd6190f7d8 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa @@ -185,14 +185,14 @@ End Elements Begin Conditions SurfaceNormalLoadDiffOrderCondition3D6N - 1 1 52 21 10 32 16 24 - 2 1 52 78 21 58 45 32 - 3 1 110 21 78 65 45 93 - 4 1 110 75 21 95 43 65 - 5 1 21 11 1 13 4 5 - 6 1 21 1 10 5 3 16 - 7 1 21 54 11 35 29 13 - 8 1 21 75 54 43 63 35 + 1 1 52 10 21 24 16 32 + 2 1 52 21 78 32 45 58 + 3 1 110 78 21 93 45 65 + 4 1 110 21 75 65 43 95 + 5 1 21 1 11 5 4 13 + 6 1 21 10 1 16 3 5 + 7 1 21 11 54 13 29 35 + 8 1 21 54 75 35 63 43 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/test_tetra_10n.gid/test_tetra_10n.mdpa b/applications/GeoMechanicsApplication/tests/test_tetra_10n.gid/test_tetra_10n.mdpa index 3e3a84344882..22295eb40cb7 100644 --- a/applications/GeoMechanicsApplication/tests/test_tetra_10n.gid/test_tetra_10n.mdpa +++ b/applications/GeoMechanicsApplication/tests/test_tetra_10n.gid/test_tetra_10n.mdpa @@ -185,14 +185,14 @@ End Elements Begin Conditions SurfaceLoadDiffOrderCondition3D6N - 1 1 52 22 11 35 16 28 - 2 1 52 75 22 57 42 35 - 3 1 111 22 75 65 42 96 - 4 1 111 77 22 95 45 65 - 5 1 22 10 1 14 4 7 - 6 1 22 1 11 7 2 16 - 7 1 22 54 10 33 29 14 - 8 1 22 77 54 45 61 33 + 1 1 52 11 22 28 16 35 + 2 1 52 22 75 35 42 57 + 3 1 111 75 22 96 42 65 + 4 1 111 22 77 65 45 95 + 5 1 22 1 10 7 4 14 + 6 1 22 11 1 16 2 7 + 7 1 22 10 54 14 29 33 + 8 1 22 54 77 33 61 45 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/test_tetra_4n.gid/test_tetra_4n.mdpa b/applications/GeoMechanicsApplication/tests/test_tetra_4n.gid/test_tetra_4n.mdpa index f0391cfeb6fc..58cd14952f37 100644 --- a/applications/GeoMechanicsApplication/tests/test_tetra_4n.gid/test_tetra_4n.mdpa +++ b/applications/GeoMechanicsApplication/tests/test_tetra_4n.gid/test_tetra_4n.mdpa @@ -87,14 +87,14 @@ End Elements Begin Conditions UPwFaceLoadCondition3D3N - 1 1 9 7 4 - 2 1 9 15 7 - 3 1 21 7 15 - 4 1 21 14 7 - 5 1 7 3 1 - 6 1 7 1 4 - 7 1 7 10 3 - 8 1 7 14 10 + 1 1 9 4 7 + 2 1 9 7 15 + 3 1 21 15 7 + 4 1 21 7 14 + 5 1 7 1 3 + 6 1 7 4 1 + 7 1 7 3 10 + 8 1 7 10 14 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D10N/test_thermal_heat_flux_3D10N.mdpa b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D10N/test_thermal_heat_flux_3D10N.mdpa index 75d399a1018c..d00ef168035a 100644 --- a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D10N/test_thermal_heat_flux_3D10N.mdpa +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D10N/test_thermal_heat_flux_3D10N.mdpa @@ -655,20 +655,20 @@ End Elements Begin Conditions GeoTNormalFluxCondition3D6N - 1 1 1 10 8 4 6 2 - 2 1 8 51 27 20 34 15 - 3 1 341 212 309 273 249 322 - 4 1 309 166 291 230 228 296 - 5 1 61 32 10 45 18 24 - 6 1 116 134 212 121 174 163 - 7 1 32 8 10 12 6 18 - 8 1 61 134 32 94 77 45 - 9 1 61 166 134 109 149 94 - 10 1 166 309 134 230 211 149 - 11 1 134 309 212 211 249 174 - 12 1 51 32 116 37 72 79 - 13 1 32 134 116 77 121 72 - 14 1 51 8 32 20 12 37 + 1 1 1 8 10 2 6 4 + 2 1 8 27 51 15 34 20 + 3 1 341 309 212 322 249 273 + 4 1 309 291 166 296 228 230 + 5 1 61 10 32 24 18 45 + 6 1 116 212 134 163 174 121 + 7 1 32 10 8 18 6 12 + 8 1 61 32 134 45 77 94 + 9 1 61 134 166 94 149 109 + 10 1 166 134 309 149 211 230 + 11 1 134 212 309 174 249 211 + 12 1 51 116 32 79 72 37 + 13 1 32 116 134 72 121 77 + 14 1 51 32 8 37 12 20 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D4N/test_thermal_heat_flux_3D4N.mdpa b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D4N/test_thermal_heat_flux_3D4N.mdpa index 906e4f139abe..afd1afa4afc4 100644 --- a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D4N/test_thermal_heat_flux_3D4N.mdpa +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D4N/test_thermal_heat_flux_3D4N.mdpa @@ -304,20 +304,20 @@ End Elements Begin Conditions GeoTNormalFluxCondition3D3N - 1 1 1 4 2 - 2 1 2 12 5 - 3 1 57 38 51 - 4 1 51 30 48 - 5 1 13 7 4 - 6 1 22 26 38 - 7 1 7 2 4 - 8 1 13 26 7 - 9 1 13 30 26 - 10 1 30 51 26 - 11 1 26 51 38 - 12 1 12 7 22 - 13 1 7 26 22 - 14 1 12 2 7 + 1 1 1 2 4 + 2 1 2 5 12 + 3 1 57 51 38 + 4 1 51 48 30 + 5 1 13 4 7 + 6 1 22 38 26 + 7 1 7 4 2 + 8 1 13 7 26 + 9 1 13 26 30 + 10 1 30 26 51 + 11 1 26 38 51 + 12 1 12 22 7 + 13 1 7 22 26 + 14 1 12 7 2 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D10N/test_transient_thermal_heat_flux_3D10N.mdpa b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D10N/test_transient_thermal_heat_flux_3D10N.mdpa index 75d399a1018c..d00ef168035a 100644 --- a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D10N/test_transient_thermal_heat_flux_3D10N.mdpa +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D10N/test_transient_thermal_heat_flux_3D10N.mdpa @@ -655,20 +655,20 @@ End Elements Begin Conditions GeoTNormalFluxCondition3D6N - 1 1 1 10 8 4 6 2 - 2 1 8 51 27 20 34 15 - 3 1 341 212 309 273 249 322 - 4 1 309 166 291 230 228 296 - 5 1 61 32 10 45 18 24 - 6 1 116 134 212 121 174 163 - 7 1 32 8 10 12 6 18 - 8 1 61 134 32 94 77 45 - 9 1 61 166 134 109 149 94 - 10 1 166 309 134 230 211 149 - 11 1 134 309 212 211 249 174 - 12 1 51 32 116 37 72 79 - 13 1 32 134 116 77 121 72 - 14 1 51 8 32 20 12 37 + 1 1 1 8 10 2 6 4 + 2 1 8 27 51 15 34 20 + 3 1 341 309 212 322 249 273 + 4 1 309 291 166 296 228 230 + 5 1 61 10 32 24 18 45 + 6 1 116 212 134 163 174 121 + 7 1 32 10 8 18 6 12 + 8 1 61 32 134 45 77 94 + 9 1 61 134 166 94 149 109 + 10 1 166 134 309 149 211 230 + 11 1 134 212 309 174 249 211 + 12 1 51 116 32 79 72 37 + 13 1 32 116 134 72 121 77 + 14 1 51 32 8 37 12 20 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D4N/test_transient_thermal_heat_flux_3D4N.mdpa b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D4N/test_transient_thermal_heat_flux_3D4N.mdpa index 906e4f139abe..e06b6e4ecede 100644 --- a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D4N/test_transient_thermal_heat_flux_3D4N.mdpa +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_transient_thermal_heat_flux/test_transient_thermal_heat_flux_3D4N/test_transient_thermal_heat_flux_3D4N.mdpa @@ -304,20 +304,20 @@ End Elements Begin Conditions GeoTNormalFluxCondition3D3N - 1 1 1 4 2 - 2 1 2 12 5 - 3 1 57 38 51 - 4 1 51 30 48 - 5 1 13 7 4 - 6 1 22 26 38 - 7 1 7 2 4 - 8 1 13 26 7 - 9 1 13 30 26 - 10 1 30 51 26 - 11 1 26 51 38 - 12 1 12 7 22 - 13 1 7 26 22 - 14 1 12 2 7 + 1 1 1 2 4 + 2 1 2 5 12 + 3 1 57 51 38 + 4 1 51 48 30 + 5 1 13 4 7 + 6 1 22 38 26 + 7 1 7 4 2 + 8 1 13 7 26 + 9 1 13 26 30 + 10 1 30 26 51 + 11 1 26 38 51 + 12 1 12 22 7 + 13 1 7 22 26 + 14 1 12 7 2 End Conditions From 761d14aa6a9525e3b3fe6024c22a80cc3500bc99 Mon Sep 17 00:00:00 2001 From: mnabideltares Date: Tue, 13 Feb 2024 21:40:35 +0100 Subject: [PATCH 02/23] Removed face swapping for Quadrilateral3D4, and Quadrilateral3D8, Added 2 test cases to thermal --- ...ighbour_elements_of_conditions_process.cpp | 13 - .../MaterialParameters.json | 28 + .../ProjectParameters.json | 142 + .../test_thermal_heat_flux_3D20N.mdpa | 2948 +++++++++++++++++ .../MaterialParameters.json | 28 + .../ProjectParameters.json | 142 + .../test_thermal_heat_flux_3D8N.mdpa | 1208 +++++++ .../tests/test_transient_thermal.py | 17 + 8 files changed, 4513 insertions(+), 13 deletions(-) create mode 100644 applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/MaterialParameters.json create mode 100644 applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/ProjectParameters.json create mode 100644 applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/test_thermal_heat_flux_3D20N.mdpa create mode 100644 applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/MaterialParameters.json create mode 100644 applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/ProjectParameters.json create mode 100644 applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/test_thermal_heat_flux_3D8N.mdpa diff --git a/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp b/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp index 2c5274e65bba..f5652bdd72c5 100644 --- a/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp +++ b/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp @@ -36,19 +36,6 @@ void FindNeighbourElementsOfConditionsProcess::Execute() Ids[i] = rGeometry[i].Id(); } - if (rGeometry.GetGeometryType() == GeometryData::KratosGeometryType::Kratos_Quadrilateral3D4) { - // reverse ordering to be consistent with face ordering - std::swap(Ids[0], Ids[3]); - std::swap(Ids[1], Ids[2]); - } - - if (rGeometry.GetGeometryType() == GeometryData::KratosGeometryType::Kratos_Quadrilateral3D8) { - // reverse ordering to be consistent with face ordering - std::swap(Ids[0], Ids[3]); - std::swap(Ids[1], Ids[2]); - std::swap(Ids[4], Ids[6]); - } - // adds to the map FacesMap.insert( hashmap::value_type(Ids, std::vector({*itCond.base()})) ); diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/MaterialParameters.json new file mode 100644 index 000000000000..b5aaba0737b5 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/MaterialParameters.json @@ -0,0 +1,28 @@ +{ + "properties": [{ + "model_part_name": "PorousDomain.Soil", + "properties_id": 1, + "Material": { + "constitutive_law": { + "name" : "GeoThermalDispersion3DLaw" + }, + "Variables": { + "DENSITY_SOLID" : 2650, + "DENSITY_WATER" : 1000, + "POROSITY" : 0.36, + "RETENTION_LAW" : "SaturatedLaw", + "SATURATED_SATURATION" : 1.0, + "SPECIFIC_HEAT_CAPACITY_SOLID" : 400.0, + "SPECIFIC_HEAT_CAPACITY_WATER" : 3795.0, + "THERMAL_CONDUCTIVITY_SOLID_XX" : 1.50, + "THERMAL_CONDUCTIVITY_SOLID_YY" : 1.50, + "THERMAL_CONDUCTIVITY_SOLID_ZZ" : 1.50, + "THERMAL_CONDUCTIVITY_SOLID_XY" : 0.0, + "THERMAL_CONDUCTIVITY_SOLID_YZ" : 0.0, + "THERMAL_CONDUCTIVITY_SOLID_XZ" : 0.0, + "THERMAL_CONDUCTIVITY_WATER" : 0.48 + }, + "Tables": {} + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/ProjectParameters.json new file mode 100644 index 000000000000..387d6d974421 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/ProjectParameters.json @@ -0,0 +1,142 @@ +{ + "problem_data": { + "problem_name": "test_thermal_heat_flux_3D20N", + "start_time": 0.0, + "end_time": 21600000, + "echo_level": 1, + "parallel_type": "OpenMP", + "number_of_threads": 1 + }, + "solver_settings": { + "solver_type": "T", + "model_part_name": "PorousDomain", + "domain_size": 3, + "model_import_settings": { + "input_type": "mdpa", + "input_filename": "test_thermal_heat_flux_3D20N" + }, + "material_import_settings": { + "materials_filename": "MaterialParameters.json" + }, + "time_stepping": { + "time_step": 600, + "max_delta_time_factor": 1000 + }, + "buffer_size": 2, + "echo_level": 1, + "clear_storage": false, + "compute_reactions": false, + "move_mesh_flag": false, + "reform_dofs_at_each_step": false, + "nodal_smoothing": false, + "block_builder": true, + "solution_type": "Transient_Heat_Transfer", + "scheme_type": "Backward_Euler", + "reset_displacements": true, + "newmark_beta": 0.25, + "newmark_gamma": 0.5, + "newmark_theta": 0.5, + "rayleigh_m": 0.0, + "rayleigh_k": 0.0, + "strategy_type": "newton_raphson", + "convergence_criterion": "temperature_criterion", + "temperature_relative_tolerance": 1.0E-4, + "temperature_absolute_tolerance": 1.0E-9, + "residual_relative_tolerance": 1.0E-4, + "residual_absolute_tolerance": 1.0E-9, + "min_iterations": 6, + "max_iterations": 15, + "number_cycles": 100, + "reduction_factor": 0.5, + "increase_factor": 2.0, + "desired_iterations": 4, + "max_radius_factor": 10.0, + "min_radius_factor": 0.1, + "calculate_reactions": true, + "max_line_search_iterations": 5, + "first_alpha_value": 0.5, + "second_alpha_value": 1.0, + "min_alpha": 0.1, + "max_alpha": 2.0, + "line_search_tolerance": 0.5, + "rotation_dofs": true, + "linear_solver_settings": { + "solver_type": "bicgstab", + "tolerance": 1.0e-6, + "max_iteration": 1000, + "scaling": true, + "preconditioner_type": "ilu0" + }, + "problem_domain_sub_model_part_list": ["Soil"], + "processes_sub_model_part_list": ["top","initial","bottom"], + "body_domain_sub_model_part_list": ["Soil"] + }, + "output_processes": { + "gid_output": [{ + "python_module": "gid_output_process", + "kratos_module": "KratosMultiphysics", + "process_name": "GiDOutputProcess", + "Parameters": { + "model_part_name": "PorousDomain.porous_computational_model_part", + "output_name": "test_thermal_heat_flux_3D20N", + "postprocess_parameters": { + "result_file_configuration": { + "gidpost_flags": { + "WriteDeformedMeshFlag": "WriteUndeformed", + "WriteConditionsFlag": "WriteElementsOnly", + "GiDPostMode": "GiD_PostAscii", + "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": ["TEMPERATURE"], + "gauss_point_results": [] + }, + "point_data_configuration": [] + } + } + }] + }, + "processes": { + "constraints_process_list": [{ + "python_module": "apply_scalar_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyScalarConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.initial", + "variable_name": "TEMPERATURE", + "is_fixed": false, + "value": 0.0, + "table": 0 + } + },{ + "python_module": "apply_scalar_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyScalarConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.top", + "variable_name": "TEMPERATURE", + "is_fixed": true, + "value": 0.0, + "table": 0 + } + }], + "loads_process_list": [{ + "python_module": "apply_scalar_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyScalarConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.bottom", + "variable_name": "NORMAL_HEAT_FLUX", + "value": 100.0, + "table": 0 + } + }], + "auxiliar_process_list": [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/test_thermal_heat_flux_3D20N.mdpa b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/test_thermal_heat_flux_3D20N.mdpa new file mode 100644 index 000000000000..e58ecd815c83 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D20N/test_thermal_heat_flux_3D20N.mdpa @@ -0,0 +1,2948 @@ + +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.0000000000 1.0000000000 0.0000000000 + 2 0.0000000000 0.9000000000 0.0000000000 + 3 0.0000000000 1.0000000000 0.1000000000 + 4 0.1000000000 1.0000000000 0.0000000000 + 5 0.0000000000 0.8000000000 0.0000000000 + 6 0.0000000000 1.0000000000 0.2000000000 + 7 0.2000000000 1.0000000000 0.0000000000 + 8 0.1000000000 0.8000000000 0.0000000000 + 9 0.0000000000 0.9000000000 0.2000000000 + 10 0.2000000000 0.9000000000 0.0000000000 + 11 0.2000000000 1.0000000000 0.1000000000 + 12 0.1000000000 1.0000000000 0.2000000000 + 13 0.0000000000 0.8000000000 0.1000000000 + 14 0.2000000000 0.8000000000 0.0000000000 + 15 0.2000000000 1.0000000000 0.2000000000 + 16 0.0000000000 0.8000000000 0.2000000000 + 17 0.2000000000 0.9000000000 0.2000000000 + 18 0.2000000000 0.8000000000 0.1000000000 + 19 0.1000000000 0.8000000000 0.2000000000 + 20 0.3000000000 1.0000000000 0.0000000000 + 21 0.0000000000 0.7000000000 0.0000000000 + 22 0.0000000000 1.0000000000 0.3000000000 + 23 0.2000000000 0.8000000000 0.2000000000 + 24 0.2000000000 0.7000000000 0.0000000000 + 25 0.3000000000 0.8000000000 0.0000000000 + 26 0.2000000000 1.0000000000 0.3000000000 + 27 0.3000000000 1.0000000000 0.2000000000 + 28 0.0000000000 0.8000000000 0.3000000000 + 29 0.0000000000 0.7000000000 0.2000000000 + 30 0.0000000000 1.0000000000 0.4000000000 + 31 0.0000000000 0.6000000000 0.0000000000 + 32 0.4000000000 1.0000000000 0.0000000000 + 33 0.0000000000 0.9000000000 0.4000000000 + 34 0.1000000000 0.6000000000 0.0000000000 + 35 0.0000000000 0.6000000000 0.1000000000 + 36 0.4000000000 1.0000000000 0.1000000000 + 37 0.2000000000 0.7000000000 0.2000000000 + 38 0.3000000000 0.8000000000 0.2000000000 + 39 0.4000000000 0.9000000000 0.0000000000 + 40 0.2000000000 0.8000000000 0.3000000000 + 41 0.1000000000 1.0000000000 0.4000000000 + 42 0.4000000000 0.8000000000 0.0000000000 + 43 0.0000000000 0.6000000000 0.2000000000 + 44 0.2000000000 0.6000000000 0.0000000000 + 45 0.4000000000 1.0000000000 0.2000000000 + 46 0.0000000000 0.8000000000 0.4000000000 + 47 0.2000000000 1.0000000000 0.4000000000 + 48 0.4000000000 0.8000000000 0.1000000000 + 49 0.1000000000 0.6000000000 0.2000000000 + 50 0.1000000000 0.8000000000 0.4000000000 + 51 0.2000000000 0.6000000000 0.1000000000 + 52 0.2000000000 0.9000000000 0.4000000000 + 53 0.4000000000 0.9000000000 0.2000000000 + 54 0.4000000000 0.8000000000 0.2000000000 + 55 0.2000000000 0.8000000000 0.4000000000 + 56 0.2000000000 0.6000000000 0.2000000000 + 57 0.0000000000 1.0000000000 0.5000000000 + 58 0.5000000000 1.0000000000 0.0000000000 + 59 0.0000000000 0.5000000000 0.0000000000 + 60 0.4000000000 0.7000000000 0.0000000000 + 61 0.0000000000 0.6000000000 0.3000000000 + 62 0.4000000000 1.0000000000 0.3000000000 + 63 0.3000000000 1.0000000000 0.4000000000 + 64 0.0000000000 0.7000000000 0.4000000000 + 65 0.3000000000 0.6000000000 0.0000000000 + 66 0.0000000000 0.5000000000 0.2000000000 + 67 0.2000000000 1.0000000000 0.5000000000 + 68 0.5000000000 0.8000000000 0.0000000000 + 69 0.4000000000 0.8000000000 0.3000000000 + 70 0.0000000000 0.8000000000 0.5000000000 + 71 0.4000000000 0.7000000000 0.2000000000 + 72 0.3000000000 0.8000000000 0.4000000000 + 73 0.2000000000 0.5000000000 0.0000000000 + 74 0.3000000000 0.6000000000 0.2000000000 + 75 0.2000000000 0.6000000000 0.3000000000 + 76 0.2000000000 0.7000000000 0.4000000000 + 77 0.5000000000 1.0000000000 0.2000000000 + 78 0.4000000000 1.0000000000 0.4000000000 + 79 0.0000000000 0.6000000000 0.4000000000 + 80 0.4000000000 0.6000000000 0.0000000000 + 81 0.2000000000 0.8000000000 0.5000000000 + 82 0.1000000000 0.6000000000 0.4000000000 + 83 0.2000000000 0.5000000000 0.2000000000 + 84 0.5000000000 0.8000000000 0.2000000000 + 85 0.4000000000 0.6000000000 0.1000000000 + 86 0.4000000000 0.9000000000 0.4000000000 + 87 0.0000000000 1.0000000000 0.6000000000 + 88 0.6000000000 1.0000000000 0.0000000000 + 89 0.4000000000 0.8000000000 0.4000000000 + 90 0.0000000000 0.4000000000 0.0000000000 + 91 0.2000000000 0.6000000000 0.4000000000 + 92 0.4000000000 0.6000000000 0.2000000000 + 93 0.6000000000 0.9000000000 0.0000000000 + 94 0.0000000000 0.4000000000 0.1000000000 + 95 0.0000000000 0.9000000000 0.6000000000 + 96 0.6000000000 1.0000000000 0.1000000000 + 97 0.1000000000 1.0000000000 0.6000000000 + 98 0.1000000000 0.4000000000 0.0000000000 + 99 0.6000000000 0.8000000000 0.0000000000 + 100 0.0000000000 0.4000000000 0.2000000000 + 101 0.6000000000 1.0000000000 0.2000000000 + 102 0.0000000000 0.8000000000 0.6000000000 + 103 0.2000000000 0.4000000000 0.0000000000 + 104 0.2000000000 1.0000000000 0.6000000000 + 105 0.0000000000 0.5000000000 0.4000000000 + 106 0.4000000000 0.5000000000 0.0000000000 + 107 0.6000000000 0.8000000000 0.1000000000 + 108 0.0000000000 0.6000000000 0.5000000000 + 109 0.4000000000 1.0000000000 0.5000000000 + 110 0.6000000000 0.9000000000 0.2000000000 + 111 0.4000000000 0.7000000000 0.4000000000 + 112 0.1000000000 0.4000000000 0.2000000000 + 113 0.5000000000 1.0000000000 0.4000000000 + 114 0.4000000000 0.6000000000 0.3000000000 + 115 0.5000000000 0.6000000000 0.0000000000 + 116 0.1000000000 0.8000000000 0.6000000000 + 117 0.3000000000 0.6000000000 0.4000000000 + 118 0.2000000000 0.9000000000 0.6000000000 + 119 0.2000000000 0.4000000000 0.1000000000 + 120 0.6000000000 0.8000000000 0.2000000000 + 121 0.2000000000 0.4000000000 0.2000000000 + 122 0.2000000000 0.8000000000 0.6000000000 + 123 0.6000000000 1.0000000000 0.3000000000 + 124 0.4000000000 0.8000000000 0.5000000000 + 125 0.0000000000 0.4000000000 0.3000000000 + 126 0.2000000000 0.6000000000 0.5000000000 + 127 0.3000000000 1.0000000000 0.6000000000 + 128 0.3000000000 0.4000000000 0.0000000000 + 129 0.4000000000 0.5000000000 0.2000000000 + 130 0.5000000000 0.8000000000 0.4000000000 + 131 0.0000000000 0.7000000000 0.6000000000 + 132 0.2000000000 0.5000000000 0.4000000000 + 133 0.6000000000 0.7000000000 0.0000000000 + 134 0.5000000000 0.6000000000 0.2000000000 + 135 0.4000000000 0.6000000000 0.4000000000 + 136 0.6000000000 0.8000000000 0.3000000000 + 137 0.0000000000 0.3000000000 0.0000000000 + 138 0.7000000000 1.0000000000 0.0000000000 + 139 0.0000000000 1.0000000000 0.7000000000 + 140 0.3000000000 0.8000000000 0.6000000000 + 141 0.3000000000 0.4000000000 0.2000000000 + 142 0.2000000000 0.7000000000 0.6000000000 + 143 0.6000000000 0.7000000000 0.2000000000 + 144 0.2000000000 0.4000000000 0.3000000000 + 145 0.4000000000 0.4000000000 0.0000000000 + 146 0.6000000000 0.6000000000 0.0000000000 + 147 0.0000000000 0.4000000000 0.4000000000 + 148 0.0000000000 0.6000000000 0.6000000000 + 149 0.4000000000 1.0000000000 0.6000000000 + 150 0.6000000000 1.0000000000 0.4000000000 + 151 0.7000000000 1.0000000000 0.2000000000 + 152 0.2000000000 1.0000000000 0.7000000000 + 153 0.0000000000 0.8000000000 0.7000000000 + 154 0.6000000000 0.9000000000 0.4000000000 + 155 0.0000000000 0.3000000000 0.2000000000 + 156 0.6000000000 0.6000000000 0.1000000000 + 157 0.4000000000 0.4000000000 0.1000000000 + 158 0.7000000000 0.8000000000 0.0000000000 + 159 0.2000000000 0.3000000000 0.0000000000 + 160 0.4000000000 0.9000000000 0.6000000000 + 161 0.1000000000 0.4000000000 0.4000000000 + 162 0.1000000000 0.6000000000 0.6000000000 + 163 0.6000000000 0.8000000000 0.4000000000 + 164 0.4000000000 0.8000000000 0.6000000000 + 165 0.6000000000 0.6000000000 0.2000000000 + 166 0.4000000000 0.4000000000 0.2000000000 + 167 0.2000000000 0.6000000000 0.6000000000 + 168 0.2000000000 0.4000000000 0.4000000000 + 169 0.2000000000 0.8000000000 0.7000000000 + 170 0.7000000000 0.8000000000 0.2000000000 + 171 0.4000000000 0.6000000000 0.5000000000 + 172 0.4000000000 0.5000000000 0.4000000000 + 173 0.2000000000 0.3000000000 0.2000000000 + 174 0.5000000000 0.6000000000 0.4000000000 + 175 0.6000000000 0.6000000000 0.3000000000 + 176 0.6000000000 1.0000000000 0.5000000000 + 177 0.0000000000 0.4000000000 0.5000000000 + 178 0.6000000000 0.5000000000 0.0000000000 + 179 0.5000000000 1.0000000000 0.6000000000 + 180 0.3000000000 0.6000000000 0.6000000000 + 181 0.4000000000 0.7000000000 0.6000000000 + 182 0.0000000000 0.5000000000 0.6000000000 + 183 0.4000000000 0.4000000000 0.3000000000 + 184 0.3000000000 0.4000000000 0.4000000000 + 185 0.5000000000 0.4000000000 0.0000000000 + 186 0.6000000000 0.7000000000 0.4000000000 + 187 0.0000000000 1.0000000000 0.8000000000 + 188 0.8000000000 1.0000000000 0.0000000000 + 189 0.0000000000 0.2000000000 0.0000000000 + 190 0.1000000000 0.2000000000 0.0000000000 + 191 0.6000000000 0.8000000000 0.5000000000 + 192 0.0000000000 0.9000000000 0.8000000000 + 193 0.8000000000 1.0000000000 0.1000000000 + 194 0.5000000000 0.8000000000 0.6000000000 + 195 0.7000000000 1.0000000000 0.4000000000 + 196 0.4000000000 1.0000000000 0.7000000000 + 197 0.1000000000 1.0000000000 0.8000000000 + 198 0.0000000000 0.3000000000 0.4000000000 + 199 0.4000000000 0.3000000000 0.0000000000 + 200 0.0000000000 0.2000000000 0.1000000000 + 201 0.7000000000 0.6000000000 0.0000000000 + 202 0.8000000000 0.9000000000 0.0000000000 + 203 0.2000000000 0.5000000000 0.6000000000 + 204 0.0000000000 0.6000000000 0.7000000000 + 205 0.6000000000 0.5000000000 0.2000000000 + 206 0.2000000000 0.4000000000 0.5000000000 + 207 0.5000000000 0.4000000000 0.2000000000 + 208 0.2000000000 1.0000000000 0.8000000000 + 209 0.8000000000 1.0000000000 0.2000000000 + 210 0.0000000000 0.8000000000 0.8000000000 + 211 0.2000000000 0.2000000000 0.0000000000 + 212 0.4000000000 0.4000000000 0.4000000000 + 213 0.8000000000 0.8000000000 0.0000000000 + 214 0.6000000000 0.6000000000 0.4000000000 + 215 0.4000000000 0.6000000000 0.6000000000 + 216 0.0000000000 0.2000000000 0.2000000000 + 217 0.2000000000 0.9000000000 0.8000000000 + 218 0.1000000000 0.2000000000 0.2000000000 + 219 0.4000000000 0.8000000000 0.7000000000 + 220 0.1000000000 0.8000000000 0.8000000000 + 221 0.8000000000 0.8000000000 0.1000000000 + 222 0.8000000000 0.9000000000 0.2000000000 + 223 0.2000000000 0.6000000000 0.7000000000 + 224 0.2000000000 0.2000000000 0.1000000000 + 225 0.7000000000 0.8000000000 0.4000000000 + 226 0.7000000000 0.6000000000 0.2000000000 + 227 0.4000000000 0.3000000000 0.2000000000 + 228 0.2000000000 0.3000000000 0.4000000000 + 229 0.2000000000 0.8000000000 0.8000000000 + 230 0.6000000000 0.4000000000 0.0000000000 + 231 0.8000000000 0.8000000000 0.2000000000 + 232 0.0000000000 0.4000000000 0.6000000000 + 233 0.2000000000 0.2000000000 0.2000000000 + 234 0.6000000000 1.0000000000 0.6000000000 + 235 0.3000000000 0.2000000000 0.0000000000 + 236 0.6000000000 0.4000000000 0.1000000000 + 237 0.0000000000 0.7000000000 0.8000000000 + 238 0.8000000000 1.0000000000 0.3000000000 + 239 0.3000000000 1.0000000000 0.8000000000 + 240 0.6000000000 0.9000000000 0.6000000000 + 241 0.0000000000 0.2000000000 0.3000000000 + 242 0.8000000000 0.7000000000 0.0000000000 + 243 0.1000000000 0.4000000000 0.6000000000 + 244 0.6000000000 0.4000000000 0.2000000000 + 245 0.6000000000 0.8000000000 0.6000000000 + 246 0.2000000000 0.4000000000 0.6000000000 + 247 0.8000000000 0.8000000000 0.3000000000 + 248 0.3000000000 0.2000000000 0.2000000000 + 249 0.2000000000 0.7000000000 0.8000000000 + 250 0.6000000000 0.6000000000 0.5000000000 + 251 0.3000000000 0.8000000000 0.8000000000 + 252 0.8000000000 0.7000000000 0.2000000000 + 253 0.4000000000 0.4000000000 0.5000000000 + 254 0.2000000000 0.2000000000 0.3000000000 + 255 0.4000000000 0.5000000000 0.6000000000 + 256 0.5000000000 0.6000000000 0.6000000000 + 257 0.6000000000 0.5000000000 0.4000000000 + 258 0.5000000000 0.4000000000 0.4000000000 + 259 0.4000000000 1.0000000000 0.8000000000 + 260 0.8000000000 1.0000000000 0.4000000000 + 261 0.4000000000 0.2000000000 0.0000000000 + 262 0.0000000000 0.6000000000 0.8000000000 + 263 0.8000000000 0.6000000000 0.0000000000 + 264 0.0000000000 0.2000000000 0.4000000000 + 265 0.1000000000 0.2000000000 0.4000000000 + 266 0.1000000000 0.6000000000 0.8000000000 + 267 0.4000000000 0.9000000000 0.8000000000 + 268 0.6000000000 0.4000000000 0.3000000000 + 269 0.4000000000 0.6000000000 0.7000000000 + 270 0.9000000000 1.0000000000 0.0000000000 + 271 0.3000000000 0.4000000000 0.6000000000 + 272 0.0000000000 0.1000000000 0.0000000000 + 273 0.0000000000 1.0000000000 0.9000000000 + 274 0.4000000000 0.2000000000 0.1000000000 + 275 0.4000000000 0.3000000000 0.4000000000 + 276 0.7000000000 0.6000000000 0.4000000000 + 277 0.8000000000 0.9000000000 0.4000000000 + 278 0.8000000000 0.6000000000 0.1000000000 + 279 0.6000000000 0.7000000000 0.6000000000 + 280 0.4000000000 0.8000000000 0.8000000000 + 281 0.8000000000 0.8000000000 0.4000000000 + 282 0.2000000000 0.6000000000 0.8000000000 + 283 0.8000000000 0.6000000000 0.2000000000 + 284 0.4000000000 0.2000000000 0.2000000000 + 285 0.2000000000 0.2000000000 0.4000000000 + 286 0.7000000000 0.4000000000 0.0000000000 + 287 0.0000000000 0.4000000000 0.7000000000 + 288 0.9000000000 0.8000000000 0.0000000000 + 289 0.2000000000 1.0000000000 0.9000000000 + 290 0.0000000000 0.1000000000 0.2000000000 + 291 0.0000000000 0.3000000000 0.6000000000 + 292 0.7000000000 1.0000000000 0.6000000000 + 293 0.2000000000 0.1000000000 0.0000000000 + 294 0.0000000000 0.8000000000 0.9000000000 + 295 0.6000000000 0.3000000000 0.0000000000 + 296 0.6000000000 1.0000000000 0.7000000000 + 297 0.9000000000 1.0000000000 0.2000000000 + 298 0.6000000000 0.4000000000 0.4000000000 + 299 0.6000000000 0.6000000000 0.6000000000 + 300 0.4000000000 0.4000000000 0.6000000000 + 301 0.7000000000 0.4000000000 0.2000000000 + 302 0.3000000000 0.2000000000 0.4000000000 + 303 0.8000000000 0.6000000000 0.3000000000 + 304 0.4000000000 0.7000000000 0.8000000000 + 305 0.9000000000 0.8000000000 0.2000000000 + 306 0.0000000000 0.5000000000 0.8000000000 + 307 0.8000000000 1.0000000000 0.5000000000 + 308 0.5000000000 1.0000000000 0.8000000000 + 309 0.7000000000 0.8000000000 0.6000000000 + 310 0.2000000000 0.8000000000 0.9000000000 + 311 0.8000000000 0.7000000000 0.4000000000 + 312 0.6000000000 0.8000000000 0.7000000000 + 313 0.3000000000 0.6000000000 0.8000000000 + 314 0.4000000000 0.2000000000 0.3000000000 + 315 0.5000000000 0.2000000000 0.0000000000 + 316 0.0000000000 0.2000000000 0.5000000000 + 317 0.2000000000 0.1000000000 0.2000000000 + 318 0.2000000000 0.3000000000 0.6000000000 + 319 0.8000000000 0.5000000000 0.0000000000 + 320 0.2000000000 0.4000000000 0.7000000000 + 321 0.6000000000 0.3000000000 0.2000000000 + 322 0.5000000000 0.8000000000 0.8000000000 + 323 0.8000000000 0.8000000000 0.5000000000 + 324 0.2000000000 0.2000000000 0.5000000000 + 325 0.2000000000 0.5000000000 0.8000000000 + 326 0.8000000000 0.5000000000 0.2000000000 + 327 0.5000000000 0.2000000000 0.2000000000 + 328 0.4000000000 0.6000000000 0.8000000000 + 329 0.4000000000 0.2000000000 0.4000000000 + 330 0.8000000000 0.6000000000 0.4000000000 + 331 0.6000000000 0.4000000000 0.5000000000 + 332 0.4000000000 0.1000000000 0.0000000000 + 333 0.0000000000 0.1000000000 0.4000000000 + 334 0.4000000000 1.0000000000 0.9000000000 + 335 0.6000000000 0.5000000000 0.6000000000 + 336 0.9000000000 0.6000000000 0.0000000000 + 337 0.0000000000 0.6000000000 0.9000000000 + 338 0.5000000000 0.4000000000 0.6000000000 + 339 0.9000000000 1.0000000000 0.4000000000 + 340 0.6000000000 0.2000000000 0.0000000000 + 341 0.0000000000 0.4000000000 0.8000000000 + 342 0.8000000000 1.0000000000 0.6000000000 + 343 0.0000000000 1.0000000000 1.0000000000 + 344 0.6000000000 1.0000000000 0.8000000000 + 345 0.0000000000 0.0000000000 0.0000000000 + 346 1.0000000000 1.0000000000 0.0000000000 + 347 0.8000000000 0.4000000000 0.0000000000 + 348 0.0000000000 0.2000000000 0.6000000000 + 349 0.1000000000 0.2000000000 0.6000000000 + 350 0.7000000000 0.4000000000 0.4000000000 + 351 0.6000000000 0.2000000000 0.1000000000 + 352 0.4000000000 0.8000000000 0.9000000000 + 353 0.4000000000 0.1000000000 0.2000000000 + 354 0.1000000000 0.4000000000 0.8000000000 + 355 0.2000000000 0.6000000000 0.9000000000 + 356 0.1000000000 1.0000000000 1.0000000000 + 357 1.0000000000 1.0000000000 0.1000000000 + 358 0.1000000000 0.0000000000 0.0000000000 + 359 0.0000000000 0.9000000000 1.0000000000 + 360 0.0000000000 0.0000000000 0.1000000000 + 361 0.6000000000 0.6000000000 0.7000000000 + 362 1.0000000000 0.9000000000 0.0000000000 + 363 0.4000000000 0.3000000000 0.6000000000 + 364 0.4000000000 0.4000000000 0.7000000000 + 365 0.8000000000 0.9000000000 0.6000000000 + 366 0.7000000000 0.6000000000 0.6000000000 + 367 0.2000000000 0.1000000000 0.4000000000 + 368 0.8000000000 0.4000000000 0.1000000000 + 369 0.6000000000 0.9000000000 0.8000000000 + 370 0.9000000000 0.6000000000 0.2000000000 + 371 0.6000000000 0.3000000000 0.4000000000 + 372 0.9000000000 0.8000000000 0.4000000000 + 373 0.6000000000 0.8000000000 0.8000000000 + 374 0.8000000000 0.8000000000 0.6000000000 + 375 0.6000000000 0.2000000000 0.2000000000 + 376 0.2000000000 0.4000000000 0.8000000000 + 377 0.8000000000 0.4000000000 0.2000000000 + 378 0.0000000000 0.0000000000 0.2000000000 + 379 0.0000000000 0.8000000000 1.0000000000 + 380 0.2000000000 0.2000000000 0.6000000000 + 381 1.0000000000 0.8000000000 0.0000000000 + 382 0.2000000000 0.0000000000 0.0000000000 + 383 0.2000000000 1.0000000000 1.0000000000 + 384 1.0000000000 1.0000000000 0.2000000000 + 385 0.4000000000 0.5000000000 0.8000000000 + 386 0.4000000000 0.2000000000 0.5000000000 + 387 0.1000000000 0.8000000000 1.0000000000 + 388 0.5000000000 0.6000000000 0.8000000000 + 389 1.0000000000 0.9000000000 0.2000000000 + 390 0.2000000000 0.0000000000 0.1000000000 + 391 1.0000000000 0.8000000000 0.1000000000 + 392 0.1000000000 0.0000000000 0.2000000000 + 393 0.2000000000 0.9000000000 1.0000000000 + 394 0.5000000000 0.2000000000 0.4000000000 + 395 0.8000000000 0.6000000000 0.5000000000 + 396 0.8000000000 0.5000000000 0.4000000000 + 397 0.6000000000 0.4000000000 0.6000000000 + 398 1.0000000000 0.8000000000 0.2000000000 + 399 0.2000000000 0.0000000000 0.2000000000 + 400 0.2000000000 0.8000000000 1.0000000000 + 401 0.6000000000 0.2000000000 0.3000000000 + 402 0.3000000000 0.2000000000 0.6000000000 + 403 0.8000000000 0.4000000000 0.3000000000 + 404 0.3000000000 0.4000000000 0.8000000000 + 405 0.8000000000 0.7000000000 0.6000000000 + 406 1.0000000000 0.7000000000 0.0000000000 + 407 0.0000000000 0.0000000000 0.3000000000 + 408 0.3000000000 0.0000000000 0.0000000000 + 409 1.0000000000 1.0000000000 0.3000000000 + 410 0.3000000000 1.0000000000 1.0000000000 + 411 0.0000000000 0.7000000000 1.0000000000 + 412 0.6000000000 0.7000000000 0.8000000000 + 413 0.8000000000 1.0000000000 0.7000000000 + 414 0.7000000000 1.0000000000 0.8000000000 + 415 0.7000000000 0.2000000000 0.0000000000 + 416 0.4000000000 0.1000000000 0.4000000000 + 417 0.2000000000 0.7000000000 1.0000000000 + 418 0.0000000000 0.2000000000 0.7000000000 + 419 0.0000000000 0.3000000000 0.8000000000 + 420 1.0000000000 0.8000000000 0.3000000000 + 421 0.3000000000 0.0000000000 0.2000000000 + 422 0.2000000000 0.0000000000 0.3000000000 + 423 0.8000000000 0.3000000000 0.0000000000 + 424 1.0000000000 0.7000000000 0.2000000000 + 425 0.3000000000 0.8000000000 1.0000000000 + 426 0.4000000000 0.6000000000 0.9000000000 + 427 0.9000000000 0.6000000000 0.4000000000 + 428 0.6000000000 0.6000000000 0.8000000000 + 429 0.4000000000 0.4000000000 0.8000000000 + 430 0.6000000000 0.2000000000 0.4000000000 + 431 0.8000000000 0.4000000000 0.4000000000 + 432 0.0000000000 0.0000000000 0.4000000000 + 433 0.0000000000 0.6000000000 1.0000000000 + 434 0.4000000000 0.2000000000 0.6000000000 + 435 0.4000000000 0.0000000000 0.0000000000 + 436 1.0000000000 1.0000000000 0.4000000000 + 437 0.8000000000 0.6000000000 0.6000000000 + 438 0.4000000000 1.0000000000 1.0000000000 + 439 1.0000000000 0.6000000000 0.0000000000 + 440 0.8000000000 0.8000000000 0.7000000000 + 441 0.7000000000 0.8000000000 0.8000000000 + 442 0.0000000000 0.4000000000 0.9000000000 + 443 0.7000000000 0.2000000000 0.2000000000 + 444 0.6000000000 0.1000000000 0.0000000000 + 445 0.2000000000 0.3000000000 0.8000000000 + 446 0.0000000000 0.1000000000 0.6000000000 + 447 0.1000000000 0.0000000000 0.4000000000 + 448 0.1000000000 0.6000000000 1.0000000000 + 449 0.2000000000 0.2000000000 0.7000000000 + 450 0.9000000000 1.0000000000 0.6000000000 + 451 1.0000000000 0.6000000000 0.1000000000 + 452 1.0000000000 0.9000000000 0.4000000000 + 453 0.4000000000 0.9000000000 1.0000000000 + 454 0.8000000000 0.3000000000 0.2000000000 + 455 0.9000000000 0.4000000000 0.0000000000 + 456 0.4000000000 0.0000000000 0.1000000000 + 457 0.6000000000 1.0000000000 0.9000000000 + 458 0.4000000000 0.8000000000 1.0000000000 + 459 0.2000000000 0.6000000000 1.0000000000 + 460 1.0000000000 0.6000000000 0.2000000000 + 461 1.0000000000 0.8000000000 0.4000000000 + 462 0.2000000000 0.0000000000 0.4000000000 + 463 0.4000000000 0.0000000000 0.2000000000 + 464 0.6000000000 0.4000000000 0.7000000000 + 465 0.7000000000 0.4000000000 0.6000000000 + 466 0.6000000000 0.3000000000 0.6000000000 + 467 0.9000000000 0.8000000000 0.6000000000 + 468 0.2000000000 0.1000000000 0.6000000000 + 469 0.6000000000 0.1000000000 0.2000000000 + 470 0.6000000000 0.8000000000 0.9000000000 + 471 0.9000000000 0.4000000000 0.2000000000 + 472 0.2000000000 0.4000000000 0.9000000000 + 473 0.6000000000 0.2000000000 0.5000000000 + 474 0.8000000000 0.4000000000 0.5000000000 + 475 0.6000000000 0.5000000000 0.8000000000 + 476 1.0000000000 1.0000000000 0.5000000000 + 477 0.5000000000 1.0000000000 1.0000000000 + 478 1.0000000000 0.6000000000 0.3000000000 + 479 0.5000000000 0.0000000000 0.0000000000 + 480 1.0000000000 0.5000000000 0.0000000000 + 481 0.4000000000 0.7000000000 1.0000000000 + 482 0.0000000000 0.0000000000 0.5000000000 + 483 0.0000000000 0.5000000000 1.0000000000 + 484 0.8000000000 0.5000000000 0.6000000000 + 485 0.5000000000 0.4000000000 0.8000000000 + 486 0.3000000000 0.0000000000 0.4000000000 + 487 1.0000000000 0.7000000000 0.4000000000 + 488 0.3000000000 0.6000000000 1.0000000000 + 489 0.5000000000 0.2000000000 0.6000000000 + 490 0.4000000000 0.0000000000 0.3000000000 + 491 0.8000000000 1.0000000000 0.8000000000 + 492 0.8000000000 0.2000000000 0.0000000000 + 493 0.0000000000 0.2000000000 0.8000000000 + 494 0.1000000000 0.2000000000 0.8000000000 + 495 0.8000000000 0.9000000000 0.8000000000 + 496 0.8000000000 0.6000000000 0.7000000000 + 497 0.7000000000 0.2000000000 0.4000000000 + 498 0.8000000000 0.2000000000 0.1000000000 + 499 0.4000000000 0.3000000000 0.8000000000 + 500 0.7000000000 0.6000000000 0.8000000000 + 501 0.2000000000 0.5000000000 1.0000000000 + 502 1.0000000000 0.5000000000 0.2000000000 + 503 0.5000000000 0.8000000000 1.0000000000 + 504 0.5000000000 0.0000000000 0.2000000000 + 505 0.2000000000 0.0000000000 0.5000000000 + 506 0.4000000000 0.2000000000 0.7000000000 + 507 1.0000000000 0.8000000000 0.5000000000 + 508 0.8000000000 0.3000000000 0.4000000000 + 509 0.8000000000 0.8000000000 0.8000000000 + 510 0.2000000000 0.2000000000 0.8000000000 + 511 0.8000000000 0.2000000000 0.2000000000 + 512 1.0000000000 0.6000000000 0.4000000000 + 513 0.4000000000 0.6000000000 1.0000000000 + 514 0.4000000000 0.0000000000 0.4000000000 + 515 0.4000000000 0.1000000000 0.6000000000 + 516 0.6000000000 0.1000000000 0.4000000000 + 517 0.6000000000 0.6000000000 0.9000000000 + 518 0.9000000000 0.6000000000 0.6000000000 + 519 0.4000000000 0.4000000000 0.9000000000 + 520 0.9000000000 0.4000000000 0.4000000000 + 521 0.6000000000 0.2000000000 0.6000000000 + 522 0.8000000000 0.4000000000 0.6000000000 + 523 0.6000000000 0.0000000000 0.0000000000 + 524 1.0000000000 0.4000000000 0.0000000000 + 525 0.0000000000 0.0000000000 0.6000000000 + 526 0.6000000000 1.0000000000 1.0000000000 + 527 0.6000000000 0.4000000000 0.8000000000 + 528 0.0000000000 0.4000000000 1.0000000000 + 529 1.0000000000 1.0000000000 0.6000000000 + 530 0.8000000000 0.2000000000 0.3000000000 + 531 0.3000000000 0.2000000000 0.8000000000 + 532 0.8000000000 0.7000000000 0.8000000000 + 533 1.0000000000 0.4000000000 0.1000000000 + 534 0.6000000000 0.9000000000 1.0000000000 + 535 0.1000000000 0.4000000000 1.0000000000 + 536 1.0000000000 0.9000000000 0.6000000000 + 537 0.1000000000 0.0000000000 0.6000000000 + 538 0.6000000000 0.0000000000 0.1000000000 + 539 0.6000000000 0.8000000000 1.0000000000 + 540 1.0000000000 0.4000000000 0.2000000000 + 541 1.0000000000 0.8000000000 0.6000000000 + 542 0.2000000000 0.0000000000 0.6000000000 + 543 0.6000000000 0.0000000000 0.2000000000 + 544 0.2000000000 0.4000000000 1.0000000000 + 545 0.4000000000 0.5000000000 1.0000000000 + 546 1.0000000000 0.6000000000 0.5000000000 + 547 0.5000000000 0.0000000000 0.4000000000 + 548 0.4000000000 0.0000000000 0.5000000000 + 549 1.0000000000 0.5000000000 0.4000000000 + 550 0.5000000000 0.6000000000 1.0000000000 + 551 0.4000000000 0.2000000000 0.8000000000 + 552 0.8000000000 0.2000000000 0.4000000000 + 553 0.8000000000 0.6000000000 0.8000000000 + 554 0.8000000000 1.0000000000 0.9000000000 + 555 0.9000000000 0.2000000000 0.0000000000 + 556 0.8000000000 0.1000000000 0.0000000000 + 557 0.0000000000 0.2000000000 0.9000000000 + 558 1.0000000000 0.4000000000 0.3000000000 + 559 0.9000000000 1.0000000000 0.8000000000 + 560 0.0000000000 0.1000000000 0.8000000000 + 561 1.0000000000 0.7000000000 0.6000000000 + 562 0.6000000000 0.7000000000 1.0000000000 + 563 0.3000000000 0.0000000000 0.6000000000 + 564 0.3000000000 0.4000000000 1.0000000000 + 565 0.6000000000 0.0000000000 0.3000000000 + 566 0.7000000000 0.4000000000 0.8000000000 + 567 0.8000000000 0.8000000000 0.9000000000 + 568 0.6000000000 0.2000000000 0.7000000000 + 569 0.8000000000 0.4000000000 0.7000000000 + 570 0.9000000000 0.8000000000 0.8000000000 + 571 0.2000000000 0.2000000000 0.9000000000 + 572 0.2000000000 0.1000000000 0.8000000000 + 573 0.7000000000 0.2000000000 0.6000000000 + 574 0.9000000000 0.2000000000 0.2000000000 + 575 0.8000000000 0.1000000000 0.2000000000 + 576 0.0000000000 0.3000000000 1.0000000000 + 577 0.7000000000 1.0000000000 1.0000000000 + 578 1.0000000000 1.0000000000 0.7000000000 + 579 0.7000000000 0.0000000000 0.0000000000 + 580 1.0000000000 0.3000000000 0.0000000000 + 581 0.0000000000 0.0000000000 0.7000000000 + 582 0.8000000000 0.3000000000 0.6000000000 + 583 0.6000000000 0.3000000000 0.8000000000 + 584 1.0000000000 0.4000000000 0.4000000000 + 585 1.0000000000 0.6000000000 0.6000000000 + 586 0.6000000000 0.6000000000 1.0000000000 + 587 0.4000000000 0.4000000000 1.0000000000 + 588 0.4000000000 0.0000000000 0.6000000000 + 589 0.6000000000 0.0000000000 0.4000000000 + 590 0.6000000000 0.4000000000 0.9000000000 + 591 0.6000000000 0.1000000000 0.6000000000 + 592 0.8000000000 0.2000000000 0.5000000000 + 593 0.8000000000 0.5000000000 0.8000000000 + 594 1.0000000000 0.8000000000 0.7000000000 + 595 0.2000000000 0.0000000000 0.7000000000 + 596 0.7000000000 0.0000000000 0.2000000000 + 597 1.0000000000 0.3000000000 0.2000000000 + 598 0.2000000000 0.3000000000 1.0000000000 + 599 0.5000000000 0.2000000000 0.8000000000 + 600 0.7000000000 0.8000000000 1.0000000000 + 601 0.9000000000 0.4000000000 0.6000000000 + 602 0.4000000000 0.1000000000 0.8000000000 + 603 0.9000000000 0.6000000000 0.8000000000 + 604 1.0000000000 0.4000000000 0.5000000000 + 605 0.8000000000 0.1000000000 0.4000000000 + 606 0.8000000000 0.6000000000 0.9000000000 + 607 0.9000000000 0.2000000000 0.4000000000 + 608 0.4000000000 0.2000000000 0.9000000000 + 609 0.6000000000 0.0000000000 0.5000000000 + 610 0.6000000000 0.5000000000 1.0000000000 + 611 0.5000000000 0.0000000000 0.6000000000 + 612 1.0000000000 0.5000000000 0.6000000000 + 613 0.5000000000 0.4000000000 1.0000000000 + 614 0.8000000000 0.2000000000 0.6000000000 + 615 0.8000000000 0.4000000000 0.8000000000 + 616 0.6000000000 0.2000000000 0.8000000000 + 617 0.8000000000 0.0000000000 0.0000000000 + 618 0.0000000000 0.2000000000 1.0000000000 + 619 1.0000000000 0.2000000000 0.0000000000 + 620 0.0000000000 0.0000000000 0.8000000000 + 621 0.8000000000 1.0000000000 1.0000000000 + 622 1.0000000000 1.0000000000 0.8000000000 + 623 0.1000000000 0.2000000000 1.0000000000 + 624 0.1000000000 0.0000000000 0.8000000000 + 625 1.0000000000 0.2000000000 0.1000000000 + 626 1.0000000000 0.9000000000 0.8000000000 + 627 0.8000000000 0.0000000000 0.1000000000 + 628 0.4000000000 0.3000000000 1.0000000000 + 629 0.7000000000 0.6000000000 1.0000000000 + 630 1.0000000000 0.6000000000 0.7000000000 + 631 0.8000000000 0.9000000000 1.0000000000 + 632 1.0000000000 0.3000000000 0.4000000000 + 633 0.7000000000 0.0000000000 0.4000000000 + 634 0.4000000000 0.0000000000 0.7000000000 + 635 0.2000000000 0.0000000000 0.8000000000 + 636 1.0000000000 0.2000000000 0.2000000000 + 637 0.2000000000 0.2000000000 1.0000000000 + 638 1.0000000000 0.8000000000 0.8000000000 + 639 0.8000000000 0.0000000000 0.2000000000 + 640 0.8000000000 0.8000000000 1.0000000000 + 641 0.6000000000 0.4000000000 1.0000000000 + 642 0.6000000000 0.0000000000 0.6000000000 + 643 1.0000000000 0.4000000000 0.6000000000 + 644 0.3000000000 0.2000000000 1.0000000000 + 645 0.3000000000 0.0000000000 0.8000000000 + 646 1.0000000000 0.2000000000 0.3000000000 + 647 0.8000000000 0.0000000000 0.3000000000 + 648 1.0000000000 0.7000000000 0.8000000000 + 649 0.8000000000 0.7000000000 1.0000000000 + 650 0.8000000000 0.2000000000 0.7000000000 + 651 0.7000000000 0.2000000000 0.8000000000 + 652 0.8000000000 0.3000000000 0.8000000000 + 653 0.4000000000 0.0000000000 0.8000000000 + 654 0.4000000000 0.2000000000 1.0000000000 + 655 0.8000000000 0.0000000000 0.4000000000 + 656 1.0000000000 0.2000000000 0.4000000000 + 657 0.8000000000 0.6000000000 1.0000000000 + 658 1.0000000000 0.6000000000 0.8000000000 + 659 0.8000000000 0.4000000000 0.9000000000 + 660 0.9000000000 0.2000000000 0.6000000000 + 661 0.6000000000 0.2000000000 0.9000000000 + 662 0.6000000000 0.1000000000 0.8000000000 + 663 0.9000000000 0.0000000000 0.0000000000 + 664 0.9000000000 0.4000000000 0.8000000000 + 665 0.9000000000 1.0000000000 1.0000000000 + 666 0.8000000000 0.1000000000 0.6000000000 + 667 1.0000000000 0.1000000000 0.0000000000 + 668 0.0000000000 0.0000000000 0.9000000000 + 669 0.0000000000 0.1000000000 1.0000000000 + 670 1.0000000000 1.0000000000 0.9000000000 + 671 0.7000000000 0.4000000000 1.0000000000 + 672 0.6000000000 0.0000000000 0.7000000000 + 673 1.0000000000 0.1000000000 0.2000000000 + 674 0.2000000000 0.0000000000 0.9000000000 + 675 0.9000000000 0.8000000000 1.0000000000 + 676 1.0000000000 0.4000000000 0.7000000000 + 677 0.7000000000 0.0000000000 0.6000000000 + 678 0.2000000000 0.1000000000 1.0000000000 + 679 1.0000000000 0.3000000000 0.6000000000 + 680 0.6000000000 0.3000000000 1.0000000000 + 681 1.0000000000 0.8000000000 0.9000000000 + 682 0.9000000000 0.0000000000 0.2000000000 + 683 0.5000000000 0.0000000000 0.8000000000 + 684 1.0000000000 0.5000000000 0.8000000000 + 685 1.0000000000 0.2000000000 0.5000000000 + 686 0.8000000000 0.0000000000 0.5000000000 + 687 0.8000000000 0.5000000000 1.0000000000 + 688 0.5000000000 0.2000000000 1.0000000000 + 689 0.8000000000 0.2000000000 0.8000000000 + 690 0.4000000000 0.1000000000 1.0000000000 + 691 1.0000000000 0.1000000000 0.4000000000 + 692 0.9000000000 0.0000000000 0.4000000000 + 693 0.4000000000 0.0000000000 0.9000000000 + 694 0.9000000000 0.6000000000 1.0000000000 + 695 1.0000000000 0.6000000000 0.9000000000 + 696 0.6000000000 0.2000000000 1.0000000000 + 697 1.0000000000 0.2000000000 0.6000000000 + 698 1.0000000000 0.4000000000 0.8000000000 + 699 0.6000000000 0.0000000000 0.8000000000 + 700 0.8000000000 0.4000000000 1.0000000000 + 701 0.8000000000 0.0000000000 0.6000000000 + 702 1.0000000000 0.0000000000 0.0000000000 + 703 0.0000000000 0.0000000000 1.0000000000 + 704 1.0000000000 1.0000000000 1.0000000000 + 705 0.1000000000 0.0000000000 1.0000000000 + 706 1.0000000000 0.0000000000 0.1000000000 + 707 1.0000000000 0.9000000000 1.0000000000 + 708 1.0000000000 0.8000000000 1.0000000000 + 709 1.0000000000 0.0000000000 0.2000000000 + 710 0.2000000000 0.0000000000 1.0000000000 + 711 0.9000000000 0.2000000000 0.8000000000 + 712 0.8000000000 0.1000000000 0.8000000000 + 713 1.0000000000 0.7000000000 1.0000000000 + 714 0.3000000000 0.0000000000 1.0000000000 + 715 1.0000000000 0.0000000000 0.3000000000 + 716 0.8000000000 0.2000000000 0.9000000000 + 717 1.0000000000 0.2000000000 0.7000000000 + 718 1.0000000000 0.3000000000 0.8000000000 + 719 0.8000000000 0.0000000000 0.7000000000 + 720 0.8000000000 0.3000000000 1.0000000000 + 721 0.7000000000 0.2000000000 1.0000000000 + 722 0.7000000000 0.0000000000 0.8000000000 + 723 1.0000000000 0.6000000000 1.0000000000 + 724 1.0000000000 0.0000000000 0.4000000000 + 725 0.4000000000 0.0000000000 1.0000000000 + 726 0.9000000000 0.4000000000 1.0000000000 + 727 0.9000000000 0.0000000000 0.6000000000 + 728 0.6000000000 0.1000000000 1.0000000000 + 729 0.6000000000 0.0000000000 0.9000000000 + 730 1.0000000000 0.1000000000 0.6000000000 + 731 1.0000000000 0.4000000000 0.9000000000 + 732 1.0000000000 0.5000000000 1.0000000000 + 733 0.5000000000 0.0000000000 1.0000000000 + 734 1.0000000000 0.0000000000 0.5000000000 + 735 0.8000000000 0.2000000000 1.0000000000 + 736 1.0000000000 0.2000000000 0.8000000000 + 737 0.8000000000 0.0000000000 0.8000000000 + 738 1.0000000000 0.0000000000 0.6000000000 + 739 0.6000000000 0.0000000000 1.0000000000 + 740 1.0000000000 0.4000000000 1.0000000000 + 741 1.0000000000 0.1000000000 0.8000000000 + 742 0.9000000000 0.2000000000 1.0000000000 + 743 1.0000000000 0.2000000000 0.9000000000 + 744 0.8000000000 0.1000000000 1.0000000000 + 745 0.8000000000 0.0000000000 0.9000000000 + 746 0.9000000000 0.0000000000 0.8000000000 + 747 1.0000000000 0.0000000000 0.7000000000 + 748 1.0000000000 0.3000000000 1.0000000000 + 749 0.7000000000 0.0000000000 1.0000000000 + 750 1.0000000000 0.0000000000 0.8000000000 + 751 0.8000000000 0.0000000000 1.0000000000 + 752 1.0000000000 0.2000000000 1.0000000000 + 753 1.0000000000 0.1000000000 1.0000000000 + 754 1.0000000000 0.0000000000 0.9000000000 + 755 0.9000000000 0.0000000000 1.0000000000 + 756 1.0000000000 0.0000000000 1.0000000000 +End Nodes + + +Begin Elements GeoTransientThermalElement3D20N + 1 1 510 635 710 637 493 620 703 618 572 674 678 571 494 624 705 623 560 668 669 557 + 2 1 376 510 637 544 341 493 618 528 445 571 598 472 354 494 623 535 419 557 576 442 + 3 1 282 376 544 459 262 341 528 433 325 472 501 355 266 354 535 448 306 442 483 337 + 4 1 229 282 459 400 210 262 433 379 249 355 417 310 220 266 448 387 237 337 411 294 + 5 1 208 229 400 383 187 210 379 343 217 310 393 289 197 220 387 356 192 294 359 273 + 6 1 380 542 635 510 348 525 620 493 468 595 572 449 349 537 624 494 446 581 560 418 + 7 1 246 380 510 376 232 348 493 341 318 449 445 320 243 349 494 354 291 418 419 287 + 8 1 167 246 376 282 148 232 341 262 203 320 325 223 162 243 354 266 182 287 306 204 + 9 1 122 167 282 229 102 148 262 210 142 223 249 169 116 162 266 220 131 204 237 153 + 10 1 104 122 229 208 87 102 210 187 118 169 217 152 97 116 220 197 95 153 192 139 + 11 1 285 462 542 380 264 432 525 348 367 505 468 324 265 447 537 349 333 482 446 316 + 12 1 168 285 380 246 147 264 348 232 228 324 318 206 161 265 349 243 198 316 291 177 + 13 1 91 168 246 167 79 147 232 148 132 206 203 126 82 161 243 162 105 177 182 108 + 14 1 55 91 167 122 46 79 148 102 76 126 142 81 50 82 162 116 64 108 131 70 + 15 1 47 55 122 104 30 46 102 87 52 81 118 67 41 50 116 97 33 70 95 57 + 16 1 233 399 462 285 216 378 432 264 317 422 367 254 218 392 447 265 290 407 333 241 + 17 1 121 233 285 168 100 216 264 147 173 254 228 144 112 218 265 161 155 241 198 125 + 18 1 56 121 168 91 43 100 147 79 83 144 132 75 49 112 161 82 66 125 105 61 + 19 1 23 56 91 55 16 43 79 46 37 75 76 40 19 49 82 50 29 61 64 28 + 20 1 15 23 55 47 6 16 46 30 17 40 52 26 12 19 50 41 9 28 33 22 + 21 1 211 382 399 233 189 345 378 216 293 390 317 224 190 358 392 218 272 360 290 200 + 22 1 103 211 233 121 90 189 216 100 159 224 173 119 98 190 218 112 137 200 155 94 + 23 1 44 103 121 56 31 90 100 43 73 119 83 51 34 98 112 49 59 94 66 35 + 24 1 14 44 56 23 5 31 43 16 24 51 37 18 8 34 49 19 21 35 29 13 + 25 1 7 14 23 15 1 5 16 6 10 18 17 11 4 8 19 12 2 13 9 3 + 26 1 551 653 725 654 510 635 710 637 602 693 690 608 531 645 714 644 572 674 678 571 + 27 1 429 551 654 587 376 510 637 544 499 608 628 519 404 531 644 564 445 571 598 472 + 28 1 328 429 587 513 282 376 544 459 385 519 545 426 313 404 564 488 325 472 501 355 + 29 1 280 328 513 458 229 282 459 400 304 426 481 352 251 313 488 425 249 355 417 310 + 30 1 259 280 458 438 208 229 400 383 267 352 453 334 239 251 425 410 217 310 393 289 + 31 1 434 588 653 551 380 542 635 510 515 634 602 506 402 563 645 531 468 595 572 449 + 32 1 300 434 551 429 246 380 510 376 363 506 499 364 271 402 531 404 318 449 445 320 + 33 1 215 300 429 328 167 246 376 282 255 364 385 269 180 271 404 313 203 320 325 223 + 34 1 164 215 328 280 122 167 282 229 181 269 304 219 140 180 313 251 142 223 249 169 + 35 1 149 164 280 259 104 122 229 208 160 219 267 196 127 140 251 239 118 169 217 152 + 36 1 329 514 588 434 285 462 542 380 416 548 515 386 302 486 563 402 367 505 468 324 + 37 1 212 329 434 300 168 285 380 246 275 386 363 253 184 302 402 271 228 324 318 206 + 38 1 135 212 300 215 91 168 246 167 172 253 255 171 117 184 271 180 132 206 203 126 + 39 1 89 135 215 164 55 91 167 122 111 171 181 124 72 117 180 140 76 126 142 81 + 40 1 78 89 164 149 47 55 122 104 86 124 160 109 63 72 140 127 52 81 118 67 + 41 1 284 463 514 329 233 399 462 285 353 490 416 314 248 421 486 302 317 422 367 254 + 42 1 166 284 329 212 121 233 285 168 227 314 275 183 141 248 302 184 173 254 228 144 + 43 1 92 166 212 135 56 121 168 91 129 183 172 114 74 141 184 117 83 144 132 75 + 44 1 54 92 135 89 23 56 91 55 71 114 111 69 38 74 117 72 37 75 76 40 + 45 1 45 54 89 78 15 23 55 47 53 69 86 62 27 38 72 63 17 40 52 26 + 46 1 261 435 463 284 211 382 399 233 332 456 353 274 235 408 421 248 293 390 317 224 + 47 1 145 261 284 166 103 211 233 121 199 274 227 157 128 235 248 141 159 224 173 119 + 48 1 80 145 166 92 44 103 121 56 106 157 129 85 65 128 141 74 73 119 83 51 + 49 1 42 80 92 54 14 44 56 23 60 85 71 48 25 65 74 38 24 51 37 18 + 50 1 32 42 54 45 7 14 23 15 39 48 53 36 20 25 38 27 10 18 17 11 + 51 1 616 699 739 696 551 653 725 654 662 729 728 661 599 683 733 688 602 693 690 608 + 52 1 527 616 696 641 429 551 654 587 583 661 680 590 485 599 688 613 499 608 628 519 + 53 1 428 527 641 586 328 429 587 513 475 590 610 517 388 485 613 550 385 519 545 426 + 54 1 373 428 586 539 280 328 513 458 412 517 562 470 322 388 550 503 304 426 481 352 + 55 1 344 373 539 526 259 280 458 438 369 470 534 457 308 322 503 477 267 352 453 334 + 56 1 521 642 699 616 434 588 653 551 591 672 662 568 489 611 683 599 515 634 602 506 + 57 1 397 521 616 527 300 434 551 429 466 568 583 464 338 489 599 485 363 506 499 364 + 58 1 299 397 527 428 215 300 429 328 335 464 475 361 256 338 485 388 255 364 385 269 + 59 1 245 299 428 373 164 215 328 280 279 361 412 312 194 256 388 322 181 269 304 219 + 60 1 234 245 373 344 149 164 280 259 240 312 369 296 179 194 322 308 160 219 267 196 + 61 1 430 589 642 521 329 514 588 434 516 609 591 473 394 547 611 489 416 548 515 386 + 62 1 298 430 521 397 212 329 434 300 371 473 466 331 258 394 489 338 275 386 363 253 + 63 1 214 298 397 299 135 212 300 215 257 331 335 250 174 258 338 256 172 253 255 171 + 64 1 163 214 299 245 89 135 215 164 186 250 279 191 130 174 256 194 111 171 181 124 + 65 1 150 163 245 234 78 89 164 149 154 191 240 176 113 130 194 179 86 124 160 109 + 66 1 375 543 589 430 284 463 514 329 469 565 516 401 327 504 547 394 353 490 416 314 + 67 1 244 375 430 298 166 284 329 212 321 401 371 268 207 327 394 258 227 314 275 183 + 68 1 165 244 298 214 92 166 212 135 205 268 257 175 134 207 258 174 129 183 172 114 + 69 1 120 165 214 163 54 92 135 89 143 175 186 136 84 134 174 130 71 114 111 69 + 70 1 101 120 163 150 45 54 89 78 110 136 154 123 77 84 130 113 53 69 86 62 + 71 1 340 523 543 375 261 435 463 284 444 538 469 351 315 479 504 327 332 456 353 274 + 72 1 230 340 375 244 145 261 284 166 295 351 321 236 185 315 327 207 199 274 227 157 + 73 1 146 230 244 165 80 145 166 92 178 236 205 156 115 185 207 134 106 157 129 85 + 74 1 99 146 165 120 42 80 92 54 133 156 143 107 68 115 134 84 60 85 71 48 + 75 1 88 99 120 101 32 42 54 45 93 107 110 96 58 68 84 77 39 48 53 36 + 76 1 689 737 751 735 616 699 739 696 712 745 744 716 651 722 749 721 662 729 728 661 + 77 1 615 689 735 700 527 616 696 641 652 716 720 659 566 651 721 671 583 661 680 590 + 78 1 553 615 700 657 428 527 641 586 593 659 687 606 500 566 671 629 475 590 610 517 + 79 1 509 553 657 640 373 428 586 539 532 606 649 567 441 500 629 600 412 517 562 470 + 80 1 491 509 640 621 344 373 539 526 495 567 631 554 414 441 600 577 369 470 534 457 + 81 1 614 701 737 689 521 642 699 616 666 719 712 650 573 677 722 651 591 672 662 568 + 82 1 522 614 689 615 397 521 616 527 582 650 652 569 465 573 651 566 466 568 583 464 + 83 1 437 522 615 553 299 397 527 428 484 569 593 496 366 465 566 500 335 464 475 361 + 84 1 374 437 553 509 245 299 428 373 405 496 532 440 309 366 500 441 279 361 412 312 + 85 1 342 374 509 491 234 245 373 344 365 440 495 413 292 309 441 414 240 312 369 296 + 86 1 552 655 701 614 430 589 642 521 605 686 666 592 497 633 677 573 516 609 591 473 + 87 1 431 552 614 522 298 430 521 397 508 592 582 474 350 497 573 465 371 473 466 331 + 88 1 330 431 522 437 214 298 397 299 396 474 484 395 276 350 465 366 257 331 335 250 + 89 1 281 330 437 374 163 214 299 245 311 395 405 323 225 276 366 309 186 250 279 191 + 90 1 260 281 374 342 150 163 245 234 277 323 365 307 195 225 309 292 154 191 240 176 + 91 1 511 639 655 552 375 543 589 430 575 647 605 530 443 596 633 497 469 565 516 401 + 92 1 377 511 552 431 244 375 430 298 454 530 508 403 301 443 497 350 321 401 371 268 + 93 1 283 377 431 330 165 244 298 214 326 403 396 303 226 301 350 276 205 268 257 175 + 94 1 231 283 330 281 120 165 214 163 252 303 311 247 170 226 276 225 143 175 186 136 + 95 1 209 231 281 260 101 120 163 150 222 247 277 238 151 170 225 195 110 136 154 123 + 96 1 492 617 639 511 340 523 543 375 556 627 575 498 415 579 596 443 444 538 469 351 + 97 1 347 492 511 377 230 340 375 244 423 498 454 368 286 415 443 301 295 351 321 236 + 98 1 263 347 377 283 146 230 244 165 319 368 326 278 201 286 301 226 178 236 205 156 + 99 1 213 263 283 231 99 146 165 120 242 278 252 221 158 201 226 170 133 156 143 107 + 100 1 188 213 231 209 88 99 120 101 202 221 222 193 138 158 170 151 93 107 110 96 + 101 1 736 750 756 752 689 737 751 735 741 754 753 743 711 746 755 742 712 745 744 716 + 102 1 698 736 752 740 615 689 735 700 718 743 748 731 664 711 742 726 652 716 720 659 + 103 1 658 698 740 723 553 615 700 657 684 731 732 695 603 664 726 694 593 659 687 606 + 104 1 638 658 723 708 509 553 657 640 648 695 713 681 570 603 694 675 532 606 649 567 + 105 1 622 638 708 704 491 509 640 621 626 681 707 670 559 570 675 665 495 567 631 554 + 106 1 697 738 750 736 614 701 737 689 730 747 741 717 660 727 746 711 666 719 712 650 + 107 1 643 697 736 698 522 614 689 615 679 717 718 676 601 660 711 664 582 650 652 569 + 108 1 585 643 698 658 437 522 615 553 612 676 684 630 518 601 664 603 484 569 593 496 + 109 1 541 585 658 638 374 437 553 509 561 630 648 594 467 518 603 570 405 496 532 440 + 110 1 529 541 638 622 342 374 509 491 536 594 626 578 450 467 570 559 365 440 495 413 + 111 1 656 724 738 697 552 655 701 614 691 734 730 685 607 692 727 660 605 686 666 592 + 112 1 584 656 697 643 431 552 614 522 632 685 679 604 520 607 660 601 508 592 582 474 + 113 1 512 584 643 585 330 431 522 437 549 604 612 546 427 520 601 518 396 474 484 395 + 114 1 461 512 585 541 281 330 437 374 487 546 561 507 372 427 518 467 311 395 405 323 + 115 1 436 461 541 529 260 281 374 342 452 507 536 476 339 372 467 450 277 323 365 307 + 116 1 636 709 724 656 511 639 655 552 673 715 691 646 574 682 692 607 575 647 605 530 + 117 1 540 636 656 584 377 511 552 431 597 646 632 558 471 574 607 520 454 530 508 403 + 118 1 460 540 584 512 283 377 431 330 502 558 549 478 370 471 520 427 326 403 396 303 + 119 1 398 460 512 461 231 283 330 281 424 478 487 420 305 370 427 372 252 303 311 247 + 120 1 384 398 461 436 209 231 281 260 389 420 452 409 297 305 372 339 222 247 277 238 + 121 1 619 702 709 636 492 617 639 511 667 706 673 625 555 663 682 574 556 627 575 498 + 122 1 524 619 636 540 347 492 511 377 580 625 597 533 455 555 574 471 423 498 454 368 + 123 1 439 524 540 460 263 347 377 283 480 533 502 451 336 455 471 370 319 368 326 278 + 124 1 381 439 460 398 213 263 283 231 406 451 424 391 288 336 370 305 242 278 252 221 + 125 1 346 381 398 384 188 213 231 209 362 391 389 357 270 288 305 297 202 221 222 193 +End Elements + + +Begin Conditions GeoTNormalFluxCondition3D8N + 2 1 345 378 216 189 360 290 200 272 + 3 1 189 216 100 90 200 155 94 137 + 4 1 90 100 43 31 94 66 35 59 + 5 1 31 43 16 5 35 29 13 21 + 6 1 5 16 6 1 13 9 3 2 + 7 1 378 432 264 216 407 333 241 290 + 8 1 216 264 147 100 241 198 125 155 + 9 1 100 147 79 43 125 105 61 66 + 10 1 43 79 46 16 61 64 28 29 + 11 1 16 46 30 6 28 33 22 9 + 12 1 432 525 348 264 482 446 316 333 + 13 1 264 348 232 147 316 291 177 198 + 14 1 147 232 148 79 177 182 108 105 + 15 1 79 148 102 46 108 131 70 64 + 16 1 46 102 87 30 70 95 57 33 + 17 1 525 620 493 348 581 560 418 446 + 18 1 348 493 341 232 418 419 287 291 + 19 1 232 341 262 148 287 306 204 182 + 20 1 148 262 210 102 204 237 153 131 + 21 1 102 210 187 87 153 192 139 95 + 22 1 620 703 618 493 668 669 557 560 + 23 1 493 618 528 341 557 576 442 419 + 24 1 341 528 433 262 442 483 337 306 + 25 1 262 433 379 210 337 411 294 237 + 26 1 210 379 343 187 294 359 273 192 +End Conditions + + +Begin SubModelPart Soil + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + 188 + 189 + 190 + 191 + 192 + 193 + 194 + 195 + 196 + 197 + 198 + 199 + 200 + 201 + 202 + 203 + 204 + 205 + 206 + 207 + 208 + 209 + 210 + 211 + 212 + 213 + 214 + 215 + 216 + 217 + 218 + 219 + 220 + 221 + 222 + 223 + 224 + 225 + 226 + 227 + 228 + 229 + 230 + 231 + 232 + 233 + 234 + 235 + 236 + 237 + 238 + 239 + 240 + 241 + 242 + 243 + 244 + 245 + 246 + 247 + 248 + 249 + 250 + 251 + 252 + 253 + 254 + 255 + 256 + 257 + 258 + 259 + 260 + 261 + 262 + 263 + 264 + 265 + 266 + 267 + 268 + 269 + 270 + 271 + 272 + 273 + 274 + 275 + 276 + 277 + 278 + 279 + 280 + 281 + 282 + 283 + 284 + 285 + 286 + 287 + 288 + 289 + 290 + 291 + 292 + 293 + 294 + 295 + 296 + 297 + 298 + 299 + 300 + 301 + 302 + 303 + 304 + 305 + 306 + 307 + 308 + 309 + 310 + 311 + 312 + 313 + 314 + 315 + 316 + 317 + 318 + 319 + 320 + 321 + 322 + 323 + 324 + 325 + 326 + 327 + 328 + 329 + 330 + 331 + 332 + 333 + 334 + 335 + 336 + 337 + 338 + 339 + 340 + 341 + 342 + 343 + 344 + 345 + 346 + 347 + 348 + 349 + 350 + 351 + 352 + 353 + 354 + 355 + 356 + 357 + 358 + 359 + 360 + 361 + 362 + 363 + 364 + 365 + 366 + 367 + 368 + 369 + 370 + 371 + 372 + 373 + 374 + 375 + 376 + 377 + 378 + 379 + 380 + 381 + 382 + 383 + 384 + 385 + 386 + 387 + 388 + 389 + 390 + 391 + 392 + 393 + 394 + 395 + 396 + 397 + 398 + 399 + 400 + 401 + 402 + 403 + 404 + 405 + 406 + 407 + 408 + 409 + 410 + 411 + 412 + 413 + 414 + 415 + 416 + 417 + 418 + 419 + 420 + 421 + 422 + 423 + 424 + 425 + 426 + 427 + 428 + 429 + 430 + 431 + 432 + 433 + 434 + 435 + 436 + 437 + 438 + 439 + 440 + 441 + 442 + 443 + 444 + 445 + 446 + 447 + 448 + 449 + 450 + 451 + 452 + 453 + 454 + 455 + 456 + 457 + 458 + 459 + 460 + 461 + 462 + 463 + 464 + 465 + 466 + 467 + 468 + 469 + 470 + 471 + 472 + 473 + 474 + 475 + 476 + 477 + 478 + 479 + 480 + 481 + 482 + 483 + 484 + 485 + 486 + 487 + 488 + 489 + 490 + 491 + 492 + 493 + 494 + 495 + 496 + 497 + 498 + 499 + 500 + 501 + 502 + 503 + 504 + 505 + 506 + 507 + 508 + 509 + 510 + 511 + 512 + 513 + 514 + 515 + 516 + 517 + 518 + 519 + 520 + 521 + 522 + 523 + 524 + 525 + 526 + 527 + 528 + 529 + 530 + 531 + 532 + 533 + 534 + 535 + 536 + 537 + 538 + 539 + 540 + 541 + 542 + 543 + 544 + 545 + 546 + 547 + 548 + 549 + 550 + 551 + 552 + 553 + 554 + 555 + 556 + 557 + 558 + 559 + 560 + 561 + 562 + 563 + 564 + 565 + 566 + 567 + 568 + 569 + 570 + 571 + 572 + 573 + 574 + 575 + 576 + 577 + 578 + 579 + 580 + 581 + 582 + 583 + 584 + 585 + 586 + 587 + 588 + 589 + 590 + 591 + 592 + 593 + 594 + 595 + 596 + 597 + 598 + 599 + 600 + 601 + 602 + 603 + 604 + 605 + 606 + 607 + 608 + 609 + 610 + 611 + 612 + 613 + 614 + 615 + 616 + 617 + 618 + 619 + 620 + 621 + 622 + 623 + 624 + 625 + 626 + 627 + 628 + 629 + 630 + 631 + 632 + 633 + 634 + 635 + 636 + 637 + 638 + 639 + 640 + 641 + 642 + 643 + 644 + 645 + 646 + 647 + 648 + 649 + 650 + 651 + 652 + 653 + 654 + 655 + 656 + 657 + 658 + 659 + 660 + 661 + 662 + 663 + 664 + 665 + 666 + 667 + 668 + 669 + 670 + 671 + 672 + 673 + 674 + 675 + 676 + 677 + 678 + 679 + 680 + 681 + 682 + 683 + 684 + 685 + 686 + 687 + 688 + 689 + 690 + 691 + 692 + 693 + 694 + 695 + 696 + 697 + 698 + 699 + 700 + 701 + 702 + 703 + 704 + 705 + 706 + 707 + 708 + 709 + 710 + 711 + 712 + 713 + 714 + 715 + 716 + 717 + 718 + 719 + 720 + 721 + 722 + 723 + 724 + 725 + 726 + 727 + 728 + 729 + 730 + 731 + 732 + 733 + 734 + 735 + 736 + 737 + 738 + 739 + 740 + 741 + 742 + 743 + 744 + 745 + 746 + 747 + 748 + 749 + 750 + 751 + 752 + 753 + 754 + 755 + 756 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 346 + 357 + 362 + 381 + 384 + 389 + 391 + 398 + 406 + 409 + 420 + 424 + 436 + 439 + 451 + 452 + 460 + 461 + 476 + 478 + 480 + 487 + 502 + 507 + 512 + 524 + 529 + 533 + 536 + 540 + 541 + 546 + 549 + 558 + 561 + 578 + 580 + 584 + 585 + 594 + 597 + 604 + 612 + 619 + 622 + 625 + 626 + 630 + 632 + 636 + 638 + 643 + 646 + 648 + 656 + 658 + 667 + 670 + 673 + 676 + 679 + 681 + 684 + 685 + 691 + 695 + 697 + 698 + 702 + 704 + 706 + 707 + 708 + 709 + 713 + 715 + 717 + 718 + 723 + 724 + 730 + 731 + 732 + 734 + 736 + 738 + 740 + 741 + 743 + 747 + 748 + 750 + 752 + 753 + 754 + 756 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart initial + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + 188 + 189 + 190 + 191 + 192 + 193 + 194 + 195 + 196 + 197 + 198 + 199 + 200 + 201 + 202 + 203 + 204 + 205 + 206 + 207 + 208 + 209 + 210 + 211 + 212 + 213 + 214 + 215 + 216 + 217 + 218 + 219 + 220 + 221 + 222 + 223 + 224 + 225 + 226 + 227 + 228 + 229 + 230 + 231 + 232 + 233 + 234 + 235 + 236 + 237 + 238 + 239 + 240 + 241 + 242 + 243 + 244 + 245 + 246 + 247 + 248 + 249 + 250 + 251 + 252 + 253 + 254 + 255 + 256 + 257 + 258 + 259 + 260 + 261 + 262 + 263 + 264 + 265 + 266 + 267 + 268 + 269 + 270 + 271 + 272 + 273 + 274 + 275 + 276 + 277 + 278 + 279 + 280 + 281 + 282 + 283 + 284 + 285 + 286 + 287 + 288 + 289 + 290 + 291 + 292 + 293 + 294 + 295 + 296 + 297 + 298 + 299 + 300 + 301 + 302 + 303 + 304 + 305 + 306 + 307 + 308 + 309 + 310 + 311 + 312 + 313 + 314 + 315 + 316 + 317 + 318 + 319 + 320 + 321 + 322 + 323 + 324 + 325 + 326 + 327 + 328 + 329 + 330 + 331 + 332 + 333 + 334 + 335 + 336 + 337 + 338 + 339 + 340 + 341 + 342 + 343 + 344 + 345 + 346 + 347 + 348 + 349 + 350 + 351 + 352 + 353 + 354 + 355 + 356 + 357 + 358 + 359 + 360 + 361 + 362 + 363 + 364 + 365 + 366 + 367 + 368 + 369 + 370 + 371 + 372 + 373 + 374 + 375 + 376 + 377 + 378 + 379 + 380 + 381 + 382 + 383 + 384 + 385 + 386 + 387 + 388 + 389 + 390 + 391 + 392 + 393 + 394 + 395 + 396 + 397 + 398 + 399 + 400 + 401 + 402 + 403 + 404 + 405 + 406 + 407 + 408 + 409 + 410 + 411 + 412 + 413 + 414 + 415 + 416 + 417 + 418 + 419 + 420 + 421 + 422 + 423 + 424 + 425 + 426 + 427 + 428 + 429 + 430 + 431 + 432 + 433 + 434 + 435 + 436 + 437 + 438 + 439 + 440 + 441 + 442 + 443 + 444 + 445 + 446 + 447 + 448 + 449 + 450 + 451 + 452 + 453 + 454 + 455 + 456 + 457 + 458 + 459 + 460 + 461 + 462 + 463 + 464 + 465 + 466 + 467 + 468 + 469 + 470 + 471 + 472 + 473 + 474 + 475 + 476 + 477 + 478 + 479 + 480 + 481 + 482 + 483 + 484 + 485 + 486 + 487 + 488 + 489 + 490 + 491 + 492 + 493 + 494 + 495 + 496 + 497 + 498 + 499 + 500 + 501 + 502 + 503 + 504 + 505 + 506 + 507 + 508 + 509 + 510 + 511 + 512 + 513 + 514 + 515 + 516 + 517 + 518 + 519 + 520 + 521 + 522 + 523 + 524 + 525 + 526 + 527 + 528 + 529 + 530 + 531 + 532 + 533 + 534 + 535 + 536 + 537 + 538 + 539 + 540 + 541 + 542 + 543 + 544 + 545 + 546 + 547 + 548 + 549 + 550 + 551 + 552 + 553 + 554 + 555 + 556 + 557 + 558 + 559 + 560 + 561 + 562 + 563 + 564 + 565 + 566 + 567 + 568 + 569 + 570 + 571 + 572 + 573 + 574 + 575 + 576 + 577 + 578 + 579 + 580 + 581 + 582 + 583 + 584 + 585 + 586 + 587 + 588 + 589 + 590 + 591 + 592 + 593 + 594 + 595 + 596 + 597 + 598 + 599 + 600 + 601 + 602 + 603 + 604 + 605 + 606 + 607 + 608 + 609 + 610 + 611 + 612 + 613 + 614 + 615 + 616 + 617 + 618 + 619 + 620 + 621 + 622 + 623 + 624 + 625 + 626 + 627 + 628 + 629 + 630 + 631 + 632 + 633 + 634 + 635 + 636 + 637 + 638 + 639 + 640 + 641 + 642 + 643 + 644 + 645 + 646 + 647 + 648 + 649 + 650 + 651 + 652 + 653 + 654 + 655 + 656 + 657 + 658 + 659 + 660 + 661 + 662 + 663 + 664 + 665 + 666 + 667 + 668 + 669 + 670 + 671 + 672 + 673 + 674 + 675 + 676 + 677 + 678 + 679 + 680 + 681 + 682 + 683 + 684 + 685 + 686 + 687 + 688 + 689 + 690 + 691 + 692 + 693 + 694 + 695 + 696 + 697 + 698 + 699 + 700 + 701 + 702 + 703 + 704 + 705 + 706 + 707 + 708 + 709 + 710 + 711 + 712 + 713 + 714 + 715 + 716 + 717 + 718 + 719 + 720 + 721 + 722 + 723 + 724 + 725 + 726 + 727 + 728 + 729 + 730 + 731 + 732 + 733 + 734 + 735 + 736 + 737 + 738 + 739 + 740 + 741 + 742 + 743 + 744 + 745 + 746 + 747 + 748 + 749 + 750 + 751 + 752 + 753 + 754 + 755 + 756 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart bottom + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 5 + 6 + 9 + 13 + 16 + 21 + 22 + 28 + 29 + 30 + 31 + 33 + 35 + 43 + 46 + 57 + 59 + 61 + 64 + 66 + 70 + 79 + 87 + 90 + 94 + 95 + 100 + 102 + 105 + 108 + 125 + 131 + 137 + 139 + 147 + 148 + 153 + 155 + 177 + 182 + 187 + 189 + 192 + 198 + 200 + 204 + 210 + 216 + 232 + 237 + 241 + 262 + 264 + 272 + 273 + 287 + 290 + 291 + 294 + 306 + 316 + 333 + 337 + 341 + 343 + 345 + 348 + 359 + 360 + 378 + 379 + 407 + 411 + 418 + 419 + 432 + 433 + 442 + 446 + 482 + 483 + 493 + 525 + 528 + 557 + 560 + 576 + 581 + 618 + 620 + 668 + 669 + 703 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/MaterialParameters.json new file mode 100644 index 000000000000..b5aaba0737b5 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/MaterialParameters.json @@ -0,0 +1,28 @@ +{ + "properties": [{ + "model_part_name": "PorousDomain.Soil", + "properties_id": 1, + "Material": { + "constitutive_law": { + "name" : "GeoThermalDispersion3DLaw" + }, + "Variables": { + "DENSITY_SOLID" : 2650, + "DENSITY_WATER" : 1000, + "POROSITY" : 0.36, + "RETENTION_LAW" : "SaturatedLaw", + "SATURATED_SATURATION" : 1.0, + "SPECIFIC_HEAT_CAPACITY_SOLID" : 400.0, + "SPECIFIC_HEAT_CAPACITY_WATER" : 3795.0, + "THERMAL_CONDUCTIVITY_SOLID_XX" : 1.50, + "THERMAL_CONDUCTIVITY_SOLID_YY" : 1.50, + "THERMAL_CONDUCTIVITY_SOLID_ZZ" : 1.50, + "THERMAL_CONDUCTIVITY_SOLID_XY" : 0.0, + "THERMAL_CONDUCTIVITY_SOLID_YZ" : 0.0, + "THERMAL_CONDUCTIVITY_SOLID_XZ" : 0.0, + "THERMAL_CONDUCTIVITY_WATER" : 0.48 + }, + "Tables": {} + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/ProjectParameters.json new file mode 100644 index 000000000000..ca6e5bef96fb --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/ProjectParameters.json @@ -0,0 +1,142 @@ +{ + "problem_data": { + "problem_name": "test_thermal_heat_flux_3D8N", + "start_time": 0.0, + "end_time": 21600000, + "echo_level": 1, + "parallel_type": "OpenMP", + "number_of_threads": 1 + }, + "solver_settings": { + "solver_type": "T", + "model_part_name": "PorousDomain", + "domain_size": 3, + "model_import_settings": { + "input_type": "mdpa", + "input_filename": "test_thermal_heat_flux_3D8N" + }, + "material_import_settings": { + "materials_filename": "MaterialParameters.json" + }, + "time_stepping": { + "time_step": 600, + "max_delta_time_factor": 1000 + }, + "buffer_size": 2, + "echo_level": 1, + "clear_storage": false, + "compute_reactions": false, + "move_mesh_flag": false, + "reform_dofs_at_each_step": false, + "nodal_smoothing": false, + "block_builder": true, + "solution_type": "Transient_Heat_Transfer", + "scheme_type": "Backward_Euler", + "reset_displacements": true, + "newmark_beta": 0.25, + "newmark_gamma": 0.5, + "newmark_theta": 0.5, + "rayleigh_m": 0.0, + "rayleigh_k": 0.0, + "strategy_type": "newton_raphson", + "convergence_criterion": "temperature_criterion", + "temperature_relative_tolerance": 1.0E-4, + "temperature_absolute_tolerance": 1.0E-9, + "residual_relative_tolerance": 1.0E-4, + "residual_absolute_tolerance": 1.0E-9, + "min_iterations": 6, + "max_iterations": 15, + "number_cycles": 100, + "reduction_factor": 0.5, + "increase_factor": 2.0, + "desired_iterations": 4, + "max_radius_factor": 10.0, + "min_radius_factor": 0.1, + "calculate_reactions": true, + "max_line_search_iterations": 5, + "first_alpha_value": 0.5, + "second_alpha_value": 1.0, + "min_alpha": 0.1, + "max_alpha": 2.0, + "line_search_tolerance": 0.5, + "rotation_dofs": true, + "linear_solver_settings": { + "solver_type": "bicgstab", + "tolerance": 1.0e-6, + "max_iteration": 1000, + "scaling": true, + "preconditioner_type": "ilu0" + }, + "problem_domain_sub_model_part_list": ["Soil"], + "processes_sub_model_part_list": ["top","initial","bottom"], + "body_domain_sub_model_part_list": ["Soil"] + }, + "output_processes": { + "gid_output": [{ + "python_module": "gid_output_process", + "kratos_module": "KratosMultiphysics", + "process_name": "GiDOutputProcess", + "Parameters": { + "model_part_name": "PorousDomain.porous_computational_model_part", + "output_name": "test_thermal_heat_flux_3D8N", + "postprocess_parameters": { + "result_file_configuration": { + "gidpost_flags": { + "WriteDeformedMeshFlag": "WriteUndeformed", + "WriteConditionsFlag": "WriteElementsOnly", + "GiDPostMode": "GiD_PostAscii", + "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": ["TEMPERATURE"], + "gauss_point_results": [] + }, + "point_data_configuration": [] + } + } + }] + }, + "processes": { + "constraints_process_list": [{ + "python_module": "apply_scalar_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyScalarConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.initial", + "variable_name": "TEMPERATURE", + "is_fixed": false, + "value": 0.0, + "table": 0 + } + },{ + "python_module": "apply_scalar_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyScalarConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.top", + "variable_name": "TEMPERATURE", + "is_fixed": true, + "value": 0.0, + "table": 0 + } + }], + "loads_process_list": [{ + "python_module": "apply_scalar_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyScalarConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.bottom", + "variable_name": "NORMAL_HEAT_FLUX", + "value": 100.0, + "table": 0 + } + }], + "auxiliar_process_list": [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/test_thermal_heat_flux_3D8N.mdpa b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/test_thermal_heat_flux_3D8N.mdpa new file mode 100644 index 000000000000..847394fda04c --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/test_thermal_heat_flux_3D8N/test_thermal_heat_flux_3D8N.mdpa @@ -0,0 +1,1208 @@ + +Begin Properties 1 +End Properties + + +Begin Nodes + 1 1.0000000000 1.0000000000 0.0000000000 + 2 0.8000000000 1.0000000000 0.0000000000 + 3 1.0000000000 0.8000000000 0.0000000000 + 4 1.0000000000 1.0000000000 0.2000000000 + 5 1.0000000000 0.8000000000 0.2000000000 + 6 0.8000000000 0.8000000000 0.0000000000 + 7 0.8000000000 1.0000000000 0.2000000000 + 8 0.8000000000 0.8000000000 0.2000000000 + 9 1.0000000000 1.0000000000 0.4000000000 + 10 1.0000000000 0.6000000000 0.0000000000 + 11 0.6000000000 1.0000000000 0.0000000000 + 12 0.6000000000 1.0000000000 0.2000000000 + 13 1.0000000000 0.8000000000 0.4000000000 + 14 0.8000000000 0.6000000000 0.0000000000 + 15 0.6000000000 0.8000000000 0.0000000000 + 16 0.8000000000 1.0000000000 0.4000000000 + 17 1.0000000000 0.6000000000 0.2000000000 + 18 0.8000000000 0.8000000000 0.4000000000 + 19 0.6000000000 0.8000000000 0.2000000000 + 20 0.8000000000 0.6000000000 0.2000000000 + 21 0.6000000000 1.0000000000 0.4000000000 + 22 1.0000000000 0.6000000000 0.4000000000 + 23 0.6000000000 0.6000000000 0.0000000000 + 24 0.4000000000 1.0000000000 0.0000000000 + 25 1.0000000000 1.0000000000 0.6000000000 + 26 1.0000000000 0.4000000000 0.0000000000 + 27 0.8000000000 0.6000000000 0.4000000000 + 28 0.6000000000 0.8000000000 0.4000000000 + 29 0.6000000000 0.6000000000 0.2000000000 + 30 1.0000000000 0.4000000000 0.2000000000 + 31 1.0000000000 0.8000000000 0.6000000000 + 32 0.4000000000 0.8000000000 0.0000000000 + 33 0.8000000000 0.4000000000 0.0000000000 + 34 0.4000000000 1.0000000000 0.2000000000 + 35 0.8000000000 1.0000000000 0.6000000000 + 36 0.4000000000 0.8000000000 0.2000000000 + 37 0.8000000000 0.4000000000 0.2000000000 + 38 0.8000000000 0.8000000000 0.6000000000 + 39 0.6000000000 0.6000000000 0.4000000000 + 40 1.0000000000 0.4000000000 0.4000000000 + 41 0.4000000000 1.0000000000 0.4000000000 + 42 0.6000000000 1.0000000000 0.6000000000 + 43 0.6000000000 0.4000000000 0.0000000000 + 44 1.0000000000 0.6000000000 0.6000000000 + 45 0.4000000000 0.6000000000 0.0000000000 + 46 0.8000000000 0.4000000000 0.4000000000 + 47 0.4000000000 0.8000000000 0.4000000000 + 48 0.6000000000 0.8000000000 0.6000000000 + 49 0.6000000000 0.4000000000 0.2000000000 + 50 0.4000000000 0.6000000000 0.2000000000 + 51 0.8000000000 0.6000000000 0.6000000000 + 52 1.0000000000 0.2000000000 0.0000000000 + 53 1.0000000000 1.0000000000 0.8000000000 + 54 0.2000000000 1.0000000000 0.0000000000 + 55 1.0000000000 0.8000000000 0.8000000000 + 56 0.2000000000 0.8000000000 0.0000000000 + 57 0.8000000000 0.2000000000 0.0000000000 + 58 0.8000000000 1.0000000000 0.8000000000 + 59 0.6000000000 0.4000000000 0.4000000000 + 60 1.0000000000 0.2000000000 0.2000000000 + 61 0.2000000000 1.0000000000 0.2000000000 + 62 0.4000000000 0.6000000000 0.4000000000 + 63 0.6000000000 0.6000000000 0.6000000000 + 64 0.4000000000 1.0000000000 0.6000000000 + 65 1.0000000000 0.4000000000 0.6000000000 + 66 0.4000000000 0.4000000000 0.0000000000 + 67 0.8000000000 0.2000000000 0.2000000000 + 68 0.8000000000 0.8000000000 0.8000000000 + 69 0.2000000000 0.8000000000 0.2000000000 + 70 0.4000000000 0.4000000000 0.2000000000 + 71 0.4000000000 0.8000000000 0.6000000000 + 72 0.8000000000 0.4000000000 0.6000000000 + 73 0.6000000000 1.0000000000 0.8000000000 + 74 0.6000000000 0.2000000000 0.0000000000 + 75 0.2000000000 1.0000000000 0.4000000000 + 76 1.0000000000 0.6000000000 0.8000000000 + 77 0.2000000000 0.6000000000 0.0000000000 + 78 1.0000000000 0.2000000000 0.4000000000 + 79 0.2000000000 0.6000000000 0.2000000000 + 80 0.6000000000 0.2000000000 0.2000000000 + 81 0.6000000000 0.8000000000 0.8000000000 + 82 0.8000000000 0.2000000000 0.4000000000 + 83 0.2000000000 0.8000000000 0.4000000000 + 84 0.8000000000 0.6000000000 0.8000000000 + 85 0.6000000000 0.4000000000 0.6000000000 + 86 0.4000000000 0.4000000000 0.4000000000 + 87 0.4000000000 0.6000000000 0.6000000000 + 88 0.6000000000 0.2000000000 0.4000000000 + 89 0.2000000000 0.6000000000 0.4000000000 + 90 0.6000000000 0.6000000000 0.8000000000 + 91 0.4000000000 1.0000000000 0.8000000000 + 92 1.0000000000 0.4000000000 0.8000000000 + 93 0.0000000000 1.0000000000 0.0000000000 + 94 1.0000000000 0.2000000000 0.6000000000 + 95 1.0000000000 0.0000000000 0.0000000000 + 96 0.2000000000 0.4000000000 0.0000000000 + 97 0.2000000000 1.0000000000 0.6000000000 + 98 1.0000000000 1.0000000000 1.0000000000 + 99 0.4000000000 0.2000000000 0.0000000000 + 100 0.4000000000 0.8000000000 0.8000000000 + 101 0.2000000000 0.4000000000 0.2000000000 + 102 0.8000000000 0.2000000000 0.6000000000 + 103 0.8000000000 1.0000000000 1.0000000000 + 104 1.0000000000 0.0000000000 0.2000000000 + 105 0.8000000000 0.0000000000 0.0000000000 + 106 1.0000000000 0.8000000000 1.0000000000 + 107 0.0000000000 0.8000000000 0.0000000000 + 108 0.0000000000 1.0000000000 0.2000000000 + 109 0.2000000000 0.8000000000 0.6000000000 + 110 0.4000000000 0.2000000000 0.2000000000 + 111 0.8000000000 0.4000000000 0.8000000000 + 112 0.4000000000 0.4000000000 0.6000000000 + 113 0.8000000000 0.0000000000 0.2000000000 + 114 0.0000000000 0.8000000000 0.2000000000 + 115 0.8000000000 0.8000000000 1.0000000000 + 116 0.4000000000 0.6000000000 0.8000000000 + 117 0.2000000000 0.4000000000 0.4000000000 + 118 1.0000000000 0.0000000000 0.4000000000 + 119 0.6000000000 1.0000000000 1.0000000000 + 120 0.0000000000 0.6000000000 0.0000000000 + 121 0.0000000000 1.0000000000 0.4000000000 + 122 0.6000000000 0.2000000000 0.6000000000 + 123 1.0000000000 0.6000000000 1.0000000000 + 124 0.6000000000 0.0000000000 0.0000000000 + 125 0.2000000000 0.6000000000 0.6000000000 + 126 0.4000000000 0.2000000000 0.4000000000 + 127 0.6000000000 0.4000000000 0.8000000000 + 128 0.8000000000 0.6000000000 1.0000000000 + 129 0.0000000000 0.6000000000 0.2000000000 + 130 0.0000000000 0.8000000000 0.4000000000 + 131 0.6000000000 0.8000000000 1.0000000000 + 132 0.6000000000 0.0000000000 0.2000000000 + 133 0.8000000000 0.0000000000 0.4000000000 + 134 0.2000000000 1.0000000000 0.8000000000 + 135 1.0000000000 0.2000000000 0.8000000000 + 136 0.2000000000 0.2000000000 0.0000000000 + 137 0.8000000000 0.2000000000 0.8000000000 + 138 0.2000000000 0.2000000000 0.2000000000 + 139 0.6000000000 0.0000000000 0.4000000000 + 140 0.2000000000 0.8000000000 0.8000000000 + 141 0.6000000000 0.6000000000 1.0000000000 + 142 0.0000000000 0.6000000000 0.4000000000 + 143 0.4000000000 0.4000000000 0.8000000000 + 144 0.4000000000 0.0000000000 0.0000000000 + 145 1.0000000000 0.0000000000 0.6000000000 + 146 1.0000000000 0.4000000000 1.0000000000 + 147 0.0000000000 1.0000000000 0.6000000000 + 148 0.2000000000 0.4000000000 0.6000000000 + 149 0.4000000000 1.0000000000 1.0000000000 + 150 0.0000000000 0.4000000000 0.0000000000 + 151 0.4000000000 0.2000000000 0.6000000000 + 152 0.8000000000 0.4000000000 1.0000000000 + 153 0.8000000000 0.0000000000 0.6000000000 + 154 0.4000000000 0.0000000000 0.2000000000 + 155 0.4000000000 0.8000000000 1.0000000000 + 156 0.0000000000 0.4000000000 0.2000000000 + 157 0.0000000000 0.8000000000 0.6000000000 + 158 0.2000000000 0.6000000000 0.8000000000 + 159 0.6000000000 0.2000000000 0.8000000000 + 160 0.2000000000 0.2000000000 0.4000000000 + 161 0.4000000000 0.0000000000 0.4000000000 + 162 0.6000000000 0.4000000000 1.0000000000 + 163 0.0000000000 0.6000000000 0.6000000000 + 164 0.0000000000 0.4000000000 0.4000000000 + 165 0.4000000000 0.6000000000 1.0000000000 + 166 0.6000000000 0.0000000000 0.6000000000 + 167 0.0000000000 1.0000000000 0.8000000000 + 168 0.2000000000 1.0000000000 1.0000000000 + 169 0.0000000000 0.2000000000 0.0000000000 + 170 1.0000000000 0.0000000000 0.8000000000 + 171 0.2000000000 0.0000000000 0.0000000000 + 172 1.0000000000 0.2000000000 1.0000000000 + 173 0.2000000000 0.2000000000 0.6000000000 + 174 0.4000000000 0.2000000000 0.8000000000 + 175 0.2000000000 0.4000000000 0.8000000000 + 176 0.8000000000 0.0000000000 0.8000000000 + 177 0.8000000000 0.2000000000 1.0000000000 + 178 0.2000000000 0.0000000000 0.2000000000 + 179 0.2000000000 0.8000000000 1.0000000000 + 180 0.0000000000 0.8000000000 0.8000000000 + 181 0.0000000000 0.2000000000 0.2000000000 + 182 0.0000000000 0.4000000000 0.6000000000 + 183 0.4000000000 0.0000000000 0.6000000000 + 184 0.4000000000 0.4000000000 1.0000000000 + 185 0.0000000000 0.6000000000 0.8000000000 + 186 0.6000000000 0.2000000000 1.0000000000 + 187 0.2000000000 0.0000000000 0.4000000000 + 188 0.6000000000 0.0000000000 0.8000000000 + 189 0.0000000000 0.2000000000 0.4000000000 + 190 0.2000000000 0.6000000000 1.0000000000 + 191 0.2000000000 0.2000000000 0.8000000000 + 192 0.4000000000 0.0000000000 0.8000000000 + 193 0.0000000000 0.4000000000 0.8000000000 + 194 0.0000000000 1.0000000000 1.0000000000 + 195 0.0000000000 0.2000000000 0.6000000000 + 196 1.0000000000 0.0000000000 1.0000000000 + 197 0.2000000000 0.0000000000 0.6000000000 + 198 0.2000000000 0.4000000000 1.0000000000 + 199 0.0000000000 0.0000000000 0.0000000000 + 200 0.4000000000 0.2000000000 1.0000000000 + 201 0.0000000000 0.0000000000 0.2000000000 + 202 0.0000000000 0.8000000000 1.0000000000 + 203 0.8000000000 0.0000000000 1.0000000000 + 204 0.6000000000 0.0000000000 1.0000000000 + 205 0.0000000000 0.0000000000 0.4000000000 + 206 0.0000000000 0.6000000000 1.0000000000 + 207 0.0000000000 0.2000000000 0.8000000000 + 208 0.2000000000 0.0000000000 0.8000000000 + 209 0.2000000000 0.2000000000 1.0000000000 + 210 0.0000000000 0.0000000000 0.6000000000 + 211 0.4000000000 0.0000000000 1.0000000000 + 212 0.0000000000 0.4000000000 1.0000000000 + 213 0.0000000000 0.0000000000 0.8000000000 + 214 0.2000000000 0.0000000000 1.0000000000 + 215 0.0000000000 0.2000000000 1.0000000000 + 216 0.0000000000 0.0000000000 1.0000000000 +End Nodes + + +Begin Elements GeoTransientThermalElement3D8N + 1 1 191 208 214 209 207 213 216 215 + 2 1 175 191 209 198 193 207 215 212 + 3 1 158 175 198 190 185 193 212 206 + 4 1 140 158 190 179 180 185 206 202 + 5 1 134 140 179 168 167 180 202 194 + 6 1 173 197 208 191 195 210 213 207 + 7 1 148 173 191 175 182 195 207 193 + 8 1 125 148 175 158 163 182 193 185 + 9 1 109 125 158 140 157 163 185 180 + 10 1 97 109 140 134 147 157 180 167 + 11 1 160 187 197 173 189 205 210 195 + 12 1 117 160 173 148 164 189 195 182 + 13 1 89 117 148 125 142 164 182 163 + 14 1 83 89 125 109 130 142 163 157 + 15 1 75 83 109 97 121 130 157 147 + 16 1 138 178 187 160 181 201 205 189 + 17 1 101 138 160 117 156 181 189 164 + 18 1 79 101 117 89 129 156 164 142 + 19 1 69 79 89 83 114 129 142 130 + 20 1 61 69 83 75 108 114 130 121 + 21 1 136 171 178 138 169 199 201 181 + 22 1 96 136 138 101 150 169 181 156 + 23 1 77 96 101 79 120 150 156 129 + 24 1 56 77 79 69 107 120 129 114 + 25 1 54 56 69 61 93 107 114 108 + 26 1 174 192 211 200 191 208 214 209 + 27 1 143 174 200 184 175 191 209 198 + 28 1 116 143 184 165 158 175 198 190 + 29 1 100 116 165 155 140 158 190 179 + 30 1 91 100 155 149 134 140 179 168 + 31 1 151 183 192 174 173 197 208 191 + 32 1 112 151 174 143 148 173 191 175 + 33 1 87 112 143 116 125 148 175 158 + 34 1 71 87 116 100 109 125 158 140 + 35 1 64 71 100 91 97 109 140 134 + 36 1 126 161 183 151 160 187 197 173 + 37 1 86 126 151 112 117 160 173 148 + 38 1 62 86 112 87 89 117 148 125 + 39 1 47 62 87 71 83 89 125 109 + 40 1 41 47 71 64 75 83 109 97 + 41 1 110 154 161 126 138 178 187 160 + 42 1 70 110 126 86 101 138 160 117 + 43 1 50 70 86 62 79 101 117 89 + 44 1 36 50 62 47 69 79 89 83 + 45 1 34 36 47 41 61 69 83 75 + 46 1 99 144 154 110 136 171 178 138 + 47 1 66 99 110 70 96 136 138 101 + 48 1 45 66 70 50 77 96 101 79 + 49 1 32 45 50 36 56 77 79 69 + 50 1 24 32 36 34 54 56 69 61 + 51 1 159 188 204 186 174 192 211 200 + 52 1 127 159 186 162 143 174 200 184 + 53 1 90 127 162 141 116 143 184 165 + 54 1 81 90 141 131 100 116 165 155 + 55 1 73 81 131 119 91 100 155 149 + 56 1 122 166 188 159 151 183 192 174 + 57 1 85 122 159 127 112 151 174 143 + 58 1 63 85 127 90 87 112 143 116 + 59 1 48 63 90 81 71 87 116 100 + 60 1 42 48 81 73 64 71 100 91 + 61 1 88 139 166 122 126 161 183 151 + 62 1 59 88 122 85 86 126 151 112 + 63 1 39 59 85 63 62 86 112 87 + 64 1 28 39 63 48 47 62 87 71 + 65 1 21 28 48 42 41 47 71 64 + 66 1 80 132 139 88 110 154 161 126 + 67 1 49 80 88 59 70 110 126 86 + 68 1 29 49 59 39 50 70 86 62 + 69 1 19 29 39 28 36 50 62 47 + 70 1 12 19 28 21 34 36 47 41 + 71 1 74 124 132 80 99 144 154 110 + 72 1 43 74 80 49 66 99 110 70 + 73 1 23 43 49 29 45 66 70 50 + 74 1 15 23 29 19 32 45 50 36 + 75 1 11 15 19 12 24 32 36 34 + 76 1 137 176 203 177 159 188 204 186 + 77 1 111 137 177 152 127 159 186 162 + 78 1 84 111 152 128 90 127 162 141 + 79 1 68 84 128 115 81 90 141 131 + 80 1 58 68 115 103 73 81 131 119 + 81 1 102 153 176 137 122 166 188 159 + 82 1 72 102 137 111 85 122 159 127 + 83 1 51 72 111 84 63 85 127 90 + 84 1 38 51 84 68 48 63 90 81 + 85 1 35 38 68 58 42 48 81 73 + 86 1 82 133 153 102 88 139 166 122 + 87 1 46 82 102 72 59 88 122 85 + 88 1 27 46 72 51 39 59 85 63 + 89 1 18 27 51 38 28 39 63 48 + 90 1 16 18 38 35 21 28 48 42 + 91 1 67 113 133 82 80 132 139 88 + 92 1 37 67 82 46 49 80 88 59 + 93 1 20 37 46 27 29 49 59 39 + 94 1 8 20 27 18 19 29 39 28 + 95 1 7 8 18 16 12 19 28 21 + 96 1 57 105 113 67 74 124 132 80 + 97 1 33 57 67 37 43 74 80 49 + 98 1 14 33 37 20 23 43 49 29 + 99 1 6 14 20 8 15 23 29 19 + 100 1 2 6 8 7 11 15 19 12 + 101 1 135 170 196 172 137 176 203 177 + 102 1 92 135 172 146 111 137 177 152 + 103 1 76 92 146 123 84 111 152 128 + 104 1 55 76 123 106 68 84 128 115 + 105 1 53 55 106 98 58 68 115 103 + 106 1 94 145 170 135 102 153 176 137 + 107 1 65 94 135 92 72 102 137 111 + 108 1 44 65 92 76 51 72 111 84 + 109 1 31 44 76 55 38 51 84 68 + 110 1 25 31 55 53 35 38 68 58 + 111 1 78 118 145 94 82 133 153 102 + 112 1 40 78 94 65 46 82 102 72 + 113 1 22 40 65 44 27 46 72 51 + 114 1 13 22 44 31 18 27 51 38 + 115 1 9 13 31 25 16 18 38 35 + 116 1 60 104 118 78 67 113 133 82 + 117 1 30 60 78 40 37 67 82 46 + 118 1 17 30 40 22 20 37 46 27 + 119 1 5 17 22 13 8 20 27 18 + 120 1 4 5 13 9 7 8 18 16 + 121 1 52 95 104 60 57 105 113 67 + 122 1 26 52 60 30 33 57 67 37 + 123 1 10 26 30 17 14 33 37 20 + 124 1 3 10 17 5 6 14 20 8 + 125 1 1 3 5 4 2 6 8 7 +End Elements + + +Begin Conditions GeoTNormalFluxCondition3D4N + 2 1 199 201 181 169 + 3 1 169 181 156 150 + 4 1 150 156 129 120 + 5 1 120 129 114 107 + 6 1 107 114 108 93 + 7 1 201 205 189 181 + 8 1 181 189 164 156 + 9 1 156 164 142 129 + 10 1 129 142 130 114 + 11 1 114 130 121 108 + 12 1 205 210 195 189 + 13 1 189 195 182 164 + 14 1 164 182 163 142 + 15 1 142 163 157 130 + 16 1 130 157 147 121 + 17 1 210 213 207 195 + 18 1 195 207 193 182 + 19 1 182 193 185 163 + 20 1 163 185 180 157 + 21 1 157 180 167 147 + 22 1 213 216 215 207 + 23 1 207 215 212 193 + 24 1 193 212 206 185 + 25 1 185 206 202 180 + 26 1 180 202 194 167 +End Conditions + + +Begin SubModelPart Soil + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + 188 + 189 + 190 + 191 + 192 + 193 + 194 + 195 + 196 + 197 + 198 + 199 + 200 + 201 + 202 + 203 + 204 + 205 + 206 + 207 + 208 + 209 + 210 + 211 + 212 + 213 + 214 + 215 + 216 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 3 + 4 + 5 + 9 + 10 + 13 + 17 + 22 + 25 + 26 + 30 + 31 + 40 + 44 + 52 + 53 + 55 + 60 + 65 + 76 + 78 + 92 + 94 + 95 + 98 + 104 + 106 + 118 + 123 + 135 + 145 + 146 + 170 + 172 + 196 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart initial + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + 188 + 189 + 190 + 191 + 192 + 193 + 194 + 195 + 196 + 197 + 198 + 199 + 200 + 201 + 202 + 203 + 204 + 205 + 206 + 207 + 208 + 209 + 210 + 211 + 212 + 213 + 214 + 215 + 216 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart bottom + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 93 + 107 + 108 + 114 + 120 + 121 + 129 + 130 + 142 + 147 + 150 + 156 + 157 + 163 + 164 + 167 + 169 + 180 + 181 + 182 + 185 + 189 + 193 + 194 + 195 + 199 + 201 + 202 + 205 + 206 + 207 + 210 + 212 + 213 + 215 + 216 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_transient_thermal.py b/applications/GeoMechanicsApplication/tests/test_transient_thermal.py index f144ae5eee84..1143259c1ec6 100644 --- a/applications/GeoMechanicsApplication/tests/test_transient_thermal.py +++ b/applications/GeoMechanicsApplication/tests/test_transient_thermal.py @@ -10,6 +10,7 @@ class KratosGeoMechanicsTransientThermalTests(KratosUnittest.TestCase): etalon_value1 = 28.04411163544510063559 etalon_value2 = 17.55892791313559322 etalon_value3 = 41.3797035928672316 + etalon_value4 = 35.31073446327683615819 def setUp(self): # Code here will be placed BEFORE every test in this TestCase. @@ -91,6 +92,22 @@ def test_thermal_heat_flux_3D10N(self): temp = temperature[124] self.assertAlmostEqual(self.etalon_value3, temp) + def test_thermal_heat_flux_3D8N(self): + test_name = 'test_thermal_heat_flux_3D8N' + file_path = test_helper.get_file_path(os.path.join('test_thermal_element', 'test_thermal_heat_flux', test_name)) + simulation = test_helper.run_kratos(file_path) + temperature = test_helper.get_temperature(simulation) + temp = temperature[38] + self.assertAlmostEqual(self.etalon_value4, temp) + + def test_thermal_heat_flux_3D20N(self): + test_name = 'test_thermal_heat_flux_3D20N' + file_path = test_helper.get_file_path(os.path.join('test_thermal_element', 'test_thermal_heat_flux', test_name)) + simulation = test_helper.run_kratos(file_path) + temperature = test_helper.get_temperature(simulation) + temp = temperature[213] + self.assertAlmostEqual(self.etalon_value4, temp) + def test_transient_thermal_heat_flux_2D3N(self): test_name = 'test_transient_thermal_heat_flux_2D3N' file_path = test_helper.get_file_path(os.path.join('test_thermal_element', 'test_transient_thermal_heat_flux', test_name)) From 3a6681ce15d1321751bd22c4970957dbe3a3746f Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 09:40:51 +0100 Subject: [PATCH 03/23] Fix sign of the normal stresses for 3D cases --- .../custom_conditions/U_Pw_normal_face_load_condition.cpp | 6 +++++- .../surface_normal_load_3D_diff_order_condition.cpp | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp index 29e97d9778c1..81e125ed19ec 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp @@ -98,7 +98,7 @@ void UPwNormalFaceLoadCondition::CalculateTractionVector( const unsigned int& GPoint) { Vector NormalVector = ZeroVector(TDim); - const double NormalStress = MathUtils<>::Dot(row(NContainer, GPoint), Variables.NormalStressVector); + double NormalStress = MathUtils<>::Dot(row(NContainer, GPoint), Variables.NormalStressVector); if constexpr (TDim == 2) { const double TangentialStress = MathUtils<>::Dot(row(NContainer, GPoint), Variables.TangentialStressVector); @@ -107,6 +107,10 @@ void UPwNormalFaceLoadCondition::CalculateTractionVector( rTractionVector[1] = NormalStress * NormalVector[0] + TangentialStress * NormalVector[1]; } else if constexpr (TDim == 3) { + // Since the normal vector is pointing outwards for the 3D conditions, the normal stress + // should switch sign, such that positive stress is defined inwardly. + NormalStress *= -1; + MathUtils::CrossProduct(NormalVector, column(Jacobian, 0), column(Jacobian, 1)); rTractionVector = NormalStress * NormalVector; } diff --git a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp index 4a0a1f9c4001..da40433e8d2d 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp @@ -62,6 +62,10 @@ CalculateConditionVector(ConditionVariables& rVariables, unsigned int PointNumbe NormalStress += rVariables.Nu[i]*rGeom[i].FastGetSolutionStepValue(NORMAL_CONTACT_STRESS); } + // Since the normal vector is pointing outwards for the 3D conditions, the normal stress should + // switch sign, such that positive stress is defined inwardly. + NormalStress *= -1; + rVariables.ConditionVector[0] = NormalStress * NormalVector[0]; rVariables.ConditionVector[1] = NormalStress * NormalVector[1]; rVariables.ConditionVector[2] = NormalStress * NormalVector[2]; From 545ef426a3cc9fc1d63aaf7ca687ed9031fe3377 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 10:14:01 +0100 Subject: [PATCH 04/23] Refactored diff order condition calculation function --- ...ce_normal_load_3D_diff_order_condition.cpp | 39 ++++++++----------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp index da40433e8d2d..4f869e4e00da 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp @@ -15,6 +15,7 @@ // Project includes #include "custom_conditions/surface_normal_load_3D_diff_order_condition.hpp" +#include "custom_utilities/math_utilities.hpp" namespace Kratos { @@ -37,40 +38,32 @@ Condition::Pointer SurfaceNormalLoad3DDiffOrderCondition::Create(IndexType NewId } //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -void SurfaceNormalLoad3DDiffOrderCondition:: -CalculateConditionVector(ConditionVariables& rVariables, unsigned int PointNumber) +void SurfaceNormalLoad3DDiffOrderCondition::CalculateConditionVector(ConditionVariables& rVariables, + unsigned int PointNumber) { KRATOS_TRY - double NormalVector[3]; - - NormalVector[0] = rVariables.JContainer[PointNumber](1,0) * rVariables.JContainer[PointNumber](2,1) - - rVariables.JContainer[PointNumber](2,0) * rVariables.JContainer[PointNumber](1,1); + Vector NormalVector(3); + MathUtils::CrossProduct(NormalVector, column(rVariables.JContainer[PointNumber], 0), + column(rVariables.JContainer[PointNumber], 1)); - NormalVector[1] = rVariables.JContainer[PointNumber](2,0) * rVariables.JContainer[PointNumber](0,1) - - rVariables.JContainer[PointNumber](0,0) * rVariables.JContainer[PointNumber](2,1); + const GeometryType& rGeom = GetGeometry(); + const SizeType NumUNodes = rGeom.PointsNumber(); - NormalVector[2] = rVariables.JContainer[PointNumber](0,0) * rVariables.JContainer[PointNumber](1,1) - - rVariables.JContainer[PointNumber](1,0) * rVariables.JContainer[PointNumber](0,1); - - const GeometryType& rGeom = GetGeometry(); - const SizeType NumUNodes = rGeom.PointsNumber(); - double NormalStress = 0.0; - rVariables.ConditionVector.resize(3,false); + Vector normal_stress_vector(NumUNodes); + std::transform(rGeom.begin(), rGeom.end(), normal_stress_vector.begin(), [](const auto& node) { + return node.FastGetSolutionStepValue(NORMAL_CONTACT_STRESS); + }); - for ( SizeType i = 0; i < NumUNodes; ++i ) { - NormalStress += rVariables.Nu[i]*rGeom[i].FastGetSolutionStepValue(NORMAL_CONTACT_STRESS); - } + double NormalStress = MathUtils<>::Dot(rVariables.Nu, normal_stress_vector); // Since the normal vector is pointing outwards for the 3D conditions, the normal stress should // switch sign, such that positive stress is defined inwardly. NormalStress *= -1; - rVariables.ConditionVector[0] = NormalStress * NormalVector[0]; - rVariables.ConditionVector[1] = NormalStress * NormalVector[1]; - rVariables.ConditionVector[2] = NormalStress * NormalVector[2]; + rVariables.ConditionVector = NormalStress * NormalVector; - KRATOS_CATCH( "" ) + KRATOS_CATCH("") } //---------------------------------------------------------------------------------------- @@ -96,7 +89,7 @@ void SurfaceNormalLoad3DDiffOrderCondition:: for ( SizeType i = 0; i < NumUNodes; ++i ) { Index = i * 3; - + rRightHandSideVector[Index] += rVariables.Nu[i] * rVariables.ConditionVector[0] * rVariables.IntegrationCoefficient; rRightHandSideVector[Index+1] += rVariables.Nu[i] * rVariables.ConditionVector[1] * rVariables.IntegrationCoefficient; rRightHandSideVector[Index+2] += rVariables.Nu[i] * rVariables.ConditionVector[2] * rVariables.IntegrationCoefficient; From 646836e5f46e87d3b4837039c6d8adfb5bbfef5e Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 10:30:21 +0100 Subject: [PATCH 05/23] Minor refactoring --- .../surface_normal_load_3D_diff_order_condition.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp index 4f869e4e00da..500d54a249e7 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp @@ -50,17 +50,14 @@ void SurfaceNormalLoad3DDiffOrderCondition::CalculateConditionVector(ConditionVa const GeometryType& rGeom = GetGeometry(); const SizeType NumUNodes = rGeom.PointsNumber(); - Vector normal_stress_vector(NumUNodes); - std::transform(rGeom.begin(), rGeom.end(), normal_stress_vector.begin(), [](const auto& node) { + Vector normal_stresses(NumUNodes); + std::transform(rGeom.begin(), rGeom.end(), normal_stresses.begin(), [](const auto& node) { return node.FastGetSolutionStepValue(NORMAL_CONTACT_STRESS); }); - double NormalStress = MathUtils<>::Dot(rVariables.Nu, normal_stress_vector); - // Since the normal vector is pointing outwards for the 3D conditions, the normal stress should - // switch sign, such that positive stress is defined inwardly. - NormalStress *= -1; - + // switch sign (multiplied by -1), such that positive stress is defined inwardly. + double NormalStress = -1 * MathUtils<>::Dot(rVariables.Nu, normal_stresses); rVariables.ConditionVector = NormalStress * NormalVector; KRATOS_CATCH("") From d5c51ad81ce481475967126a726d1a6596d50513 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 11:30:34 +0100 Subject: [PATCH 06/23] Renamed test to reflect diff order character --- .../MaterialParameters.json | 0 .../ProjectParameters.json | 6 +++--- .../normal_load_quad_8n_diff_order.mdpa} | 0 .../GeoMechanicsApplication/tests/test_water_pressure.py | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) rename applications/GeoMechanicsApplication/tests/{test_normal_load_quad_8n.gid => normal_load_quad_8n_diff_order}/MaterialParameters.json (100%) rename applications/GeoMechanicsApplication/tests/{test_normal_load_quad_8n.gid => normal_load_quad_8n_diff_order}/ProjectParameters.json (97%) rename applications/GeoMechanicsApplication/tests/{test_normal_load_quad_8n.gid/test_normal_load_quad_8n.mdpa => normal_load_quad_8n_diff_order/normal_load_quad_8n_diff_order.mdpa} (100%) diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/MaterialParameters.json similarity index 100% rename from applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/MaterialParameters.json rename to applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/MaterialParameters.json diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/ProjectParameters.json similarity index 97% rename from applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/ProjectParameters.json rename to applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/ProjectParameters.json index 5c9c4a8afdce..7a821b5a49d1 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/ProjectParameters.json @@ -1,6 +1,6 @@ { "problem_data": { - "problem_name": "test_normal_load_quad_8n", + "problem_name": "normal_load_quad_8n_diff_order", "start_time": 0.0, "end_time": 1.0, "echo_level": 1, @@ -13,7 +13,7 @@ "domain_size": 2, "model_import_settings": { "input_type": "mdpa", - "input_filename": "test_normal_load_quad_8n" + "input_filename": "normal_load_quad_8n_diff_order" }, "material_import_settings": { "materials_filename": "MaterialParameters.json" @@ -74,7 +74,7 @@ "process_name": "GiDOutputProcess", "Parameters": { "model_part_name": "PorousDomain.porous_computational_model_part", - "output_name": "test_normal_load_quad_8n", + "output_name": "normal_load_quad_8n_diff_order", "postprocess_parameters": { "result_file_configuration": { "gidpost_flags": { diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/test_normal_load_quad_8n.mdpa b/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/normal_load_quad_8n_diff_order.mdpa similarity index 100% rename from applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/test_normal_load_quad_8n.mdpa rename to applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/normal_load_quad_8n_diff_order.mdpa diff --git a/applications/GeoMechanicsApplication/tests/test_water_pressure.py b/applications/GeoMechanicsApplication/tests/test_water_pressure.py index ceef666cd320..4cd6cea46e23 100644 --- a/applications/GeoMechanicsApplication/tests/test_water_pressure.py +++ b/applications/GeoMechanicsApplication/tests/test_water_pressure.py @@ -338,9 +338,9 @@ def test_normal_load_triangle_6n(self): n_dim = 2 self.assert_linear_elastic_saturated_block(simulation, n_dim) - def test_normal_load_quad_8n(self): - test_name = 'test_normal_load_quad_8n' - file_path = test_helper.get_file_path(os.path.join('.', test_name + '.gid')) + def test_normal_load_quad_8n_diff_order(self): + test_name = 'normal_load_quad_8n_diff_order' + file_path = test_helper.get_file_path(test_name) simulation = test_helper.run_kratos(file_path) n_dim = 2 From 2b766af5bdf654ded7b81a03b28505c28c580879 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 11:38:58 +0100 Subject: [PATCH 07/23] Renamed test to mention diff order --- .../MaterialParameters.json | 0 .../ProjectParameters.json | 6 +++--- .../normal_load_tetra_10n_diff_order.mdpa} | 0 .../GeoMechanicsApplication/tests/test_water_pressure.py | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) rename applications/GeoMechanicsApplication/tests/{test_normal_load_tetra_10n.gid => normal_load_tetra_10n_diff_order}/MaterialParameters.json (100%) rename applications/GeoMechanicsApplication/tests/{test_normal_load_tetra_10n.gid => normal_load_tetra_10n_diff_order}/ProjectParameters.json (97%) rename applications/GeoMechanicsApplication/tests/{test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa => normal_load_tetra_10n_diff_order/normal_load_tetra_10n_diff_order.mdpa} (100%) diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/MaterialParameters.json similarity index 100% rename from applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/MaterialParameters.json rename to applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/MaterialParameters.json diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/ProjectParameters.json similarity index 97% rename from applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/ProjectParameters.json rename to applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/ProjectParameters.json index 4c57fa9092fa..42ecfd44f3ff 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/ProjectParameters.json @@ -1,6 +1,6 @@ { "problem_data": { - "problem_name": "test_normal_load_tetra_10n", + "problem_name": "normal_load_tetra_10n_diff_order", "start_time": 0.0, "end_time": 1.0, "echo_level": 1, @@ -13,7 +13,7 @@ "domain_size": 2, "model_import_settings": { "input_type": "mdpa", - "input_filename": "test_normal_load_tetra_10n" + "input_filename": "normal_load_tetra_10n_diff_order" }, "material_import_settings": { "materials_filename": "MaterialParameters.json" @@ -74,7 +74,7 @@ "process_name": "GiDOutputProcess", "Parameters": { "model_part_name": "PorousDomain.porous_computational_model_part", - "output_name": "test_normal_load_tetra_10n", + "output_name": "normal_load_tetra_10n_diff_order", "postprocess_parameters": { "result_file_configuration": { "gidpost_flags": { diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa b/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/normal_load_tetra_10n_diff_order.mdpa similarity index 100% rename from applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa rename to applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/normal_load_tetra_10n_diff_order.mdpa diff --git a/applications/GeoMechanicsApplication/tests/test_water_pressure.py b/applications/GeoMechanicsApplication/tests/test_water_pressure.py index 4cd6cea46e23..8d20a541c564 100644 --- a/applications/GeoMechanicsApplication/tests/test_water_pressure.py +++ b/applications/GeoMechanicsApplication/tests/test_water_pressure.py @@ -346,9 +346,9 @@ def test_normal_load_quad_8n_diff_order(self): n_dim = 2 self.assert_linear_elastic_saturated_block(simulation, n_dim) - def test_normal_load_tetra_10n(self): - test_name = 'test_normal_load_tetra_10n' - file_path = test_helper.get_file_path(os.path.join('.', test_name + '.gid')) + def test_normal_load_tetra_10n_diff_order(self): + test_name = 'normal_load_tetra_10n_diff_order' + file_path = test_helper.get_file_path(test_name) simulation = test_helper.run_kratos(file_path) n_dim = 3 From 7adf82f2a2c0ba6ad9aa94f1005f85e3505c0cc0 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 11:43:10 +0100 Subject: [PATCH 08/23] Renamed triangle test to mention diff order --- .../MaterialParameters.json | 0 .../ProjectParameters.json | 6 +++--- .../normal_load_triangle_6n_diff_order.mdpa} | 0 .../GeoMechanicsApplication/tests/test_water_pressure.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename applications/GeoMechanicsApplication/tests/{test_normal_load_triangle_6n.gid => normal_load_triangle_6n_diff_order}/MaterialParameters.json (100%) rename applications/GeoMechanicsApplication/tests/{test_normal_load_triangle_6n.gid => normal_load_triangle_6n_diff_order}/ProjectParameters.json (97%) rename applications/GeoMechanicsApplication/tests/{test_normal_load_triangle_6n.gid/test_normal_load_triangle_6n.mdpa => normal_load_triangle_6n_diff_order/normal_load_triangle_6n_diff_order.mdpa} (100%) diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/MaterialParameters.json similarity index 100% rename from applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/MaterialParameters.json rename to applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/MaterialParameters.json diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/ProjectParameters.json similarity index 97% rename from applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/ProjectParameters.json rename to applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/ProjectParameters.json index f167b9aa592c..e5b3d79373cc 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/ProjectParameters.json @@ -1,6 +1,6 @@ { "problem_data": { - "problem_name": "test_normal_load_triangle_6n", + "problem_name": "normal_load_triangle_6n_diff_order", "start_time": 0.0, "end_time": 1.0, "echo_level": 1, @@ -13,7 +13,7 @@ "domain_size": 2, "model_import_settings": { "input_type": "mdpa", - "input_filename": "test_normal_load_triangle_6n" + "input_filename": "normal_load_triangle_6n_diff_order" }, "material_import_settings": { "materials_filename": "MaterialParameters.json" @@ -74,7 +74,7 @@ "process_name": "GiDOutputProcess", "Parameters": { "model_part_name": "PorousDomain.porous_computational_model_part", - "output_name": "test_normal_load_triangle_6n", + "output_name": "normal_load_triangle_6n_diff_order", "postprocess_parameters": { "result_file_configuration": { "gidpost_flags": { diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/test_normal_load_triangle_6n.mdpa b/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/normal_load_triangle_6n_diff_order.mdpa similarity index 100% rename from applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/test_normal_load_triangle_6n.mdpa rename to applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/normal_load_triangle_6n_diff_order.mdpa diff --git a/applications/GeoMechanicsApplication/tests/test_water_pressure.py b/applications/GeoMechanicsApplication/tests/test_water_pressure.py index 8d20a541c564..b35f5e267d78 100644 --- a/applications/GeoMechanicsApplication/tests/test_water_pressure.py +++ b/applications/GeoMechanicsApplication/tests/test_water_pressure.py @@ -331,8 +331,8 @@ def test_normal_load_triangle_3n_fic(self): self.assert_linear_elastic_saturated_block(simulation, n_dim) def test_normal_load_triangle_6n(self): - test_name = 'test_normal_load_triangle_6n' - file_path = test_helper.get_file_path(os.path.join('.', test_name + '.gid')) + test_name = 'normal_load_triangle_6n_diff_order' + file_path = test_helper.get_file_path(test_name) simulation = test_helper.run_kratos(file_path) n_dim = 2 From 0fdb128766bb7a9ac497c7b826dfc3af530b79b5 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 13:54:38 +0100 Subject: [PATCH 09/23] Some code and comment improvements --- .../U_Pw_normal_face_load_condition.cpp | 2 +- ...ce_normal_load_3D_diff_order_condition.cpp | 23 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp index 81e125ed19ec..497e1f8a425c 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_face_load_condition.cpp @@ -108,7 +108,7 @@ void UPwNormalFaceLoadCondition::CalculateTractionVector( } else if constexpr (TDim == 3) { // Since the normal vector is pointing outwards for the 3D conditions, the normal stress - // should switch sign, such that positive stress is defined inwardly. + // should switch sign, such that positive normal contact stress is defined inwards. NormalStress *= -1; MathUtils::CrossProduct(NormalVector, column(Jacobian, 0), column(Jacobian, 1)); diff --git a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp index 500d54a249e7..81fb8f28599c 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp @@ -37,28 +37,27 @@ Condition::Pointer SurfaceNormalLoad3DDiffOrderCondition::Create(IndexType NewId return Condition::Pointer(new SurfaceNormalLoad3DDiffOrderCondition(NewId, GetGeometry().Create(ThisNodes), pProperties)); } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void SurfaceNormalLoad3DDiffOrderCondition::CalculateConditionVector(ConditionVariables& rVariables, unsigned int PointNumber) { KRATOS_TRY - Vector NormalVector(3); - MathUtils::CrossProduct(NormalVector, column(rVariables.JContainer[PointNumber], 0), + Vector normal_vector(3); + MathUtils::CrossProduct(normal_vector, column(rVariables.JContainer[PointNumber], 0), column(rVariables.JContainer[PointNumber], 1)); - const GeometryType& rGeom = GetGeometry(); - const SizeType NumUNodes = rGeom.PointsNumber(); + const auto& r_geometry = GetGeometry(); + const auto number_of_displacement_nodes = r_geometry.PointsNumber(); - Vector normal_stresses(NumUNodes); - std::transform(rGeom.begin(), rGeom.end(), normal_stresses.begin(), [](const auto& node) { - return node.FastGetSolutionStepValue(NORMAL_CONTACT_STRESS); + Vector normal_stresses(number_of_displacement_nodes); + std::transform(r_geometry.begin(), r_geometry.end(), normal_stresses.begin(), [](const auto& r_node) { + return r_node.FastGetSolutionStepValue(NORMAL_CONTACT_STRESS); }); - // Since the normal vector is pointing outwards for the 3D conditions, the normal stress should - // switch sign (multiplied by -1), such that positive stress is defined inwardly. - double NormalStress = -1 * MathUtils<>::Dot(rVariables.Nu, normal_stresses); - rVariables.ConditionVector = NormalStress * NormalVector; + // Since the normal vector is pointing outwards for the 3D conditions, the normal stress + // should switch sign, such that positive normal contact stress is defined inwards. + const double normal_stress = -1 * MathUtils<>::Dot(rVariables.Nu, normal_stresses); + rVariables.ConditionVector = normal_stress * normal_vector; KRATOS_CATCH("") } From de213c3b5cf245efa4cd18568d7d4bbf8365ce0e Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 14:07:31 +0100 Subject: [PATCH 10/23] Added test for hexa_8n_normal_load test, which does not assert anything yet. --- .../MaterialParameters.json | 29 ++++ .../ProjectParameters.json | 141 ++++++++++++++++++ .../hexa_8n_normal_load.mdpa | 75 ++++++++++ .../tests/test_normal_load_on_hexa_element.py | 31 ++++ 4 files changed, 276 insertions(+) create mode 100644 applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MaterialParameters.json create mode 100644 applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json create mode 100644 applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/hexa_8n_normal_load.mdpa create mode 100644 applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MaterialParameters.json new file mode 100644 index 000000000000..d310cd52c605 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MaterialParameters.json @@ -0,0 +1,29 @@ +{ + "properties": [{ + "model_part_name": "PorousDomain.Soil", + "properties_id": 1, + "Material": { + "constitutive_law": { + "name" : "LinearElastic3DLaw" + }, + "Variables": { + "IGNORE_UNDRAINED" : true, + "YOUNG_MODULUS" : 3.0e7, + "POISSON_RATIO" : 0, + "DENSITY_SOLID" : 0, + "DENSITY_WATER" : 1.0e3, + "POROSITY" : 0.3, + "BULK_MODULUS_SOLID" : 1.0e16, + "BULK_MODULUS_FLUID" : 2.0e-30, + "PERMEABILITY_XX" : 4.5e-30, + "PERMEABILITY_YY" : 4.5e-30, + "PERMEABILITY_ZZ" : 4.5e-30, + "PERMEABILITY_XY" : 0.0, + "PERMEABILITY_YZ" : 0.0, + "PERMEABILITY_ZX" : 0.0, + "DYNAMIC_VISCOSITY" : 1.0e-3 + }, + "Tables": {} + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json new file mode 100644 index 000000000000..6b3e3ff517da --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json @@ -0,0 +1,141 @@ +{ + "problem_data": { + "problem_name": "hexa_8n_normal_load", + "start_time": 0.0, + "end_time": 1.0, + "echo_level": 1, + "parallel_type": "OpenMP", + "number_of_threads": 1 + }, + "solver_settings": { + "solver_type": "U_Pw", + "model_part_name": "PorousDomain", + "domain_size": 3, + "model_import_settings": { + "input_type": "mdpa", + "input_filename": "hexa_8n_normal_load" + }, + "material_import_settings": { + "materials_filename": "MaterialParameters.json" + }, + "time_stepping": { + "time_step": 0.25 + }, + "buffer_size": 2, + "echo_level": 1, + "clear_storage": false, + "compute_reactions": true, + "move_mesh_flag": true, + "reform_dofs_at_each_step": false, + "nodal_smoothing": true, + "block_builder": true, + "solution_type": "Quasi-Static", + "scheme_type": "Newmark", + "reset_displacements": true, + "newmark_beta": 0.25, + "newmark_gamma": 0.5, + "newmark_theta": 0.5, + "rayleigh_m": 0.0, + "rayleigh_k": 0.0, + "strategy_type": "newton_raphson", + "convergence_criterion": "displacement_criterion", + "displacement_relative_tolerance": 1.0E-9, + "displacement_absolute_tolerance": 1.0E-9, + "residual_relative_tolerance": 1.0E-4, + "residual_absolute_tolerance": 1.0E-9, + "min_iterations": 6, + "max_iterations": 15, + "number_cycles": 100, + "reduction_factor": 0.5, + "increase_factor": 2.0, + "desired_iterations": 4, + "max_radius_factor": 10.0, + "min_radius_factor": 0.1, + "calculate_reactions": true, + "max_line_search_iterations": 5, + "first_alpha_value": 0.5, + "second_alpha_value": 1.0, + "min_alpha": 0.1, + "max_alpha": 2.0, + "line_search_tolerance": 0.5, + "rotation_dofs": true, + "linear_solver_settings": { + "solver_type": "LinearSolversApplication.sparse_lu", + "scaling": true + }, + "problem_domain_sub_model_part_list": ["Soil"], + "processes_sub_model_part_list": ["BottomFixed","TopLoad"], + "body_domain_sub_model_part_list": ["Soil"] + }, + "output_processes": { + "gid_output": [{ + "python_module": "gid_output_process", + "kratos_module": "KratosMultiphysics", + "process_name": "GiDOutputProcess", + "Parameters": { + "model_part_name": "PorousDomain.porous_computational_model_part", + "output_name": "hexa_8n_normal_load", + "postprocess_parameters": { + "result_file_configuration": { + "gidpost_flags": { + "WriteDeformedMeshFlag": "WriteUndeformed", + "WriteConditionsFlag": "WriteElementsOnly", + "GiDPostMode": "GiD_PostBinary", + "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","TOTAL_DISPLACEMENT","ROTATION","WATER_PRESSURE","REACTION","REACTION_WATER_PRESSURE","POINT_LOAD","LINE_LOAD","SURFACE_LOAD","NORMAL_CONTACT_STRESS","TANGENTIAL_CONTACT_STRESS","NORMAL_FLUID_FLUX","VOLUME_ACCELERATION","NODAL_CAUCHY_STRESS_TENSOR","NODAL_DAMAGE_VARIABLE","NODAL_JOINT_WIDTH","NODAL_JOINT_DAMAGE"], + "gauss_point_results": ["MOMENT","FORCE","GREEN_LAGRANGE_STRAIN_TENSOR","CAUCHY_STRESS_TENSOR","TOTAL_STRESS_TENSOR","VON_MISES_STRESS","FLUID_FLUX_VECTOR","PERMEABILITY_MATRIX","DAMAGE_VARIABLE","JOINT_WIDTH","LOCAL_STRESS_VECTOR","LOCAL_RELATIVE_DISPLACEMENT_VECTOR","LOCAL_FLUID_FLUX_VECTOR","LOCAL_PERMEABILITY_MATRIX"] + }, + "point_data_configuration": [] + } + } + }] + }, + "processes": { + "constraints_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.BottomFixed", + "variable_name": "DISPLACEMENT", + "active": [true,true,true], + "is_fixed": [true,true,true], + "value": [0.0,0.0,0.0], + "table": [0,0,0] + } + },{ + "python_module": "apply_scalar_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyScalarConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.BottomFixed", + "variable_name": "WATER_PRESSURE", + "active": true, + "is_fixed": true, + "value": 0.0, + "table": 0 + } + }], + "loads_process_list": [{ + "python_module": "apply_normal_load_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyNormalLoadTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.TopLoad", + "variable_name": "NORMAL_CONTACT_STRESS", + "active": [true,false], + "value": [1000.0,0.0], + "table": [0,0], + "fluid_pressure_type": "Uniform" + } + }] + } +} diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/hexa_8n_normal_load.mdpa b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/hexa_8n_normal_load.mdpa new file mode 100644 index 000000000000..0ff31839760a --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/hexa_8n_normal_load.mdpa @@ -0,0 +1,75 @@ + +Begin Properties 1 +End Properties + +Begin Nodes + 1 0.0000000000 0.0000000000 0.0000000000 + 2 5.0000000000 0.0000000000 0.0000000000 + 3 5.0000000000 5.0000000000 0.0000000000 + 4 0.0000000000 5.0000000000 0.0000000000 + 5 0.0000000000 0.0000000000 5.0000000000 + 6 5.0000000000 0.0000000000 5.0000000000 + 7 5.0000000000 5.0000000000 5.0000000000 + 8 0.0000000000 5.0000000000 5.0000000000 +End Nodes + + +Begin Elements UPwSmallStrainElement3D8N + 1 1 1 2 3 4 5 6 7 8 +End Elements + +Begin Conditions UpwNormalFaceLoadCondition3D4N + 1 1 5 6 7 8 +End Conditions + + +Begin SubModelPart Soil + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + End SubModelPartNodes + Begin SubModelPartElements + 1 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart BottomFixed + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart TopLoad + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 5 + 6 + 7 + 8 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 1 + End SubModelPartConditions +End SubModelPart diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py new file mode 100644 index 000000000000..c7c99133be76 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py @@ -0,0 +1,31 @@ +import os + +import KratosMultiphysics.KratosUnittest as KratosUnittest +import test_helper + +class KratosGeoMechanicsNormalLoadHexaTests(KratosUnittest.TestCase): + """ + This class contains benchmark tests to test if normal loads are correctly calculated on 1D elements. + """ + + def setUp(self): + # Code here will be placed BEFORE every test in this TestCase. + pass + + def tearDown(self): + # Code here will be placed AFTER every test in this TestCase. + pass + + def test_hexa_8n_normal_load(self): + test_name = 'hexa_8n_normal_load' + file_path = test_helper.get_file_path(test_name) + simulation = test_helper.run_kratos(file_path) + + + + + + self.assertAlmostEqual(0, 0, places=3) + +if __name__ == '__main__': + KratosUnittest.main() \ No newline at end of file From d1e38a125ede2c7e480e53399430443b82181f15 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 14:07:59 +0100 Subject: [PATCH 11/23] Revert "Renamed test to reflect diff order character" This reverts commit d5c51ad81ce481475967126a726d1a6596d50513. --- .../MaterialParameters.json | 0 .../ProjectParameters.json | 6 +++--- .../test_normal_load_quad_8n.mdpa} | 0 .../GeoMechanicsApplication/tests/test_water_pressure.py | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) rename applications/GeoMechanicsApplication/tests/{normal_load_quad_8n_diff_order => test_normal_load_quad_8n.gid}/MaterialParameters.json (100%) rename applications/GeoMechanicsApplication/tests/{normal_load_quad_8n_diff_order => test_normal_load_quad_8n.gid}/ProjectParameters.json (97%) rename applications/GeoMechanicsApplication/tests/{normal_load_quad_8n_diff_order/normal_load_quad_8n_diff_order.mdpa => test_normal_load_quad_8n.gid/test_normal_load_quad_8n.mdpa} (100%) diff --git a/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/MaterialParameters.json similarity index 100% rename from applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/MaterialParameters.json rename to applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/MaterialParameters.json diff --git a/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/ProjectParameters.json similarity index 97% rename from applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/ProjectParameters.json rename to applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/ProjectParameters.json index 7a821b5a49d1..5c9c4a8afdce 100644 --- a/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/ProjectParameters.json @@ -1,6 +1,6 @@ { "problem_data": { - "problem_name": "normal_load_quad_8n_diff_order", + "problem_name": "test_normal_load_quad_8n", "start_time": 0.0, "end_time": 1.0, "echo_level": 1, @@ -13,7 +13,7 @@ "domain_size": 2, "model_import_settings": { "input_type": "mdpa", - "input_filename": "normal_load_quad_8n_diff_order" + "input_filename": "test_normal_load_quad_8n" }, "material_import_settings": { "materials_filename": "MaterialParameters.json" @@ -74,7 +74,7 @@ "process_name": "GiDOutputProcess", "Parameters": { "model_part_name": "PorousDomain.porous_computational_model_part", - "output_name": "normal_load_quad_8n_diff_order", + "output_name": "test_normal_load_quad_8n", "postprocess_parameters": { "result_file_configuration": { "gidpost_flags": { diff --git a/applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/normal_load_quad_8n_diff_order.mdpa b/applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/test_normal_load_quad_8n.mdpa similarity index 100% rename from applications/GeoMechanicsApplication/tests/normal_load_quad_8n_diff_order/normal_load_quad_8n_diff_order.mdpa rename to applications/GeoMechanicsApplication/tests/test_normal_load_quad_8n.gid/test_normal_load_quad_8n.mdpa diff --git a/applications/GeoMechanicsApplication/tests/test_water_pressure.py b/applications/GeoMechanicsApplication/tests/test_water_pressure.py index b35f5e267d78..3cb6ca30e1cf 100644 --- a/applications/GeoMechanicsApplication/tests/test_water_pressure.py +++ b/applications/GeoMechanicsApplication/tests/test_water_pressure.py @@ -338,9 +338,9 @@ def test_normal_load_triangle_6n(self): n_dim = 2 self.assert_linear_elastic_saturated_block(simulation, n_dim) - def test_normal_load_quad_8n_diff_order(self): - test_name = 'normal_load_quad_8n_diff_order' - file_path = test_helper.get_file_path(test_name) + def test_normal_load_quad_8n(self): + test_name = 'test_normal_load_quad_8n' + file_path = test_helper.get_file_path(os.path.join('.', test_name + '.gid')) simulation = test_helper.run_kratos(file_path) n_dim = 2 From 04ced095265d588ab843bcd14da881d6d94a7805 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 14:08:07 +0100 Subject: [PATCH 12/23] Revert "Renamed test to mention diff order" This reverts commit 2b766af5bdf654ded7b81a03b28505c28c580879. --- .../MaterialParameters.json | 0 .../ProjectParameters.json | 6 +++--- .../test_normal_load_tetra_10n.mdpa} | 0 .../GeoMechanicsApplication/tests/test_water_pressure.py | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) rename applications/GeoMechanicsApplication/tests/{normal_load_tetra_10n_diff_order => test_normal_load_tetra_10n.gid}/MaterialParameters.json (100%) rename applications/GeoMechanicsApplication/tests/{normal_load_tetra_10n_diff_order => test_normal_load_tetra_10n.gid}/ProjectParameters.json (97%) rename applications/GeoMechanicsApplication/tests/{normal_load_tetra_10n_diff_order/normal_load_tetra_10n_diff_order.mdpa => test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa} (100%) diff --git a/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/MaterialParameters.json similarity index 100% rename from applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/MaterialParameters.json rename to applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/MaterialParameters.json diff --git a/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/ProjectParameters.json similarity index 97% rename from applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/ProjectParameters.json rename to applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/ProjectParameters.json index 42ecfd44f3ff..4c57fa9092fa 100644 --- a/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/ProjectParameters.json @@ -1,6 +1,6 @@ { "problem_data": { - "problem_name": "normal_load_tetra_10n_diff_order", + "problem_name": "test_normal_load_tetra_10n", "start_time": 0.0, "end_time": 1.0, "echo_level": 1, @@ -13,7 +13,7 @@ "domain_size": 2, "model_import_settings": { "input_type": "mdpa", - "input_filename": "normal_load_tetra_10n_diff_order" + "input_filename": "test_normal_load_tetra_10n" }, "material_import_settings": { "materials_filename": "MaterialParameters.json" @@ -74,7 +74,7 @@ "process_name": "GiDOutputProcess", "Parameters": { "model_part_name": "PorousDomain.porous_computational_model_part", - "output_name": "normal_load_tetra_10n_diff_order", + "output_name": "test_normal_load_tetra_10n", "postprocess_parameters": { "result_file_configuration": { "gidpost_flags": { diff --git a/applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/normal_load_tetra_10n_diff_order.mdpa b/applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa similarity index 100% rename from applications/GeoMechanicsApplication/tests/normal_load_tetra_10n_diff_order/normal_load_tetra_10n_diff_order.mdpa rename to applications/GeoMechanicsApplication/tests/test_normal_load_tetra_10n.gid/test_normal_load_tetra_10n.mdpa diff --git a/applications/GeoMechanicsApplication/tests/test_water_pressure.py b/applications/GeoMechanicsApplication/tests/test_water_pressure.py index 3cb6ca30e1cf..32c46528cea8 100644 --- a/applications/GeoMechanicsApplication/tests/test_water_pressure.py +++ b/applications/GeoMechanicsApplication/tests/test_water_pressure.py @@ -346,9 +346,9 @@ def test_normal_load_quad_8n(self): n_dim = 2 self.assert_linear_elastic_saturated_block(simulation, n_dim) - def test_normal_load_tetra_10n_diff_order(self): - test_name = 'normal_load_tetra_10n_diff_order' - file_path = test_helper.get_file_path(test_name) + def test_normal_load_tetra_10n(self): + test_name = 'test_normal_load_tetra_10n' + file_path = test_helper.get_file_path(os.path.join('.', test_name + '.gid')) simulation = test_helper.run_kratos(file_path) n_dim = 3 From dbd786b5456eb1686ae381508a262e0e61395acc Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 14:08:15 +0100 Subject: [PATCH 13/23] Revert "Renamed triangle test to mention diff order" This reverts commit 7adf82f2a2c0ba6ad9aa94f1005f85e3505c0cc0. --- .../MaterialParameters.json | 0 .../ProjectParameters.json | 6 +++--- .../test_normal_load_triangle_6n.mdpa} | 0 .../GeoMechanicsApplication/tests/test_water_pressure.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) rename applications/GeoMechanicsApplication/tests/{normal_load_triangle_6n_diff_order => test_normal_load_triangle_6n.gid}/MaterialParameters.json (100%) rename applications/GeoMechanicsApplication/tests/{normal_load_triangle_6n_diff_order => test_normal_load_triangle_6n.gid}/ProjectParameters.json (97%) rename applications/GeoMechanicsApplication/tests/{normal_load_triangle_6n_diff_order/normal_load_triangle_6n_diff_order.mdpa => test_normal_load_triangle_6n.gid/test_normal_load_triangle_6n.mdpa} (100%) diff --git a/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/MaterialParameters.json similarity index 100% rename from applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/MaterialParameters.json rename to applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/MaterialParameters.json diff --git a/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/ProjectParameters.json similarity index 97% rename from applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/ProjectParameters.json rename to applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/ProjectParameters.json index e5b3d79373cc..f167b9aa592c 100644 --- a/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/ProjectParameters.json @@ -1,6 +1,6 @@ { "problem_data": { - "problem_name": "normal_load_triangle_6n_diff_order", + "problem_name": "test_normal_load_triangle_6n", "start_time": 0.0, "end_time": 1.0, "echo_level": 1, @@ -13,7 +13,7 @@ "domain_size": 2, "model_import_settings": { "input_type": "mdpa", - "input_filename": "normal_load_triangle_6n_diff_order" + "input_filename": "test_normal_load_triangle_6n" }, "material_import_settings": { "materials_filename": "MaterialParameters.json" @@ -74,7 +74,7 @@ "process_name": "GiDOutputProcess", "Parameters": { "model_part_name": "PorousDomain.porous_computational_model_part", - "output_name": "normal_load_triangle_6n_diff_order", + "output_name": "test_normal_load_triangle_6n", "postprocess_parameters": { "result_file_configuration": { "gidpost_flags": { diff --git a/applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/normal_load_triangle_6n_diff_order.mdpa b/applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/test_normal_load_triangle_6n.mdpa similarity index 100% rename from applications/GeoMechanicsApplication/tests/normal_load_triangle_6n_diff_order/normal_load_triangle_6n_diff_order.mdpa rename to applications/GeoMechanicsApplication/tests/test_normal_load_triangle_6n.gid/test_normal_load_triangle_6n.mdpa diff --git a/applications/GeoMechanicsApplication/tests/test_water_pressure.py b/applications/GeoMechanicsApplication/tests/test_water_pressure.py index 32c46528cea8..ceef666cd320 100644 --- a/applications/GeoMechanicsApplication/tests/test_water_pressure.py +++ b/applications/GeoMechanicsApplication/tests/test_water_pressure.py @@ -331,8 +331,8 @@ def test_normal_load_triangle_3n_fic(self): self.assert_linear_elastic_saturated_block(simulation, n_dim) def test_normal_load_triangle_6n(self): - test_name = 'normal_load_triangle_6n_diff_order' - file_path = test_helper.get_file_path(test_name) + test_name = 'test_normal_load_triangle_6n' + file_path = test_helper.get_file_path(os.path.join('.', test_name + '.gid')) simulation = test_helper.run_kratos(file_path) n_dim = 2 From b9f44c81d3913e6ce1e36aa2e4d5231253cfa69d Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 16:12:32 +0100 Subject: [PATCH 14/23] Added asserts in the normal load test for hexa element --- .../ProjectParameters.json | 8 +-- .../tests/test_normal_load_on_hexa_element.py | 54 +++++++++++++------ 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json index 6b3e3ff517da..5d74d5f12b10 100644 --- a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json @@ -19,7 +19,7 @@ "materials_filename": "MaterialParameters.json" }, "time_stepping": { - "time_step": 0.25 + "time_step": 1.0 }, "buffer_size": 2, "echo_level": 1, @@ -80,7 +80,7 @@ "gidpost_flags": { "WriteDeformedMeshFlag": "WriteUndeformed", "WriteConditionsFlag": "WriteElementsOnly", - "GiDPostMode": "GiD_PostBinary", + "GiDPostMode": "GiD_PostAscii", "MultiFileFlag": "SingleFile" }, "file_label": "step", @@ -90,8 +90,8 @@ "node_output": false, "skin_output": false, "plane_output": [], - "nodal_results": ["DISPLACEMENT","TOTAL_DISPLACEMENT","ROTATION","WATER_PRESSURE","REACTION","REACTION_WATER_PRESSURE","POINT_LOAD","LINE_LOAD","SURFACE_LOAD","NORMAL_CONTACT_STRESS","TANGENTIAL_CONTACT_STRESS","NORMAL_FLUID_FLUX","VOLUME_ACCELERATION","NODAL_CAUCHY_STRESS_TENSOR","NODAL_DAMAGE_VARIABLE","NODAL_JOINT_WIDTH","NODAL_JOINT_DAMAGE"], - "gauss_point_results": ["MOMENT","FORCE","GREEN_LAGRANGE_STRAIN_TENSOR","CAUCHY_STRESS_TENSOR","TOTAL_STRESS_TENSOR","VON_MISES_STRESS","FLUID_FLUX_VECTOR","PERMEABILITY_MATRIX","DAMAGE_VARIABLE","JOINT_WIDTH","LOCAL_STRESS_VECTOR","LOCAL_RELATIVE_DISPLACEMENT_VECTOR","LOCAL_FLUID_FLUX_VECTOR","LOCAL_PERMEABILITY_MATRIX"] + "nodal_results": ["DISPLACEMENT"], + "gauss_point_results": ["TOTAL_STRESS_TENSOR"] }, "point_data_configuration": [] } diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py index c7c99133be76..090a97806455 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py @@ -3,29 +3,51 @@ import KratosMultiphysics.KratosUnittest as KratosUnittest import test_helper + class KratosGeoMechanicsNormalLoadHexaTests(KratosUnittest.TestCase): """ - This class contains benchmark tests to test if normal loads are correctly calculated on 1D elements. + This class contains tests for applying normal loads on 3D elements. """ - def setUp(self): - # Code here will be placed BEFORE every test in this TestCase. - pass - - def tearDown(self): - # Code here will be placed AFTER every test in this TestCase. - pass - def test_hexa_8n_normal_load(self): test_name = 'hexa_8n_normal_load' file_path = test_helper.get_file_path(test_name) - simulation = test_helper.run_kratos(file_path) - - - - + test_helper.run_kratos(file_path) + + all_integration_points = [0, 1, 2, 3, 4, 5, 6, 7] + output_file_path = os.path.join(file_path, test_name + '.post.res') + output_reader = test_helper.GiDOutputFileReader() + output_data = output_reader.read_output_from(output_file_path) + total_stresses = \ + test_helper.GiDOutputFileReader.element_integration_point_values_at_time("TOTAL_STRESS_TENSOR", 1.0, + output_data, element_ids=[1], + integration_point_indices=all_integration_points)[0] + + self.assertEqual(len(total_stresses), 8) + + for total_stress in total_stresses: + self.assertAlmostEqual(total_stress[0], 0.0, 6) # Sxx + self.assertAlmostEqual(total_stress[1], 0.0, 6) # Syy + self.assertAlmostEqual(total_stress[2], -1000.0, 6) # Szz + + top_node_nbrs = [5, 6, 7, 8] + displacements_at_top = test_helper.GiDOutputFileReader.nodal_values_at_time("DISPLACEMENT", 1.0, output_data, + node_ids=top_node_nbrs) + bottom_node_nbrs = [1, 2, 3, 4] + displacements_at_bottom = test_helper.GiDOutputFileReader.nodal_values_at_time("DISPLACEMENT", 1.0, output_data, + node_ids=bottom_node_nbrs) + + young_modulus = 3e7 + A = 25.0 + L = 5.0 + normal_contact_stress_at_top = -1000.0 + expected_displacement = normal_contact_stress_at_top * A / (young_modulus * A / L) + + for displacement_at_top in displacements_at_top: + self.assertAlmostEqual(displacement_at_top[2], expected_displacement, 6) + for displacement_at_bottom in displacements_at_bottom: + self.assertAlmostEqual(displacement_at_bottom[2], 0.0, 6) - self.assertAlmostEqual(0, 0, places=3) if __name__ == '__main__': - KratosUnittest.main() \ No newline at end of file + KratosUnittest.main() From abc89b462f92de6292a9e83a41f0535c29b2454a Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Wed, 27 Mar 2024 16:18:43 +0100 Subject: [PATCH 15/23] Renames --- .../tests/test_normal_load_on_hexa_element.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py index 090a97806455..2a7ccc64c502 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py @@ -38,10 +38,10 @@ def test_hexa_8n_normal_load(self): node_ids=bottom_node_nbrs) young_modulus = 3e7 - A = 25.0 - L = 5.0 + area = 25.0 + length = 5.0 normal_contact_stress_at_top = -1000.0 - expected_displacement = normal_contact_stress_at_top * A / (young_modulus * A / L) + expected_displacement = normal_contact_stress_at_top * area / (young_modulus * area / length) for displacement_at_top in displacements_at_top: self.assertAlmostEqual(displacement_at_top[2], expected_displacement, 6) From a0efacc81163ca9b150c0c6258122d7b03d9bedf Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Thu, 28 Mar 2024 09:33:35 +0100 Subject: [PATCH 16/23] Added clarifying comments for the new test --- .../tests/test_normal_load_on_hexa_element.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py index 2a7ccc64c502..f0a4d78c899e 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py @@ -28,7 +28,9 @@ def test_hexa_8n_normal_load(self): for total_stress in total_stresses: self.assertAlmostEqual(total_stress[0], 0.0, 6) # Sxx self.assertAlmostEqual(total_stress[1], 0.0, 6) # Syy - self.assertAlmostEqual(total_stress[2], -1000.0, 6) # Szz + + # Szz, note the negative sign, for a positive NORMAL_CONTACT_STRESS on the top face. + self.assertAlmostEqual(total_stress[2], -1000.0, 6) top_node_nbrs = [5, 6, 7, 8] displacements_at_top = test_helper.GiDOutputFileReader.nodal_values_at_time("DISPLACEMENT", 1.0, output_data, From 7685203225a5914a2043846e1443a366e0cc4469 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Thu, 28 Mar 2024 09:51:46 +0100 Subject: [PATCH 17/23] Fixed absorbing boundary 3d tests --- .../hexa_mesh_in_Z/hexa_mesh_in_Z.mdpa | 16 +++++----- .../tetra_mesh_in_Y/tetra_mesh_in_Y.mdpa | 32 +++++++++---------- .../tetra_mesh_in_Z/tetra_mesh_in_Z.mdpa | 32 +++++++++---------- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/hexa_mesh_in_Z/hexa_mesh_in_Z.mdpa b/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/hexa_mesh_in_Z/hexa_mesh_in_Z.mdpa index aeab806d9a82..f720f707d239 100644 --- a/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/hexa_mesh_in_Z/hexa_mesh_in_Z.mdpa +++ b/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/hexa_mesh_in_Z/hexa_mesh_in_Z.mdpa @@ -151,17 +151,17 @@ End Elements Begin Conditions UPwFaceLoadCondition3D4N - 1 1 5 13 9 2 - 2 1 12 21 13 5 - 3 1 3 5 2 1 - 4 1 10 12 5 3 + 1 1 2 9 13 5 + 2 1 5 13 21 12 + 3 1 1 2 5 3 + 4 1 3 5 12 10 End Conditions Begin Conditions UPwLysmerAbsorbingCondition3D4N - 5 1 93 95 98 94 - 6 1 94 98 99 97 - 7 1 91 93 94 92 - 8 1 92 94 97 96 + 5 1 94 98 95 93 + 6 1 97 99 98 94 + 7 1 92 94 93 91 + 8 1 96 97 94 92 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Y/tetra_mesh_in_Y.mdpa b/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Y/tetra_mesh_in_Y.mdpa index 5334bd89d36d..ffc7d7d29d13 100644 --- a/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Y/tetra_mesh_in_Y.mdpa +++ b/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Y/tetra_mesh_in_Y.mdpa @@ -351,25 +351,25 @@ End Elements Begin Conditions UPwFaceLoadCondition3D3N - 1 1 10 5 2 - 2 1 10 14 5 - 3 1 23 5 14 - 4 1 23 13 5 - 5 1 5 3 1 - 6 1 5 1 2 - 7 1 5 9 3 - 8 1 5 13 9 + 1 1 10 2 5 + 2 1 10 5 14 + 3 1 23 14 5 + 4 1 23 5 13 + 5 1 5 1 3 + 6 1 5 2 1 + 7 1 5 3 9 + 8 1 5 9 13 End Conditions Begin Conditions UPwLysmerAbsorbingCondition3D3N - 9 1 95 94 98 - 10 1 95 93 94 - 11 1 99 94 97 - 12 1 99 98 94 - 13 1 94 91 92 - 14 1 94 93 91 - 15 1 94 92 96 - 16 1 94 96 97 + 9 1 95 98 94 + 10 1 95 94 93 + 11 1 99 97 94 + 12 1 99 94 98 + 13 1 94 92 91 + 14 1 94 91 93 + 15 1 94 96 92 + 16 1 94 97 96 End Conditions diff --git a/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Z/tetra_mesh_in_Z.mdpa b/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Z/tetra_mesh_in_Z.mdpa index 214f807f4a01..a4fa342c2d70 100644 --- a/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Z/tetra_mesh_in_Z.mdpa +++ b/applications/GeoMechanicsApplication/tests/lysmer_boundary_column3D/tetra_mesh_in_Z/tetra_mesh_in_Z.mdpa @@ -351,25 +351,25 @@ End Elements Begin Conditions UPwFaceLoadCondition3D3N - 1 1 5 13 9 - 2 1 5 9 3 - 3 1 5 12 21 - 4 1 5 21 13 - 5 1 5 3 1 - 6 1 5 1 2 - 7 1 5 2 10 - 8 1 5 10 12 + 1 1 5 9 13 + 2 1 5 3 9 + 3 1 5 21 12 + 4 1 5 13 21 + 5 1 5 1 3 + 6 1 5 2 1 + 7 1 5 10 2 + 8 1 5 12 10 End Conditions Begin Conditions UPwLysmerAbsorbingCondition3D3N - 9 1 95 98 94 - 10 1 95 94 92 - 11 1 99 97 94 - 12 1 99 94 98 - 13 1 91 92 94 - 14 1 91 94 93 - 15 1 96 93 94 - 16 1 96 94 97 + 9 1 95 94 98 + 10 1 95 92 94 + 11 1 99 94 97 + 12 1 99 98 94 + 13 1 91 94 92 + 14 1 91 93 94 + 15 1 96 94 93 + 16 1 96 97 94 End Conditions From a1445a8f206080c9688f796ab9cc455103c86e32 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Thu, 28 Mar 2024 10:49:45 +0100 Subject: [PATCH 18/23] Added README + schematic for the structure --- .../hexa_8n_normal_load/MeshStructure.svg | 383 ++++++++++++++++++ .../tests/hexa_8n_normal_load/README.md | 25 ++ 2 files changed, 408 insertions(+) create mode 100644 applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg create mode 100644 applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg new file mode 100644 index 000000000000..9e2bbfc72e40 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg @@ -0,0 +1,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md new file mode 100644 index 000000000000..1ad2e0f1066e --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md @@ -0,0 +1,25 @@ +# Normal load on a hexahedron with 8 nodes + +This is a single-element test, using a `UPwSmallStrainElement3D8N` element (dimensions 5m $\times$ 5m), with a normal load applied on the top face using an `ApplyNormalLoadTableProcess` and a `UpwNormalFaceLoadCondition3D4N`. + +## Setup + +A schematic depiction of the test case is shown below: + +![MeshStructure](MeshStructure.svg) + +- Constraints: + - The X, Y and Z displacements in the bottom four nodes (1, 2, 3 and 4) are fixed. +- Material: + - The material is described using a linear elastic material with a `LinearElastic3DLaw`, a Young's modulus + of 3.0e7 kPa and a Poisson ratio of 0.0. +- Conditions: + - A UpwNormalFaceLoadCondition3D4N is added to the top of the cube (nodes 5, 6, 7 and 8). +- Loads: + - Using the `ApplyNormalLoadTableProcess`, a positive NORMAL_CONTACT_STRESS of 1000 kPa is applied to the top of the cube. By convention, this is a compressive load, resulting in an inward-facing load. + +## Assertions +The following two assertions are made in this test: +1. The total stress in the entire cube is -1000 kPa in the Z direction and 0.0 in the other directions, due to the Poisson ratio being 0.0. +2. The displacement of the z-direction is asserted to be equal to the analytical result: $d_z = \epsilon / (EA / L)$, where $\epsilon = -1000$ kPa, $E = 3.0e7$ kPa, $A = 25$ m$^2$ and $L = 5$ m. + From e1147dd9a25adb99be2d4a39f7be8c3188a9af5f Mon Sep 17 00:00:00 2001 From: Richard Faasse <56549273+rfaasse@users.noreply.github.com> Date: Thu, 28 Mar 2024 10:56:28 +0100 Subject: [PATCH 19/23] Minor fixes for the README.md --- .../GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md index 1ad2e0f1066e..0352d21412a2 100644 --- a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md @@ -21,5 +21,5 @@ A schematic depiction of the test case is shown below: ## Assertions The following two assertions are made in this test: 1. The total stress in the entire cube is -1000 kPa in the Z direction and 0.0 in the other directions, due to the Poisson ratio being 0.0. -2. The displacement of the z-direction is asserted to be equal to the analytical result: $d_z = \epsilon / (EA / L)$, where $\epsilon = -1000$ kPa, $E = 3.0e7$ kPa, $A = 25$ m$^2$ and $L = 5$ m. +2. The displacement of the z-direction is asserted to be equal to the analytical result: $d_z = (\epsilon A) / (EA / L)$, where $\epsilon = -1000 \text{kPa}$, $E = 3.0e7 \text{kPa}$, $A = 25 \text{m}^2$ and $L = 5 \text{m}$. From 4bde10c1c75d985a98d32edec958c26b359357e1 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Thu, 28 Mar 2024 11:41:15 +0100 Subject: [PATCH 20/23] Added new test case specifications to overall README.md --- .../tests/test_thermal_element/test_thermal_heat_flux/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/README.md b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/README.md index 76def4b522c7..98978166213c 100644 --- a/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/README.md +++ b/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux/README.md @@ -5,7 +5,7 @@ **Source files:** [Thermal heat flux](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/GeoMechanicsApplication/tests/test_thermal_element/test_thermal_heat_flux) ## Case Specification -In this thermal heat flux test case, a 1 x 1 m soil box is considered, with a 100 J.s-1.m-2 heat flux applied as a condition to the bottom side and the top temperature set to 0 degrees. The simulation spans 250 days to allow for a transition from an exponential to a linear temperature profile between the two sides. This test is conducted for various configurations, including 2D3N, 2D4N, 2D6N, 2D8N, 2D9N, 2D10N, 2D15N, 3D4N, and 3D10N. The temperature distribution within the box is then evaluated with its own result. +In this thermal heat flux test case, a 1 x 1 m soil box is considered, with a 100 J.s-1.m-2 heat flux applied as a condition to the bottom side and the top temperature set to 0 degrees. The simulation spans 250 days to allow for a transition from an exponential to a linear temperature profile between the two sides. This test is conducted for various configurations, including 2D3N, 2D4N, 2D6N, 2D8N, 2D9N, 2D10N, 2D15N, 3D4N, 3D8N, 3D10N and 3D20N. The temperature distribution within the box is then evaluated with its own result. The boundary conditions are shown below: Visualization of the Boundary conditions From ee4d1d92682db32eff564f715e7614ab41fcf92e Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Thu, 28 Mar 2024 14:10:23 +0100 Subject: [PATCH 21/23] Processing review comments --- ...ce_normal_load_3D_diff_order_condition.cpp | 3 +- .../hexa_8n_normal_load/MeshStructure.svg | 61 ++++++++++++++++--- .../tests/hexa_8n_normal_load/README.md | 10 +-- .../tests/test_normal_load_on_hexa_element.py | 10 ++- 4 files changed, 62 insertions(+), 22 deletions(-) diff --git a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp index 81fb8f28599c..4ce473558b08 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/surface_normal_load_3D_diff_order_condition.cpp @@ -47,9 +47,8 @@ void SurfaceNormalLoad3DDiffOrderCondition::CalculateConditionVector(ConditionVa column(rVariables.JContainer[PointNumber], 1)); const auto& r_geometry = GetGeometry(); - const auto number_of_displacement_nodes = r_geometry.PointsNumber(); - Vector normal_stresses(number_of_displacement_nodes); + Vector normal_stresses(r_geometry.PointsNumber()); std::transform(r_geometry.begin(), r_geometry.end(), normal_stresses.begin(), [](const auto& r_node) { return r_node.FastGetSolutionStepValue(NORMAL_CONTACT_STRESS); }); diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg index 9e2bbfc72e40..58642991c337 100644 --- a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/MeshStructure.svg @@ -2,9 +2,9 @@ + transform="translate(-37.550498,-59.727488)"> + + + + x + y + z diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md index 0352d21412a2..aeab1a016695 100644 --- a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/README.md @@ -1,6 +1,6 @@ # Normal load on a hexahedron with 8 nodes -This is a single-element test, using a `UPwSmallStrainElement3D8N` element (dimensions 5m $\times$ 5m), with a normal load applied on the top face using an `ApplyNormalLoadTableProcess` and a `UpwNormalFaceLoadCondition3D4N`. +This is a single-element test, using a `UPwSmallStrainElement3D8N` element (dimensions 5[m] $\times$ 5[m]), with a normal load applied on the top face using an `ApplyNormalLoadTableProcess` and a `UpwNormalFaceLoadCondition3D4N`. ## Setup @@ -12,14 +12,14 @@ A schematic depiction of the test case is shown below: - The X, Y and Z displacements in the bottom four nodes (1, 2, 3 and 4) are fixed. - Material: - The material is described using a linear elastic material with a `LinearElastic3DLaw`, a Young's modulus - of 3.0e7 kPa and a Poisson ratio of 0.0. + of 3.0e7 [kPa] and a Poisson ratio of 0.0. - Conditions: - A UpwNormalFaceLoadCondition3D4N is added to the top of the cube (nodes 5, 6, 7 and 8). - Loads: - - Using the `ApplyNormalLoadTableProcess`, a positive NORMAL_CONTACT_STRESS of 1000 kPa is applied to the top of the cube. By convention, this is a compressive load, resulting in an inward-facing load. + - Using the `ApplyNormalLoadTableProcess`, a positive NORMAL_CONTACT_STRESS of 1000 [kPa] is applied to the top of the cube. By convention, this is a compressive load, resulting in an inward-facing load. ## Assertions The following two assertions are made in this test: -1. The total stress in the entire cube is -1000 kPa in the Z direction and 0.0 in the other directions, due to the Poisson ratio being 0.0. -2. The displacement of the z-direction is asserted to be equal to the analytical result: $d_z = (\epsilon A) / (EA / L)$, where $\epsilon = -1000 \text{kPa}$, $E = 3.0e7 \text{kPa}$, $A = 25 \text{m}^2$ and $L = 5 \text{m}$. +1. The total stress in the entire cube is -1000 [kPa] in the Z direction and 0.0 in the other directions, due to the Poisson ratio being 0.0. +2. The displacement of the z-direction is asserted to be equal to the analytical result: $d_z = (\epsilon A) / (EA / L)$, where $\epsilon = -1000 [\text{kPa}]$, $E = 3.0e7 [\text{kPa}]$, $A = 25 [\text{m}^2]$ and $L = 5 [\text{m}]$. diff --git a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py index f0a4d78c899e..9b8c7000e512 100644 --- a/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py +++ b/applications/GeoMechanicsApplication/tests/test_normal_load_on_hexa_element.py @@ -14,18 +14,16 @@ def test_hexa_8n_normal_load(self): file_path = test_helper.get_file_path(test_name) test_helper.run_kratos(file_path) - all_integration_points = [0, 1, 2, 3, 4, 5, 6, 7] output_file_path = os.path.join(file_path, test_name + '.post.res') output_reader = test_helper.GiDOutputFileReader() output_data = output_reader.read_output_from(output_file_path) - total_stresses = \ + total_stress_vectors = \ test_helper.GiDOutputFileReader.element_integration_point_values_at_time("TOTAL_STRESS_TENSOR", 1.0, - output_data, element_ids=[1], - integration_point_indices=all_integration_points)[0] + output_data, element_ids=[1])[0] - self.assertEqual(len(total_stresses), 8) + self.assertEqual(len(total_stress_vectors), 8) - for total_stress in total_stresses: + for total_stress in total_stress_vectors: self.assertAlmostEqual(total_stress[0], 0.0, 6) # Sxx self.assertAlmostEqual(total_stress[1], 0.0, 6) # Syy From 989971e484554fdf2ea70693dea27209699a3943 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Thu, 28 Mar 2024 16:08:03 +0100 Subject: [PATCH 22/23] Fixing the entire element to a zero water pressure, since it's irrelevant --- .../tests/hexa_8n_normal_load/ProjectParameters.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json index 5d74d5f12b10..e00a2c68959e 100644 --- a/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json +++ b/applications/GeoMechanicsApplication/tests/hexa_8n_normal_load/ProjectParameters.json @@ -64,7 +64,7 @@ "scaling": true }, "problem_domain_sub_model_part_list": ["Soil"], - "processes_sub_model_part_list": ["BottomFixed","TopLoad"], + "processes_sub_model_part_list": ["BottomFixed","TopLoad","Soil"], "body_domain_sub_model_part_list": ["Soil"] }, "output_processes": { @@ -116,7 +116,7 @@ "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", "process_name": "ApplyScalarConstraintTableProcess", "Parameters": { - "model_part_name": "PorousDomain.BottomFixed", + "model_part_name": "PorousDomain.Soil", "variable_name": "WATER_PRESSURE", "active": true, "is_fixed": true, From 5d0fb9ffaca5909573d16582afc737d70c9b4ce6 Mon Sep 17 00:00:00 2001 From: Richard Faasse Date: Thu, 28 Mar 2024 16:14:54 +0100 Subject: [PATCH 23/23] Added new test to the test_GeoMechanicsApplication.py script --- .../tests/test_GeoMechanicsApplication.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py b/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py index d46aa8fcd018..9b6fb7b7fafd 100644 --- a/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py +++ b/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py @@ -45,6 +45,7 @@ from test_conditions import KratosGeoMechanicsConditionTests from test_prescribed_derivatives import KratosGeoMechanicsPrescribedDerivatives from test_dirichlet_u import KratosGeoMechanicsDirichletUTests +from test_normal_load_on_hexa_element import KratosGeoMechanicsNormalLoadHexaTests def AssembleTestSuites(): ''' Populates the test suites to run. @@ -86,7 +87,8 @@ def AssembleTestSuites(): KratosGeoMechanicsRotationWithMovingLoadTests, KratosGeoMechanicsConditionTests, KratosGeoMechanicsPrescribedDerivatives, - KratosGeoMechanicsDirichletUTests + KratosGeoMechanicsDirichletUTests, + KratosGeoMechanicsNormalLoadHexaTests ] # Create an array with the selected tests