From 17c2eaecd7bd969a9d6ef90e437608676ee0b6d0 Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Fri, 17 May 2024 11:14:25 +0200 Subject: [PATCH] [PL/TRM] Use StrongType for Darcy velocity --- .../ConstitutiveCommon/DarcyLaw.cpp | 10 ++++------ .../ConstitutiveCommon/DarcyLaw.h | 18 +++++++----------- .../TRMHeatStorageAndFlux.cpp | 4 ++-- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp index a56725c47a4..5bc1527620d 100644 --- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp +++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.cpp @@ -10,8 +10,6 @@ #include "DarcyLaw.h" -#include "MaterialLib/MPL/Utils/FormEigenTensor.h" - namespace ProcessLib::ThermoRichardsMechanics { template <int DisplacementDim> @@ -23,10 +21,10 @@ void DarcyLawModel<DisplacementDim>::eval( ThermoOsmosisData<DisplacementDim> const& th_osmosis_data, DarcyLawData<DisplacementDim>& out) const { - out.v_darcy = perm_data.Ki / mu_L_data.viscosity * - (perm_data.k_rel * - (p_cap_data.grad_p_cap + rho_L_data.rho_LR * b_)) + - th_osmosis_data.seepage_velocity_contribution; + *out = perm_data.Ki / mu_L_data.viscosity * + (perm_data.k_rel * + (p_cap_data.grad_p_cap + rho_L_data.rho_LR * b_)) + + th_osmosis_data.seepage_velocity_contribution; } template struct DarcyLawModel<2>; diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.h b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.h index b5c09bede41..faab1905057 100644 --- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.h +++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/DarcyLaw.h @@ -10,6 +10,7 @@ #pragma once +#include "BaseLib/StrongType.h" #include "LiquidDensity.h" #include "LiquidViscosity.h" #include "PermeabilityData.h" @@ -19,18 +20,13 @@ namespace ProcessLib::ThermoRichardsMechanics { template <int DisplacementDim> -struct DarcyLawData -{ - Eigen::Vector<double, DisplacementDim> v_darcy; - - static auto reflect() - { - using Self = DarcyLawData<DisplacementDim>; +using DarcyLawData = BaseLib::StrongType<Eigen::Vector<double, DisplacementDim>, + struct DarcyLawDataTag>; - return ProcessLib::Reflection::reflectWithName("velocity", - &Self::v_darcy); - } -}; +constexpr std::string_view ioName(struct DarcyLawDataTag*) +{ + return "velocity"; +} template <int DisplacementDim> struct DarcyLawModel diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp index 0f81bea6959..c94735a61dd 100644 --- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp +++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveCommon/TRMHeatStorageAndFlux.cpp @@ -63,7 +63,7 @@ void TRMHeatStorageAndFluxModel<DisplacementDim>::eval( // Unit is J / m^2 / s / K. It's not a heat flux, but related. out.advective_heat_flux_contribution_to_K_liquid = - volumetric_heat_capacity_liquid * darcy_data.v_darcy; + volumetric_heat_capacity_liquid * darcy_data(); // // temperature equation, pressure part @@ -72,7 +72,7 @@ void TRMHeatStorageAndFluxModel<DisplacementDim>::eval( mu_L_data.viscosity * (perm.Ki.transpose() * T_data.grad_T); out.K_Tp_X_NTN = -volumetric_heat_capacity_liquid * - darcy_data.v_darcy.dot(T_data.grad_T) / perm.k_rel * + darcy_data().dot(T_data.grad_T) / perm.k_rel * perm.dk_rel_dS_L * dS_L_data.dS_L_dp_cap; } -- GitLab