OGS
ProcessLib::TH2M::ConstitutiveRelations::ThermalConductivityModel< DisplacementDim > Struct Template Reference

Detailed Description

template<int DisplacementDim>
struct ProcessLib::TH2M::ConstitutiveRelations::ThermalConductivityModel< DisplacementDim >

Definition at line 33 of file ThermalConductivity.h.

#include <ThermalConductivity.h>

Public Member Functions

void eval (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, ThermalConductivityData< DisplacementDim > &thermal_conductivity_data) const
 

Member Function Documentation

◆ eval()

template<int DisplacementDim>
void ProcessLib::TH2M::ConstitutiveRelations::ThermalConductivityModel< DisplacementDim >::eval ( 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,
ThermalConductivityData< DisplacementDim > & thermal_conductivity_data ) const

Definition at line 19 of file ThermalConductivity.cpp.

25{
26 namespace MPL = MaterialPropertyLib;
27 MPL::VariableArray variables;
28 variables.temperature = T_data.T;
29 variables.porosity = porosity_data.phi;
30 variables.liquid_saturation = S_L_data.S_L;
31
32 auto const& mpl_thermal_conductivity =
33 media_data.medium[MPL::PropertyType::thermal_conductivity];
34
35 thermal_conductivity_data.lambda = MPL::formEigenTensor<DisplacementDim>(
36 mpl_thermal_conductivity.value(variables, x_t.x, x_t.t, x_t.dt));
37
38 // Derivatives computed here and not in the MPL property because various
39 // derivatives are not available in the VariableArray.
40
41 auto const lambdaGR =
42 media_data.gas.hasProperty(MPL::PropertyType::thermal_conductivity)
43 ? MPL::formEigenTensor<DisplacementDim>(
44 media_data.gas[MPL::PropertyType::thermal_conductivity].value(
45 variables, x_t.x, x_t.t, x_t.dt))
46 : MPL::formEigenTensor<DisplacementDim>(0.);
47
48 auto const dlambda_GR_dT =
49 media_data.gas.hasProperty(MPL::PropertyType::thermal_conductivity)
50 ? MPL::formEigenTensor<DisplacementDim>(
51 media_data.gas[MPL::PropertyType::thermal_conductivity]
52 .dValue(variables, MPL::Variable::temperature, x_t.x,
53 x_t.t, x_t.dt))
54 : MPL::formEigenTensor<DisplacementDim>(0.);
55
56 auto const lambdaLR =
57 media_data.liquid.hasProperty(MPL::PropertyType::thermal_conductivity)
58 ? MPL::formEigenTensor<DisplacementDim>(
59 media_data.liquid[MPL::PropertyType::thermal_conductivity]
60 .value(variables, x_t.x, x_t.t, x_t.dt))
61 : MPL::formEigenTensor<DisplacementDim>(0.);
62
63 auto const dlambda_LR_dT =
64 media_data.liquid.hasProperty(MPL::PropertyType::thermal_conductivity)
65 ? MPL::formEigenTensor<DisplacementDim>(
66 media_data.liquid[MPL::PropertyType::thermal_conductivity]
67 .dValue(variables, MPL::Variable::temperature, x_t.x,
68 x_t.t, x_t.dt))
69 : MPL::formEigenTensor<DisplacementDim>(0.);
70
71 auto const lambdaSR =
72 media_data.solid.hasProperty(MPL::PropertyType::thermal_conductivity)
73 ? MPL::formEigenTensor<DisplacementDim>(
74 media_data.solid[MPL::PropertyType::thermal_conductivity]
75 .value(variables, x_t.x, x_t.t, x_t.dt))
76 : MPL::formEigenTensor<DisplacementDim>(0.);
77
78 auto const dlambda_SR_dT =
79 media_data.solid.hasProperty(MPL::PropertyType::thermal_conductivity)
80 ? MPL::formEigenTensor<DisplacementDim>(
81 media_data.solid[MPL::PropertyType::thermal_conductivity]
82 .dValue(variables, MPL::Variable::temperature, x_t.x,
83 x_t.t, x_t.dt))
84 : MPL::formEigenTensor<DisplacementDim>(0.);
85
86 // dphi_G_dp_GR = -ds_L_dp_GR * phi = 0;
87 double const dphi_G_dp_cap = -dS_L_dp_cap() * porosity_data.phi;
88 // dphi_L_dp_GR = ds_L_dp_GR * phi = 0;
89 double const dphi_L_dp_cap = dS_L_dp_cap() * porosity_data.phi;
90
91 thermal_conductivity_data.dlambda_dp_cap =
92 dphi_G_dp_cap * lambdaGR + dphi_L_dp_cap * lambdaLR;
93
94 double const phi_L = S_L_data.S_L * porosity_data.phi;
95 double const phi_G = (1. - S_L_data.S_L) * porosity_data.phi;
96 double const phi_S = 1. - porosity_data.phi;
97
98 // Assuming dS_L/dT = 0, then:
99 // dphi_G_dT = -dS_L/dT * phi + (1 - S_L) * dphi_dT = (1 - S_L) * dphi_dT
100 // dphi_L_dT = dS_L/dT * phi + S_L * dphi_dT S_L * dphi_dT
101 // dphi_S_dT = -dphi_dT -dphi_dT
102 thermal_conductivity_data.dlambda_dT =
103 (1 - S_L_data.S_L) * porosity_d_data.dphi_dT * lambdaGR +
104 phi_G * dlambda_GR_dT +
105 S_L_data.S_L * porosity_d_data.dphi_dT * lambdaLR +
106 +phi_L * dlambda_LR_dT - porosity_d_data.dphi_dT * lambdaSR +
107 phi_S * dlambda_SR_dT;
108}
Eigen::Matrix< double, GlobalDim, GlobalDim > formEigenTensor(MaterialPropertyLib::PropertyDataType const &values)

References ProcessLib::TH2M::ConstitutiveRelations::ThermalConductivityData< DisplacementDim >::dlambda_dp_cap, ProcessLib::TH2M::ConstitutiveRelations::ThermalConductivityData< DisplacementDim >::dlambda_dT, ProcessLib::TH2M::ConstitutiveRelations::PorosityDerivativeData::dphi_dT, ProcessLib::ConstitutiveRelations::SpaceTimeData::dt, ProcessLib::TH2M::ConstitutiveRelations::MediaData::gas, MaterialPropertyLib::Phase::hasProperty(), ProcessLib::TH2M::ConstitutiveRelations::ThermalConductivityData< DisplacementDim >::lambda, ProcessLib::TH2M::ConstitutiveRelations::MediaData::liquid, MaterialPropertyLib::VariableArray::liquid_saturation, ProcessLib::TH2M::ConstitutiveRelations::MediaData::medium, ProcessLib::TH2M::ConstitutiveRelations::PorosityData::phi, MaterialPropertyLib::VariableArray::porosity, ProcessLib::TH2M::ConstitutiveRelations::SaturationData::S_L, ProcessLib::TH2M::ConstitutiveRelations::MediaData::solid, ProcessLib::ConstitutiveRelations::SpaceTimeData::t, ProcessLib::TH2M::ConstitutiveRelations::TemperatureData::T, MaterialPropertyLib::VariableArray::temperature, and ProcessLib::ConstitutiveRelations::SpaceTimeData::x.


The documentation for this struct was generated from the following files: