OGS
ThermoRichardsMechanics/ConstitutiveStress_StrainTemperature/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,
21 DisplacementDim> const& eps_m_data,
23 DisplacementDim>> const& eps_m_prev_data,
24 PrevState<TransportPorosityData> const& transport_poro_data_prev,
25 TransportPorosityData& transport_poro_data) const
26{
27 namespace MPL = MaterialPropertyLib;
28
29 auto const& medium = media_data.medium;
30
31 if (!medium.hasProperty(MPL::PropertyType::transport_porosity))
32 {
33 transport_poro_data.phi = poro_data.phi;
34 return;
35 }
36
37 MPL::VariableArray variables;
38 MPL::VariableArray variables_prev;
39
40 static constexpr int kelvin_vector_size =
43 // Used in
44 // MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp
45 variables_prev.transport_porosity = transport_poro_data_prev->phi;
46
47 // Used in
48 // MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
49 variables.grain_compressibility = solid_compressibility_data.beta_SR;
50 // Set volumetric mechanical strain rate for the general case without
51 // swelling.
53 Invariants::trace(eps_m_data.eps_m);
54 variables_prev.volumetric_mechanical_strain =
55 Invariants::trace(eps_m_prev_data->eps_m);
56 variables.effective_pore_pressure =
57 -bishops_data.chi_S_L * p_cap_data.p_cap;
58 variables.porosity = poro_data.phi;
59
60 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
61 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
62 variables_prev.effective_pore_pressure =
63 -bishops_data_prev->chi_S_L * p_cap_data.p_cap_prev;
64
65 transport_poro_data.phi =
67 .template value<double>(variables, variables_prev, x_t.x, x_t.t,
68 x_t.dt);
69}
70
71template struct TransportPorosityModel<2>;
72template struct TransportPorosityModel<3>;
73} // namespace ConstitutiveStress_StrainTemperature
74} // namespace ProcessLib::ThermoRichardsMechanics
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, 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, ProcessLib::ConstitutiveRelations::MechanicalStrainData< DisplacementDim > const &eps_m_data, PrevState< ProcessLib::ConstitutiveRelations::MechanicalStrainData< DisplacementDim > > const &eps_m_prev_data, PrevState< TransportPorosityData > const &transport_poro_data_prev, TransportPorosityData &transport_poro_data) const