From c22f995844788e1cc6b3f98a130e0717fded84aa Mon Sep 17 00:00:00 2001
From: Christoph Lehmann <christoph.lehmann@ufz.de>
Date: Fri, 17 May 2024 13:08:36 +0200
Subject: [PATCH] [PL/TRM] Use StrongType for liquid viscosity

---
 .../ConstitutiveCommon/DarcyLaw.cpp              |  2 +-
 .../ConstitutiveCommon/EqP.cpp                   |  6 +++---
 .../ConstitutiveCommon/LiquidViscosity.cpp       |  5 ++---
 .../ConstitutiveCommon/LiquidViscosity.h         | 16 +++++++---------
 .../ConstitutiveCommon/TRMHeatStorageAndFlux.cpp |  3 +--
 5 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp
index 5bc1527620d..8bceb6e7951 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp
@@ -21,7 +21,7 @@ void DarcyLawModel<DisplacementDim>::eval(
     ThermoOsmosisData<DisplacementDim> const& th_osmosis_data,
     DarcyLawData<DisplacementDim>& out) const
 {
-    *out = perm_data.Ki / mu_L_data.viscosity *
+    *out = perm_data.Ki / mu_L_data() *
                (perm_data.k_rel *
                 (p_cap_data.grad_p_cap + rho_L_data.rho_LR * b_)) +
            th_osmosis_data.seepage_velocity_contribution;
diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/EqP.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/EqP.cpp
index b8d7a09315f..0b79275aebe 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/EqP.cpp
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/EqP.cpp
@@ -29,14 +29,14 @@ void EqPModel<DisplacementDim>::eval(
 {
     out.M_pu_X_BTI2N = S_L_data.S_L * rho_L_data.rho_LR * biot_data();
 
-    out.K_pp_Laplace = perm_data.k_rel * rho_L_data.rho_LR * perm_data.Ki /
-                       mu_L_data.viscosity;
+    out.K_pp_Laplace =
+        perm_data.k_rel * rho_L_data.rho_LR * perm_data.Ki / mu_L_data();
 
     out.J_pp_X_BTI2NT_u_dot_N =
         -rho_L_data.rho_LR * dS_L_data.dS_L_dp_cap * biot_data();
 
     out.J_pp_dNT_V_N =
-        perm_data.Ki / mu_L_data.viscosity *
+        perm_data.Ki / mu_L_data() *
         (rho_L_data.rho_LR * perm_data.dk_rel_dS_L * dS_L_data.dS_L_dp_cap *
          (p_cap_data.grad_p_cap + rho_L_data.rho_LR * b_));
 
diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.cpp
index bc4d2a88d92..337df896229 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.cpp
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.cpp
@@ -24,9 +24,8 @@ void LiquidViscosityModel<DisplacementDim>::eval(
     variables.temperature = T_data.T;
     variables.density = rho_L_data.rho_LR;
 
-    out.viscosity =
-        media_data.liquid.property(MPL::PropertyType::viscosity)
-            .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
+    *out = media_data.liquid.property(MPL::PropertyType::viscosity)
+               .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
 }
 
 template struct LiquidViscosityModel<2>;
diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.h b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.h
index 6b65e4da3e7..53ab7f941ab 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.h
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/LiquidViscosity.h
@@ -11,20 +11,18 @@
 #pragma once
 
 #include "Base.h"
+#include "BaseLib/StrongType.h"
 #include "LiquidDensity.h"
 
 namespace ProcessLib::ThermoRichardsMechanics
 {
-struct LiquidViscosityData
-{
-    double viscosity;
+using LiquidViscosityData =
+    BaseLib::StrongType<double, struct LiquidViscosityDataTag>;
 
-    static auto reflect()
-    {
-        return ProcessLib::Reflection::reflectWithName(
-            "viscosity", &LiquidViscosityData::viscosity);
-    }
-};
+constexpr std::string_view ioName(struct LiquidViscosityDataTag*)
+{
+    return "viscosity";
+}
 
 template <int DisplacementDim>
 struct LiquidViscosityModel
diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp
index c94735a61dd..a2e4a8bf984 100644
--- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp
+++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp
@@ -69,8 +69,7 @@ void TRMHeatStorageAndFluxModel<DisplacementDim>::eval(
     // temperature equation, pressure part
     //
     out.K_Tp_NT_V_dN = -volumetric_heat_capacity_liquid * perm.k_rel /
-                       mu_L_data.viscosity *
-                       (perm.Ki.transpose() * T_data.grad_T);
+                       mu_L_data() * (perm.Ki.transpose() * T_data.grad_T);
     out.K_Tp_X_NTN = -volumetric_heat_capacity_liquid *
                      darcy_data().dot(T_data.grad_T) / perm.k_rel *
                      perm.dk_rel_dS_L * dS_L_data.dS_L_dp_cap;
-- 
GitLab