OGS
ThermoRichardsMechanics/ConstitutiveCommon/PermeabilityModel.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 "PermeabilityModel.h"
5
7
9{
10template <int DisplacementDim>
12 SpaceTimeData const& x_t, MediaData const& media_data,
13 SaturationData const& S_L_data,
16 TransportPorosityData const& transport_poro_data,
17 TotalStressData<DisplacementDim> const& total_stress_data,
18 StrainData<DisplacementDim> const& eps_data,
19 EquivalentPlasticStrainData const& equiv_plast_strain_data,
21{
22 namespace MPL = MaterialPropertyLib;
23
24 static constexpr int kelvin_vector_size =
27
28 auto const& medium = media_data.medium;
29
30 MPL::VariableArray variables;
31 variables.liquid_saturation = S_L_data.S_L;
32 variables.temperature = T_data.T;
33 variables.capillary_pressure = p_cap_data.p_cap;
34 variables.transport_porosity = transport_poro_data.phi;
35
37 .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
38 out.dk_rel_dS_L =
40 .template dValue<double>(variables,
42 x_t.x,
43 x_t.t,
44 x_t.dt);
45
46 // For stress dependent permeability.
47 using SymmetricTensor =
48 KelvinVector<DisplacementDim>; // same data type, but different
49 // semantics
50 variables.total_stress.emplace<SymmetricTensor>(
52 total_stress_data.sigma_total));
53
55 equiv_plast_strain_data.equivalent_plastic_strain;
56
57 variables.volumetric_strain = Invariants::trace(eps_data.eps);
58
59 auto const K_intrinsic = MPL::formEigenTensor<DisplacementDim>(
60 medium.property(MPL::PropertyType::permeability)
61 .value(variables, x_t.x, x_t.t, x_t.dt));
62
63 out.Ki = K_intrinsic;
64}
65
66template struct PermeabilityModel<2>;
67template struct PermeabilityModel<3>;
68} // namespace ProcessLib::ThermoRichardsMechanics
constexpr Eigen::Matrix< double, GlobalDim, GlobalDim > formEigenTensor(MaterialPropertyLib::PropertyDataType const &values)
Eigen::Matrix< double, 4, 1 > kelvinVectorToSymmetricTensor(Eigen::Matrix< double, 4, 1, Eigen::ColMajor, 4, 1 > const &v)
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
KV::KelvinVectorType< DisplacementDim > KelvinVector
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:14
void eval(SpaceTimeData const &x_t, MediaData const &media_data, SaturationData const &S_L_data, CapillaryPressureData< DisplacementDim > const &p_cap_data, TemperatureData< DisplacementDim > const &T_data, TransportPorosityData const &transport_poro_data, TotalStressData< DisplacementDim > const &total_stress_data, StrainData< DisplacementDim > const &eps_data, EquivalentPlasticStrainData const &equiv_plast_strain_data, PermeabilityData< DisplacementDim > &out) const