OGS
TransportPorosity.cpp
Go to the documentation of this file.
1
11#include "TransportPorosity.h"
12
14{
15namespace ConstitutiveStress_StrainTemperature
16{
17
18template <int DisplacementDim>
19
21 SpaceTimeData const& x_t, MediaData const& media_data,
22 SolidCompressibilityData const& solid_compressibility_data,
23 BishopsData const& bishops_data,
24 PrevState<BishopsData> const& bishops_data_prev,
26 PorosityData const& poro_data,
28 DisplacementDim> const& eps_m_data,
30 DisplacementDim>> const& eps_m_prev_data,
31 PrevState<TransportPorosityData> const& transport_poro_data_prev,
32 TransportPorosityData& transport_poro_data) const
33{
34 namespace MPL = MaterialPropertyLib;
35
36 auto const& medium = media_data.medium;
37
38 if (!medium.hasProperty(MPL::PropertyType::transport_porosity))
39 {
40 transport_poro_data.phi = poro_data.phi;
41 return;
42 }
43
44 MPL::VariableArray variables;
45 MPL::VariableArray variables_prev;
46
47 static constexpr int kelvin_vector_size =
50 // Used in
51 // MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp
52 variables_prev.transport_porosity = transport_poro_data_prev->phi;
53
54 // Used in
55 // MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
56 variables.grain_compressibility = solid_compressibility_data.beta_SR;
57 // Set volumetric mechanical strain rate for the general case without
58 // swelling.
60 Invariants::trace(eps_m_data.eps_m);
61 variables_prev.volumetric_mechanical_strain =
62 Invariants::trace(eps_m_prev_data->eps_m);
63 variables.effective_pore_pressure =
64 -bishops_data.chi_S_L * p_cap_data.p_cap;
65 variables.porosity = poro_data.phi;
66
67 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
68 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
69 variables_prev.effective_pore_pressure =
70 -bishops_data_prev->chi_S_L * p_cap_data.p_cap_prev;
71
72 transport_poro_data.phi =
73 medium.property(MPL::PropertyType::transport_porosity)
74 .template value<double>(variables, variables_prev, x_t.x, x_t.t,
75 x_t.dt);
76}
77
78template struct TransportPorosityModel<2>;
79template struct TransportPorosityModel<3>;
80} // namespace ConstitutiveStress_StrainTemperature
81} // namespace ProcessLib::ThermoRichardsMechanics
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Represents a previous state of type T.
Definition Base.h:21
ParameterLib::SpatialPosition x
Definition Base.h:74
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
MaterialPropertyLib::Medium const & medium
Definition Base.h:61