OGS
TRMHeatStorageAndFlux.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
5
7
9{
10template <int DisplacementDim>
12 SpaceTimeData const& x_t, MediaData const& media_data,
13 LiquidDensityData const& rho_L_data, SolidDensityData const& rho_S_data,
14 SaturationData const& S_L_data, SaturationDataDeriv const& dS_L_data,
15 PorosityData const& poro_data, LiquidViscosityData const& mu_L_data,
18 DarcyLawData<DisplacementDim> const& darcy_data,
20{
21 namespace MPL = MaterialPropertyLib;
22 MPL::VariableArray variables;
23 variables.temperature = T_data.T;
24 variables.porosity = poro_data.phi;
25 variables.liquid_saturation = S_L_data.S_L;
26
27 auto const& liquid_phase = media_data.liquid;
28 auto const& solid_phase = media_data.solid;
29
30 auto const specific_heat_capacity_fluid =
32 .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
33
34 auto const specific_heat_capacity_solid =
35 solid_phase
37 .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
38
39 double const phi = poro_data.phi;
40
41 // TODO real vs. "non-real" values
42 double const volumetric_heat_capacity_liquid =
43 rho_L_data.rho_LR * specific_heat_capacity_fluid;
44
45 // NOTE: Gas phase is not included.
46 double const volumetric_heat_capacity_liquid_and_solid =
47 rho_S_data.rho_SR * specific_heat_capacity_solid * (1 - phi) +
48 S_L_data.S_L * phi * volumetric_heat_capacity_liquid;
49
50 out.M_TT_X_NTN = volumetric_heat_capacity_liquid_and_solid;
51
53 media_data.medium
55 .value(variables, x_t.x, x_t.t, x_t.dt));
56
57 // Unit is J / m^2 / s / K. It's not a heat flux, but related.
59 volumetric_heat_capacity_liquid * darcy_data();
60
61 //
62 // temperature equation, pressure part
63 //
64 out.K_Tp_NT_V_dN = -volumetric_heat_capacity_liquid * perm.k_rel /
65 mu_L_data() * (perm.Ki.transpose() * T_data.grad_T);
66 out.K_Tp_X_NTN = -volumetric_heat_capacity_liquid *
67 darcy_data().dot(T_data.grad_T) / perm.k_rel *
68 perm.dk_rel_dS_L * dS_L_data.dS_L_dp_cap;
69}
70
71template struct TRMHeatStorageAndFluxModel<2>;
72template struct TRMHeatStorageAndFluxModel<3>;
73} // namespace ProcessLib::ThermoRichardsMechanics
Property const & property(PropertyType const &p) const
Definition Medium.cpp:45
Property const & property(PropertyType const &p) const
Definition Phase.cpp:44
virtual PropertyDataType value() const
constexpr Eigen::Matrix< double, GlobalDim, GlobalDim > formEigenTensor(MaterialPropertyLib::PropertyDataType const &values)
BaseLib::StrongType< Eigen::Vector< double, DisplacementDim >, struct DarcyLawDataTag > DarcyLawData
Definition DarcyLaw.h:16
BaseLib::StrongType< double, struct LiquidViscosityDataTag > LiquidViscosityData
GlobalDimVector< DisplacementDim > advective_heat_flux_contribution_to_K_liquid
void eval(SpaceTimeData const &x_t, MediaData const &media_data, LiquidDensityData const &rho_L_data, SolidDensityData const &rho_S_data, SaturationData const &S_L_data, SaturationDataDeriv const &dS_L_data, PorosityData const &poro_data, LiquidViscosityData const &mu_L_data, PermeabilityData< DisplacementDim > const &perm, TemperatureData< DisplacementDim > const &T_data, DarcyLawData< DisplacementDim > const &darcy_data, TRMHeatStorageAndFluxData< DisplacementDim > &out) const