Loading [MathJax]/extensions/tex2jax.js
OGS
TransportPorosity.cpp
Go to the documentation of this file.
1
11#include "TransportPorosity.h"
12
14{
15namespace ConstitutiveStressSaturation_StrainPressureTemperature
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, StrainData<DisplacementDim> const& eps_data,
27 PrevState<StrainData<DisplacementDim>> const& eps_prev_data,
28 PrevState<TransportPorosityData> const& transport_poro_data_prev,
29 TransportPorosityData& transport_poro_data) const
30{
31 namespace MPL = MaterialPropertyLib;
32
33 auto const& medium = media_data.medium;
34
35 if (!medium.hasProperty(MPL::PropertyType::transport_porosity))
36 {
37 transport_poro_data.phi = poro_data.phi;
38 return;
39 }
40
41 MPL::VariableArray variables;
42 MPL::VariableArray variables_prev;
43
44 static constexpr int kelvin_vector_size =
47 // Used in
48 // MaterialLib/MPL/Properties/PermeabilityOrthotropicPowerLaw.cpp
49 variables_prev.transport_porosity = transport_poro_data_prev->phi;
50
51 // Used in
52 // MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
53 variables.grain_compressibility = solid_compressibility_data.beta_SR;
54 // Set volumetric strain rate for the general case without swelling.
55 // Note: Should be the volumetric mechanical strain!
56 variables.volumetric_mechanical_strain = Invariants::trace(eps_data.eps);
57 variables_prev.volumetric_mechanical_strain =
58 Invariants::trace(eps_prev_data->eps);
59 variables.effective_pore_pressure =
60 -bishops_data.chi_S_L * p_cap_data.p_cap;
61 variables.porosity = poro_data.phi;
62
63 // Used in MaterialLib/MPL/Properties/PorosityFromMassBalance.cpp
64 // and MaterialLib/MPL/Properties/TransportPorosityFromMassBalance.cpp
65 variables_prev.effective_pore_pressure =
66 -bishops_data_prev->chi_S_L * p_cap_data.p_cap_prev;
67
68 transport_poro_data.phi =
69 medium.property(MPL::PropertyType::transport_porosity)
70 .template value<double>(variables, variables_prev, x_t.x, x_t.t,
71 x_t.dt);
72}
73
74template struct TransportPorosityModel<2>;
75template struct TransportPorosityModel<3>;
76
77} // namespace ConstitutiveStressSaturation_StrainPressureTemperature
78} // 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
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:20
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
MaterialPropertyLib::Medium const & medium
Definition Base.h:61