Loading [MathJax]/extensions/tex2jax.js
OGS
Porosity.cpp
Go to the documentation of this file.
1
10#include "Porosity.h"
11
12namespace ProcessLib::TH2M
13{
14namespace ConstitutiveRelations
15{
16
17template <int DisplacementDim>
19 SpaceTimeData const& x_t, MediaData const& media_data,
20 SaturationData const& S_L_data,
21 PrevState<SaturationData> const& S_L_prev_data,
22 CapillaryPressureData const& p_cap, GasPressureData const& p_GR,
23 BishopsData const& chi_S_L, PrevState<BishopsData> const& chi_S_L_prev,
24 SolidCompressibilityData const& solid_compressibility,
25 StrainData<DisplacementDim> const& eps_data,
27 PrevState<PorosityData> const& porosity_prev_data,
28 PorosityData& porosity_data) const
29{
30 static int const KelvinVectorSize =
33
36
37 variables.grain_compressibility = solid_compressibility();
38
39 variables.liquid_saturation = S_L_data.S_L;
40 variables_prev.liquid_saturation = S_L_prev_data->S_L;
41
42 variables.effective_pore_pressure =
43 (1 - chi_S_L.chi_S_L) * p_GR.pG +
44 chi_S_L.chi_S_L * (p_GR.pG - p_cap.pCap);
45
46 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
47 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
48 variables_prev.effective_pore_pressure =
49 (1 - chi_S_L_prev->chi_S_L) * p_GR.pG_prev +
50 chi_S_L_prev->chi_S_L * (p_GR.pG_prev - p_cap.pCap_prev);
51
52 variables.volumetric_strain = Invariants::trace(eps_data.eps);
53 variables_prev.volumetric_strain = Invariants::trace(eps_prev);
54
55 variables_prev.porosity = porosity_prev_data->phi;
56 porosity_data.phi =
58 .template value<double>(variables, variables_prev, x_t.x, x_t.t,
59 x_t.dt);
60}
61
62template <int DisplacementDim>
64 SpaceTimeData const& x_t, MediaData const& media_data,
65 SaturationData const& S_L_data,
66 PrevState<SaturationData> const& S_L_prev_data,
67 CapillaryPressureData const& p_cap, GasPressureData const& p_GR,
68 BishopsData const& chi_S_L, PrevState<BishopsData> const& chi_S_L_prev,
69 SolidCompressibilityData const& solid_compressibility,
70 StrainData<DisplacementDim> const& eps_data,
72 PrevState<PorosityData> const& porosity_prev_data,
73 PorosityDerivativeData& porosity_d_data) const
74{
75 static int const KelvinVectorSize =
78
81
82 variables.grain_compressibility = solid_compressibility();
83
84 variables.liquid_saturation = S_L_data.S_L;
85 variables_prev.liquid_saturation = S_L_prev_data->S_L;
86
87 variables.effective_pore_pressure =
88 (1 - chi_S_L.chi_S_L) * p_GR.pG +
89 chi_S_L.chi_S_L * (p_GR.pG - p_cap.pCap);
90
91 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
92 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
93 variables_prev.effective_pore_pressure =
94 (1 - chi_S_L_prev->chi_S_L) * p_GR.pG_prev +
95 chi_S_L_prev->chi_S_L * (p_GR.pG_prev - p_cap.pCap_prev);
96
97 variables.volumetric_strain = Invariants::trace(eps_data.eps);
98 variables_prev.volumetric_strain = Invariants::trace(eps_prev);
99
100 variables_prev.porosity = porosity_prev_data->phi;
101
102 auto const& mpl_porosity =
104
105 porosity_d_data.dphi_dT = mpl_porosity.template dValue<double>(
106 variables, variables_prev, MaterialPropertyLib::Variable::temperature,
107 x_t.x, x_t.t, x_t.dt);
108
109 porosity_d_data.dphi_L_dp_cap = mpl_porosity.template dValue<double>(
110 variables, variables_prev,
112 x_t.dt);
113}
114
115template struct PorosityModel<2>;
116template struct PorosityModel<3>;
117} // namespace ConstitutiveRelations
118} // namespace ProcessLib::TH2M
Property const & property(PropertyType const &p) const
Definition Medium.cpp:54
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
Represents a previous state of type T.
Definition Base.h:21
ParameterLib::SpatialPosition x
Definition Base.h:74
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:20
MaterialPropertyLib::Medium const & medium
Definition Base.h:45
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
Definition Porosity.cpp:63
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
Definition Porosity.cpp:18