OGS
TH2M/ConstitutiveRelations/TransportPorosity.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 "TransportPorosity.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,
21 PrevState<TransportPorosityData> const& transport_porosity_prev_data,
22 PorosityData const& poro_data,
23 TransportPorosityData& transport_porosity_data) const
24{
25 static int const KelvinVectorSize =
28
31
32 variables.grain_compressibility = solid_compressibility();
33
34 variables.liquid_saturation = S_L_data.S_L;
35 variables_prev.liquid_saturation = S_L_prev_data->S_L;
36
37 variables.effective_pore_pressure =
38 (1 - chi_S_L.chi_S_L) * p_GR.pG +
39 chi_S_L.chi_S_L * (p_GR.pG - p_cap.pCap);
40
41 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
42 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
43 variables_prev.effective_pore_pressure =
44 (1 - chi_S_L_prev->chi_S_L) * p_GR.pG_prev +
45 chi_S_L_prev->chi_S_L * (p_GR.pG_prev - p_cap.pCap_prev);
46
48 Invariants::trace(eps_m_data.eps_m);
49 variables_prev.volumetric_mechanical_strain =
50 Invariants::trace(eps_m_prev_data->eps_m);
51
52 variables_prev.transport_porosity = transport_porosity_prev_data->phi;
53 variables.porosity = poro_data.phi;
54 assert(media_data.transport_porosity_prop != nullptr);
55 transport_porosity_data.phi =
56 media_data.transport_porosity_prop->template value<double>(
57 variables, variables_prev, x_t.x, x_t.t, x_t.dt);
58}
59
60template struct TransportPorosityModel<2>;
61template struct TransportPorosityModel<3>;
62} // namespace ConstitutiveRelations
63} // namespace ProcessLib::TH2M
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
BaseLib::StrongType< double, struct SolidCompressibilityDataTag > SolidCompressibilityData
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps_m
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, MechanicalStrainData< DisplacementDim > const &eps_m_data, PrevState< MechanicalStrainData< DisplacementDim > > const &eps_m_prev_data, PrevState< TransportPorosityData > const &transport_porosity_prev_data, PorosityData const &poro_data, TransportPorosityData &transport_porosity_data) const