diff --git a/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.cpp b/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.cpp index d6d1e4a8078c7ba6da0acd097730f7122b4d3065..046bb5eb2fb37cadf600c599be808eae2b7ad4a4 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.cpp +++ b/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.cpp @@ -39,7 +39,6 @@ void EffectiveVolumetricEnthalpyModel::dEval( PorosityData const& porosity_data, PorosityDerivativeData const& porosity_d_data, SaturationData const& S_L_data, - SaturationDataDeriv const& dS_L_dp_cap, SolidDensityData const& solid_density_data, SolidDensityDerivativeData const& solid_density_d_data, SolidEnthalpyData const& solid_enthalpy_data, @@ -51,11 +50,6 @@ void EffectiveVolumetricEnthalpyModel::dEval( auto const phi_G = (1. - S_L_data.S_L) * porosity_data.phi; double const phi_S = 1. - porosity_data.phi; - // dphi_G_dp_GR = -ds_L_dp_GR * porosity_data.phi = 0; - double const dphi_G_dp_cap = -dS_L_dp_cap() * porosity_data.phi; - // dphi_L_dp_GR = ds_L_dp_GR * porosity_data.phi = 0; - double const dphi_L_dp_cap = dS_L_dp_cap() * porosity_data.phi; - // From p_LR = p_GR - p_cap it follows for // drho_LR/dp_GR = drho_LR/dp_LR * dp_LR/dp_GR // = drho_LR/dp_LR * (dp_GR/dp_GR - dp_cap/dp_GR) @@ -72,9 +66,11 @@ void EffectiveVolumetricEnthalpyModel::dEval( fluid_enthalpy_data.h_L +*/ phi_L * drho_LR_dp_GR * fluid_enthalpy_data.h_L; effective_volumetric_enthalpy_d_data.drho_h_eff_dp_cap = - dphi_G_dp_cap * fluid_density_data.rho_GR * fluid_enthalpy_data.h_G + + porosity_d_data.dphi_L_dp_cap * fluid_density_data.rho_GR * + fluid_enthalpy_data.h_G + /*phi_G * (drho_GR_dp_cap = 0) * fluid_enthalpy_data.h_G +*/ - dphi_L_dp_cap * fluid_density_data.rho_LR * fluid_enthalpy_data.h_L + + porosity_d_data.dphi_L_dp_cap * fluid_density_data.rho_LR * + fluid_enthalpy_data.h_L + phi_L * drho_LR_dp_cap * fluid_enthalpy_data.h_L; // TODO (naumov) Extend for temperature dependent porosities. diff --git a/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.h b/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.h index 7778ec5da52430734ea7bc6ab7825dbb3caefab0..4bff673ce9abeb66f8566e4bc089f066a584a2cb 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.h +++ b/ProcessLib/TH2M/ConstitutiveRelations/Enthalpy.h @@ -80,7 +80,6 @@ struct EffectiveVolumetricEnthalpyModel PorosityData const& porosity_data, PorosityDerivativeData const& porosity_d_data, SaturationData const& S_L_data, - SaturationDataDeriv const& dS_L_dp_cap, SolidDensityData const& solid_density_data, SolidDensityDerivativeData const& solid_density_d_data, SolidEnthalpyData const& solid_enthalpy_data, diff --git a/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.cpp b/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.cpp index 36f740a8594314fbb226dc33218a7a76d418222a..2aa2b1d75526d4454a24d8d54939b946b9505b46 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.cpp +++ b/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.cpp @@ -39,7 +39,6 @@ void InternalEnergyModel::dEval( PorosityData const& porosity_data, PorosityDerivativeData const& porosity_d_data, SaturationData const& S_L_data, - SaturationDataDeriv const& dS_L_dp_cap, SolidDensityData const& solid_density_data, SolidDensityDerivativeData const& solid_density_d_data, SolidEnthalpyData const& solid_enthalpy_data, @@ -61,11 +60,6 @@ void InternalEnergyModel::dEval( phi_S * solid_density_data.rho_SR * solid_heat_capacity_data() - porosity_d_data.dphi_dT * solid_density_data.rho_SR * u_S; - // dphi_G_dp_GR = -ds_L_dp_GR * porosity_data.phi = 0; - double const dphi_G_dp_cap = -dS_L_dp_cap() * porosity_data.phi; - // dphi_L_dp_GR = ds_L_dp_GR * porosity_data.phi = 0; - double const dphi_L_dp_cap = dS_L_dp_cap() * porosity_data.phi; - // From p_LR = p_GR - p_cap it follows for // drho_LR/dp_GR = drho_LR/dp_LR * dp_LR/dp_GR // = drho_LR/dp_LR * (dp_GR/dp_GR - dp_cap/dp_GR) @@ -85,9 +79,11 @@ void InternalEnergyModel::dEval( phi_L * fluid_density_data.rho_LR * phase_transition_data.du_L_dp_GR; effective_volumetric_internal_energy_d_data.drho_u_eff_dp_cap = - dphi_G_dp_cap * fluid_density_data.rho_GR * phase_transition_data.uG + + -porosity_d_data.dphi_L_dp_cap * fluid_density_data.rho_GR * + phase_transition_data.uG + /*phi_G * (drho_GR_dp_cap = 0) * phase_transition_data.uG +*/ - dphi_L_dp_cap * fluid_density_data.rho_LR * phase_transition_data.uL + + porosity_d_data.dphi_L_dp_cap * fluid_density_data.rho_LR * + phase_transition_data.uL + phi_L * drho_LR_dp_cap * phase_transition_data.uL + phi_L * fluid_density_data.rho_LR * phase_transition_data.du_L_dp_cap; } diff --git a/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.h b/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.h index fcfd77f9c2e516b0dfa19727ca823f94e6ef2df4..d74dfd7167708c10cbe4a9beb146b30e7cabf3ec 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.h +++ b/ProcessLib/TH2M/ConstitutiveRelations/InternalEnergy.h @@ -48,7 +48,6 @@ struct InternalEnergyModel PorosityData const& porosity_data, PorosityDerivativeData const& porosity_d_data, SaturationData const& S_L_data, - SaturationDataDeriv const& dS_L_dp_cap, SolidDensityData const& solid_density_data, SolidDensityDerivativeData const& solid_density_d_data, SolidEnthalpyData const& solid_enthalpy_data, diff --git a/ProcessLib/TH2M/ConstitutiveRelations/Porosity.cpp b/ProcessLib/TH2M/ConstitutiveRelations/Porosity.cpp index f43cef3cf6e84708117413bc7f66f34c584c919e..2688dd02698f3e4072a3a465d36a12badb4ee7e7 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/Porosity.cpp +++ b/ProcessLib/TH2M/ConstitutiveRelations/Porosity.cpp @@ -27,8 +27,9 @@ void PorosityModel::eval(SpaceTimeData const& x_t, mpl_porosity.template value<double>(variables, x_t.x, x_t.t, x_t.dt); } -void PorosityModel::dEval(SpaceTimeData const& x_t, - MediaData const& media_data, +void PorosityModel::dEval(SpaceTimeData const& x_t, MediaData const& media_data, + PorosityData const& porosity_data, + SaturationDataDeriv const& dS_L_dp_cap, PorosityDerivativeData& porosity_d_data) const { MaterialPropertyLib::VariableArray variables; @@ -39,6 +40,8 @@ void PorosityModel::dEval(SpaceTimeData const& x_t, porosity_d_data.dphi_dT = mpl_porosity.template dValue<double>( variables, MaterialPropertyLib::Variable::temperature, x_t.x, x_t.t, x_t.dt); + + porosity_d_data.dphi_L_dp_cap = dS_L_dp_cap() * porosity_data.phi; } template <int DisplacementDim> @@ -74,9 +77,11 @@ template <int DisplacementDim> void PorosityModelNonConstantSolidPhaseVolumeFraction<DisplacementDim>::dEval( SpaceTimeData const& x_t, MediaData const& media_data, + PorosityData const& porosity_data, + SaturationDataDeriv const& dS_L_dp_cap, BiotData const& biot, - StrainData<DisplacementDim> const& strain_data, SolidThermalExpansionData<DisplacementDim> const& s_therm_exp_data, + StrainData<DisplacementDim> const& strain_data, PorosityDerivativeData& porosity_d_data) const { MaterialPropertyLib::VariableArray variables; @@ -100,6 +105,8 @@ void PorosityModelNonConstantSolidPhaseVolumeFraction<DisplacementDim>::dEval( dphi_0_dT * (1. + s_therm_exp_data.thermal_volume_strain - biot() * div_u) - (1. - phi_0) * s_therm_exp_data.beta_T_SR; + + porosity_d_data.dphi_L_dp_cap = dS_L_dp_cap() * porosity_data.phi; } template struct PorosityModelNonConstantSolidPhaseVolumeFraction<2>; diff --git a/ProcessLib/TH2M/ConstitutiveRelations/Porosity.h b/ProcessLib/TH2M/ConstitutiveRelations/Porosity.h index aecbd3062625267c02562c1402ac23d1a5be7420..49884ed45eddd84dfe40308f5353bcda18538421 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/Porosity.h +++ b/ProcessLib/TH2M/ConstitutiveRelations/Porosity.h @@ -13,6 +13,7 @@ #include "Biot.h" #include "ProcessLib/ConstitutiveRelations/StrainData.h" #include "ProcessLib/Reflection/ReflectionData.h" +#include "Saturation.h" #include "SolidThermalExpansion.h" namespace ProcessLib::TH2M @@ -22,6 +23,10 @@ namespace ConstitutiveRelations struct PorosityDerivativeData { double dphi_dT = nan; + // dphi_G_dp_GR = -ds_L_dp_GR * phi = 0; + // dphi_L_dp_GR = ds_L_dp_GR * phi = 0; + double dphi_L_dp_cap = nan; + // dphi_G_dp_cap = -dphi_L_dp_cap }; struct PorosityData @@ -45,6 +50,8 @@ struct PorosityModel void dEval(SpaceTimeData const& x_t, MediaData const& media_data, + PorosityData const& porosity_data, + SaturationDataDeriv const& dS_L_dp_cap, PorosityDerivativeData& porosity_d_data) const; }; @@ -62,9 +69,11 @@ struct PorosityModelNonConstantSolidPhaseVolumeFraction void dEval( SpaceTimeData const& x_t, MediaData const& media_data, + PorosityData const& porosity_data, + SaturationDataDeriv const& dS_L_dp_cap, BiotData const& biot, - StrainData<DisplacementDim> const& strain_data, SolidThermalExpansionData<DisplacementDim> const& s_therm_exp_data, + StrainData<DisplacementDim> const& strain_data, PorosityDerivativeData& porosity_d_data) const; }; diff --git a/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.cpp b/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.cpp index 60002a217fb177f1579364fb4c5899463ffd3327..358ee797cc7005035ee0fdeeb6a1df98cca2f271 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.cpp +++ b/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.cpp @@ -40,7 +40,7 @@ void ThermalConductivityModel<DisplacementDim>::dEval( SpaceTimeData const& x_t, MediaData const& media_data, TemperatureData const& T_data, PorosityData const& porosity_data, PorosityDerivativeData const& porosity_d_data, - SaturationData const& S_L_data, SaturationDataDeriv const& dS_L_dp_cap, + SaturationData const& S_L_data, ThermalConductivityDerivativeData<DisplacementDim>& thermal_conductivity_d_data) const { @@ -98,13 +98,9 @@ void ThermalConductivityModel<DisplacementDim>::dEval( x_t.t, x_t.dt)) : MPL::formEigenTensor<DisplacementDim>(0.); - // dphi_G_dp_GR = -ds_L_dp_GR * phi = 0; - double const dphi_G_dp_cap = -dS_L_dp_cap() * porosity_data.phi; - // dphi_L_dp_GR = ds_L_dp_GR * phi = 0; - double const dphi_L_dp_cap = dS_L_dp_cap() * porosity_data.phi; - thermal_conductivity_d_data.dlambda_dp_cap = - dphi_G_dp_cap * lambdaGR + dphi_L_dp_cap * lambdaLR; + -porosity_d_data.dphi_L_dp_cap * lambdaGR + + porosity_d_data.dphi_L_dp_cap * lambdaLR; double const phi_L = S_L_data.S_L * porosity_data.phi; double const phi_G = (1. - S_L_data.S_L) * porosity_data.phi; diff --git a/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.h b/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.h index eefb94ef7077a4373d0675001770278538a1d5a7..35720adac3fee11f0e318e8111151868261f8cc8 100644 --- a/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.h +++ b/ProcessLib/TH2M/ConstitutiveRelations/ThermalConductivity.h @@ -47,7 +47,6 @@ struct ThermalConductivityModel TemperatureData const& T_data, PorosityData const& porosity_data, PorosityDerivativeData const& porosity_d_data, SaturationData const& S_L_data, - SaturationDataDeriv const& dS_L_dp_cap, ThermalConductivityDerivativeData<DisplacementDim>& thermal_conductivity_d_data) const; }; diff --git a/ProcessLib/TH2M/TH2MFEM-impl.h b/ProcessLib/TH2M/TH2MFEM-impl.h index 5098124c862573ed2b3deac4f479957330a6d876..3e0beb96ac31e7d6465a447dd3307337e4d5166c 100644 --- a/ProcessLib/TH2M/TH2MFEM-impl.h +++ b/ProcessLib/TH2M/TH2MFEM-impl.h @@ -556,16 +556,16 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure, ip_cv.phase_transition_data, ip_dd.advection_d_data); - models.porosity_model.dEval({pos, t, dt}, media_data, + models.porosity_model.dEval( + {pos, t, dt}, media_data, ip_out.porosity_data, ip_dd.dS_L_dp_cap, #ifdef NON_CONSTANT_SOLID_PHASE_VOLUME_FRACTION - ip_cv.biot_data, ip_out.eps_data, - ip_cv.s_therm_exp_data, + ip_cv.biot_data, ip_out.eps_data, ip_cv.s_therm_exp_data, #endif // NON_CONSTANT_SOLID_PHASE_VOLUME_FRACTION - ip_dd.porosity_d_data); + ip_dd.porosity_d_data); models.thermal_conductivity_model.dEval( {pos, t, dt}, media_data, T_data, ip_out.porosity_data, - ip_dd.porosity_d_data, current_state.S_L_data, ip_dd.dS_L_dp_cap, + ip_dd.porosity_d_data, current_state.S_L_data, ip_dd.thermal_conductivity_d_data); models.solid_density_model.dEval({pos, t, dt}, media_data, T_data, @@ -581,7 +581,6 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure, ip_out.porosity_data, ip_dd.porosity_d_data, current_state.S_L_data, - ip_dd.dS_L_dp_cap, ip_out.solid_density_data, ip_dd.solid_density_d_data, ip_out.solid_enthalpy_data, @@ -595,7 +594,6 @@ TH2MLocalAssembler<ShapeFunctionDisplacement, ShapeFunctionPressure, ip_out.porosity_data, ip_dd.porosity_d_data, current_state.S_L_data, - ip_dd.dS_L_dp_cap, ip_out.solid_density_data, ip_dd.solid_density_d_data, ip_out.solid_enthalpy_data,