From ebeb73f79d7444fc39e8734d153817cd96c7c237 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Thu, 20 Jul 2017 11:44:22 +0200
Subject: [PATCH] [PL] LIE/HM: Add frac.rel.displ. and shear stress properties.

New mesh properties for fracture relative displacement and shear stress in the additional coordinate for output.
---
 .../LIE/HydroMechanics/HydroMechanicsProcess.cpp | 16 ++++++++++++++++
 .../HydroMechanics/HydroMechanicsProcessData.h   |  2 ++
 .../HydroMechanicsLocalAssemblerFracture-impl.h  |  7 +++++++
 3 files changed, 25 insertions(+)

diff --git a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp
index ee45167a7e3..93c9ad95d2a 100644
--- a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp
+++ b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcess.cpp
@@ -372,6 +372,22 @@ void HydroMechanicsProcess<GlobalDim>::initializeConcreteProcess(
                                     "nodal_aperture", MeshLib::MeshItemType::Node, 1);
         mesh_prop_nodal_b->resize(mesh.getNumberOfNodes());
         _process_data.mesh_prop_nodal_b = mesh_prop_nodal_b;
+
+        if (GlobalDim == 3)
+        {
+            auto mesh_prop_w_s2 = MeshLib::getOrCreateMeshProperty<double>(
+                const_cast<MeshLib::Mesh&>(mesh), "w_s2",
+                MeshLib::MeshItemType::Cell, 1);
+            mesh_prop_w_s2->resize(mesh.getNumberOfElements());
+            _process_data.mesh_prop_w_s2 = mesh_prop_w_s2;
+
+            auto mesh_prop_fracture_stress_shear2 = MeshLib::getOrCreateMeshProperty<double>(
+                                        const_cast<MeshLib::Mesh&>(mesh),
+                                        "f_stress_s2", MeshLib::MeshItemType::Cell, 1);
+            mesh_prop_fracture_stress_shear2->resize(mesh.getNumberOfElements());
+            _process_data.mesh_prop_fracture_stress_shear2 =
+                mesh_prop_fracture_stress_shear2;
+        }
     }
 }
 
diff --git a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h
index a9bd8d1176a..e394ad56c2f 100644
--- a/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h
+++ b/ProcessLib/LIE/HydroMechanics/HydroMechanicsProcessData.h
@@ -143,7 +143,9 @@ struct HydroMechanicsProcessData
     MeshLib::PropertyVector<double>* mesh_prop_k_f = nullptr;
     MeshLib::PropertyVector<double>* mesh_prop_w_n = nullptr;
     MeshLib::PropertyVector<double>* mesh_prop_w_s = nullptr;
+    MeshLib::PropertyVector<double>* mesh_prop_w_s2 = nullptr;
     MeshLib::PropertyVector<double>* mesh_prop_fracture_stress_shear = nullptr;
+    MeshLib::PropertyVector<double>* mesh_prop_fracture_stress_shear2 = nullptr;
     MeshLib::PropertyVector<double>* mesh_prop_fracture_stress_normal = nullptr;
     MeshLib::PropertyVector<double>* mesh_prop_fracture_shear_failure = nullptr;
     MeshLib::PropertyVector<double>* mesh_prop_nodal_w = nullptr;
diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h
index 8297ccddadc..0b9ca3f5380 100644
--- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h
+++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerFracture-impl.h
@@ -394,6 +394,13 @@ computeSecondaryVariableConcreteWithVector(
     (*_process_data.mesh_prop_fracture_stress_normal)[element_id] = ele_sigma_eff[index_normal];
     (*_process_data.mesh_prop_fracture_stress_shear)[element_id] = ele_sigma_eff[0];
     (*_process_data.mesh_prop_fracture_shear_failure)[element_id] = ele_Fs;
+
+    if (GlobalDim == 3)
+    {
+        (*_process_data.mesh_prop_w_s2)[element_id] = ele_w[1];
+        (*_process_data.mesh_prop_fracture_stress_shear2)[element_id] =
+            ele_sigma_eff[1];
+    }
 }
 
 }  // namespace HydroMechanics
-- 
GitLab