From 530123c4865176a167366edd1a1ba48979949df1 Mon Sep 17 00:00:00 2001
From: Christoph Lehmann <christoph.lehmann@ufz.de>
Date: Fri, 8 Sep 2023 13:13:39 +0200
Subject: [PATCH] [PL] Pass volumetric strain to permeability model.

---
 .../ConstitutiveCommon/PermeabilityModel.cpp               | 7 +++++++
 .../ConstitutiveCommon/PermeabilityModel.h                 | 1 +
 .../ConstitutiveSetting.cpp                                | 4 ++--
 .../ConstitutiveSetting.cpp                                | 4 ++--
 4 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.cpp
index 42d3c98b3c2..1b37fcd4ad5 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.cpp
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.cpp
@@ -23,11 +23,16 @@ void PermeabilityModel<DisplacementDim>::eval(
     LiquidViscosityData const& mu_L_data,
     TransportPorosityData const& transport_poro_data,
     TotalStressData<DisplacementDim> const& total_stress_data,
+    StrainData<DisplacementDim> const& eps_data,
     EquivalentPlasticStrainData const& equiv_plast_strain_data,
     PermeabilityData<DisplacementDim>& out) const
 {
     namespace MPL = MaterialPropertyLib;
 
+    static constexpr int kelvin_vector_size =
+        MathLib::KelvinVector::kelvin_vector_dimensions(DisplacementDim);
+    using Invariants = MathLib::KelvinVector::Invariants<kelvin_vector_size>;
+
     auto const& medium = media_data.medium;
 
     MPL::VariableArray variables;
@@ -57,6 +62,8 @@ void PermeabilityModel<DisplacementDim>::eval(
     variables.equivalent_plastic_strain =
         equiv_plast_strain_data.equivalent_plastic_strain;
 
+    variables.volumetric_strain = Invariants::trace(eps_data.eps);
+
     auto const K_intrinsic = MPL::formEigenTensor<DisplacementDim>(
         medium.property(MPL::PropertyType::permeability)
             .value(variables, x_t.x, x_t.t, x_t.dt));
diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.h b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.h
index 545a67b8fb8..43a90efb3fa 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.h
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.h
@@ -28,6 +28,7 @@ struct PermeabilityModel
               LiquidViscosityData const& mu_L_data,
               TransportPorosityData const& transport_poro_data,
               TotalStressData<DisplacementDim> const& total_stress_data,
+              StrainData<DisplacementDim> const& eps_data,
               EquivalentPlasticStrainData const& equiv_plast_strain_data,
               PermeabilityData<DisplacementDim>& out) const;
 };
diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/ConstitutiveSetting.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/ConstitutiveSetting.cpp
index 8f50910fe4f..fba26c23873 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/ConstitutiveSetting.cpp
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/ConstitutiveSetting.cpp
@@ -127,8 +127,8 @@ void ConstitutiveSetting<DisplacementDim>::eval(
     assertEvalArgsUnique(models.perm_model);
     models.perm_model.eval(x_t, media_data, S_L_data, p_cap_data, T_data,
                            mu_L_data, state.transport_poro_data,
-                           state.total_stress_data, tmp.equiv_plast_strain_data,
-                           perm_data);
+                           state.total_stress_data, state.eps_data,
+                           tmp.equiv_plast_strain_data, perm_data);
 
     assertEvalArgsUnique(models.th_osmosis_model);
     models.th_osmosis_model.eval(x_t, media_data, T_data, rho_L_data,
diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveStress_StrainTemperature/ConstitutiveSetting.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveStress_StrainTemperature/ConstitutiveSetting.cpp
index 48d162a4f55..cba97f7d3cc 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveStress_StrainTemperature/ConstitutiveSetting.cpp
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveStress_StrainTemperature/ConstitutiveSetting.cpp
@@ -149,8 +149,8 @@ void ConstitutiveSetting<DisplacementDim>::eval(
     assertEvalArgsUnique(models.perm_model);
     models.perm_model.eval(x_t, media_data, S_L_data, p_cap_data, T_data,
                            mu_L_data, state.transport_poro_data,
-                           cd.total_stress_data, tmp.equiv_plast_strain_data,
-                           perm_data);
+                           cd.total_stress_data, state.eps_data,
+                           tmp.equiv_plast_strain_data, perm_data);
 
     assertEvalArgsUnique(models.th_osmosis_model);
     models.th_osmosis_model.eval(x_t, media_data, T_data, rho_L_data,
-- 
GitLab