OGS
ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/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
7{
9{
10
11template <int DisplacementDim>
12
14 SpaceTimeData const& x_t, MediaData const& media_data,
15 SolidCompressibilityData const& solid_compressibility_data,
16 BishopsData const& bishops_data,
17 PrevState<BishopsData> const& bishops_data_prev,
19 PorosityData const& poro_data, StrainData<DisplacementDim> const& eps_data,
20 PrevState<StrainData<DisplacementDim>> const& eps_prev_data,
21 PrevState<TransportPorosityData> const& transport_poro_data_prev,
22 TransportPorosityData& transport_poro_data) const
23{
24 namespace MPL = MaterialPropertyLib;
25
26 auto const& medium = media_data.medium;
27
28 if (!medium.hasProperty(MPL::PropertyType::transport_porosity))
29 {
30 transport_poro_data.phi = poro_data.phi;
31 return;
32 }
33
34 MPL::VariableArray variables;
35 MPL::VariableArray variables_prev;
36
37 static constexpr int kelvin_vector_size =
40 // Used in
41 // MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp
42 variables_prev.transport_porosity = transport_poro_data_prev->phi;
43
44 // Used in
45 // MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
46 variables.grain_compressibility = solid_compressibility_data.beta_SR;
47 // Set volumetric strain rate for the general case without swelling.
48 // Note: Should be the volumetric mechanical strain!
49 variables.volumetric_mechanical_strain = Invariants::trace(eps_data.eps);
50 variables_prev.volumetric_mechanical_strain =
51 Invariants::trace(eps_prev_data->eps);
52 variables.effective_pore_pressure =
53 -bishops_data.chi_S_L * p_cap_data.p_cap;
54 variables.porosity = poro_data.phi;
55
56 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
57 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
58 variables_prev.effective_pore_pressure =
59 -bishops_data_prev->chi_S_L * p_cap_data.p_cap_prev;
60
61 transport_poro_data.phi =
63 .template value<double>(variables, variables_prev, x_t.x, x_t.t,
64 x_t.dt);
65}
66
67template struct TransportPorosityModel<2>;
68template struct TransportPorosityModel<3>;
69
70} // namespace ConstitutiveStressSaturation_StrainPressureTemperature
71} // namespace ProcessLib::ThermoRichardsMechanics
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:14
void eval(SpaceTimeData const &x_t, MediaData const &media_data, SolidCompressibilityData const &solid_compressibility_data, BishopsData const &bishops_data, PrevState< BishopsData > const &bishops_data_prev, CapillaryPressureData< DisplacementDim > const &p_cap_data, PorosityData const &poro_data, StrainData< DisplacementDim > const &eps_data, PrevState< StrainData< DisplacementDim > > const &eps_prev_data, PrevState< TransportPorosityData > const &transport_poro_data_prev, TransportPorosityData &transport_poro_data) const