OGS
TH2M/ConstitutiveRelations/Porosity.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 "Porosity.h"
5
6namespace ProcessLib::TH2M
7{
9{
10
11template <int DisplacementDim>
13 SpaceTimeData const& x_t, MediaData const& media_data,
14 SaturationData const& S_L_data,
15 PrevState<SaturationData> const& S_L_prev_data,
16 CapillaryPressureData const& p_cap, GasPressureData const& p_GR,
17 BishopsData const& chi_S_L, PrevState<BishopsData> const& chi_S_L_prev,
18 SolidCompressibilityData const& solid_compressibility,
19 StrainData<DisplacementDim> const& eps_data,
21 PrevState<PorosityData> const& porosity_prev_data,
22 PorosityData& porosity_data) const
23{
24 static int const KelvinVectorSize =
27
30
31 variables.grain_compressibility = solid_compressibility();
32
33 variables.liquid_saturation = S_L_data.S_L;
34 variables_prev.liquid_saturation = S_L_prev_data->S_L;
35
36 variables.effective_pore_pressure =
37 (1 - chi_S_L.chi_S_L) * p_GR.pG +
38 chi_S_L.chi_S_L * (p_GR.pG - p_cap.pCap);
39
40 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
41 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
42 variables_prev.effective_pore_pressure =
43 (1 - chi_S_L_prev->chi_S_L) * p_GR.pG_prev +
44 chi_S_L_prev->chi_S_L * (p_GR.pG_prev - p_cap.pCap_prev);
45
46 variables.volumetric_strain = Invariants::trace(eps_data.eps);
47 variables_prev.volumetric_strain = Invariants::trace(eps_prev);
48
49 variables_prev.porosity = porosity_prev_data->phi;
50 porosity_data.phi = media_data.porosity_prop.template value<double>(
51 variables, variables_prev, x_t.x, x_t.t, x_t.dt);
52}
53
54template <int DisplacementDim>
56 SpaceTimeData const& x_t, MediaData const& media_data,
57 SaturationData const& S_L_data,
58 PrevState<SaturationData> const& S_L_prev_data,
59 CapillaryPressureData const& p_cap, GasPressureData const& p_GR,
60 BishopsData const& chi_S_L, PrevState<BishopsData> const& chi_S_L_prev,
61 SolidCompressibilityData const& solid_compressibility,
62 StrainData<DisplacementDim> const& eps_data,
64 PrevState<PorosityData> const& porosity_prev_data,
65 PorosityDerivativeData& porosity_d_data) const
66{
67 static int const KelvinVectorSize =
70
73
74 variables.grain_compressibility = solid_compressibility();
75
76 variables.liquid_saturation = S_L_data.S_L;
77 variables_prev.liquid_saturation = S_L_prev_data->S_L;
78
79 variables.effective_pore_pressure =
80 (1 - chi_S_L.chi_S_L) * p_GR.pG +
81 chi_S_L.chi_S_L * (p_GR.pG - p_cap.pCap);
82
83 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
84 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
85 variables_prev.effective_pore_pressure =
86 (1 - chi_S_L_prev->chi_S_L) * p_GR.pG_prev +
87 chi_S_L_prev->chi_S_L * (p_GR.pG_prev - p_cap.pCap_prev);
88
89 variables.volumetric_strain = Invariants::trace(eps_data.eps);
90 variables_prev.volumetric_strain = Invariants::trace(eps_prev);
91
92 variables_prev.porosity = porosity_prev_data->phi;
93
94 auto const& mpl_porosity = media_data.porosity_prop;
95
96 porosity_d_data.dphi_dT = mpl_porosity.template dValue<double>(
97 variables, variables_prev, MaterialPropertyLib::Variable::temperature,
98 x_t.x, x_t.t, x_t.dt);
99
100 porosity_d_data.dphi_L_dp_cap = mpl_porosity.template dValue<double>(
101 variables, variables_prev,
103 x_t.dt);
104}
105
106template struct PorosityModel<2>;
107template struct PorosityModel<3>;
108} // namespace ConstitutiveRelations
109} // namespace ProcessLib::TH2M
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
BaseLib::StrongType< double, struct SolidCompressibilityDataTag > SolidCompressibilityData
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:14
void dEval(SpaceTimeData const &x_t, MediaData const &media_data, SaturationData const &S_L_data, PrevState< SaturationData > const &S_L_prev_data, CapillaryPressureData const &p_cap, GasPressureData const &p_GR, BishopsData const &chi_S_L, PrevState< BishopsData > const &chi_S_L_prev, SolidCompressibilityData const &solid_compressibility, StrainData< DisplacementDim > const &eps_data, MathLib::KelvinVector::KelvinVectorType< DisplacementDim > const &&eps_prev, PrevState< PorosityData > const &porosity_prev_data, PorosityDerivativeData &porosity_d_data) const
void eval(SpaceTimeData const &x_t, MediaData const &media_data, SaturationData const &S_L_data, PrevState< SaturationData > const &S_L_prev_data, CapillaryPressureData const &p_cap, GasPressureData const &p_GR, BishopsData const &chi_S_L, PrevState< BishopsData > const &chi_S_L_prev, SolidCompressibilityData const &solid_compressibility, StrainData< DisplacementDim > const &eps_data, MathLib::KelvinVector::KelvinVectorType< DisplacementDim > const &&eps_prev, PrevState< PorosityData > const &porosity_prev_data, PorosityData &porosity_data) const