OGS
TH2M/ConstitutiveRelations/SolidDensity.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
4#include "SolidDensity.h"
5
6namespace ProcessLib::TH2M
7{
9{
10
11template <int DisplacementDim>
13 SpaceTimeData const& x_t,
14 MediaData const& media_data,
15 TemperatureData const& T_data,
17 DisplacementDim> const& sigma_eff_data,
18 CapillaryPressureData const& p_cap,
19 GasPressureData const& p_GR,
20 BishopsData const& chi_S_L,
21 PorosityData const& poro_data,
22 SolidDensityData& solid_density_data) const
23{
25 variables.temperature = T_data.T;
26
27 double const p_FR = (1 - chi_S_L.chi_S_L) * p_GR.pG +
28 chi_S_L.chi_S_L * (p_GR.pG - p_cap.pCap);
29
30 auto const& identity2 = MathLib::KelvinVector::Invariants<
32 DisplacementDim)>::identity2;
33
34 variables.solid_grain_pressure =
35 p_FR -
36 sigma_eff_data.sigma_eff.dot(identity2) / (3 * (1 - poro_data.phi));
37
38 auto const& mpl_solid_density = media_data.density_solid;
39
40 solid_density_data.rho_SR = mpl_solid_density.template value<double>(
41 variables, x_t.x, x_t.t, x_t.dt);
42}
43
44template <int DisplacementDim>
46 SpaceTimeData const& x_t,
47 MediaData const& media_data,
48 TemperatureData const& T_data,
50 DisplacementDim> const& sigma_eff_data,
51 CapillaryPressureData const& p_cap,
52 GasPressureData const& p_GR,
53 BishopsData const& chi_S_L,
54 PorosityData const& poro_data,
55 SolidDensityDerivativeData& solid_density_d_data) const
56{
58 variables.temperature = T_data.T;
59
60 double const p_FR = (1 - chi_S_L.chi_S_L) * p_GR.pG +
61 chi_S_L.chi_S_L * (p_GR.pG - p_cap.pCap);
62
63 auto const& identity2 = MathLib::KelvinVector::Invariants<
65 DisplacementDim)>::identity2;
66
67 variables.solid_grain_pressure =
68 p_FR -
69 sigma_eff_data.sigma_eff.dot(identity2) / (3 * (1 - poro_data.phi));
70
71 auto const& mpl_solid_density = media_data.density_solid;
72
73 solid_density_d_data.drho_SR_dT = mpl_solid_density.template dValue<double>(
75 x_t.dt);
76}
77
78template struct SolidDensityModel<2>;
79template struct SolidDensityModel<3>;
80} // namespace ConstitutiveRelations
81} // namespace ProcessLib::TH2M
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
void eval(SpaceTimeData const &x_t, MediaData const &media_data, TemperatureData const &T_data, ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > const &sigma_eff_data, CapillaryPressureData const &p_cap, GasPressureData const &p_GR, BishopsData const &chi_S_L, PorosityData const &poro_data, SolidDensityData &solid_density_data) const
void dEval(SpaceTimeData const &x_t, MediaData const &media_data, TemperatureData const &T_data, ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > const &sigma_eff_data, CapillaryPressureData const &p_cap, GasPressureData const &p_GR, BishopsData const &chi_S_L, PorosityData const &poro_data, SolidDensityDerivativeData &solid_density_d_data) const