OGS
TH2M/ConstitutiveRelations/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
8namespace ProcessLib::TH2M
9{
11{
12template <int DisplacementDim>
14 SpaceTimeData const& x_t, MediaData const& media_data,
15 SaturationData const& S_L_data, GasPressureData const& p_g,
16 CapillaryPressureData const& p_cap, TemperatureData const& T_data,
17 TransportPorosityData const& transport_poro_data,
18 TotalStressData<DisplacementDim> const& total_stress_data,
19 MechanicalStrainData<DisplacementDim> const& mechanical_strain_data,
20 StrainData<DisplacementDim> const& eps_data,
21 EquivalentPlasticStrainData const& equivalent_plastic_strain,
23{
24 namespace MPL = MaterialPropertyLib;
25
26 static constexpr int kelvin_vector_size =
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.pCap;
34 variables.gas_phase_pressure = p_g.pG;
35 variables.transport_porosity = transport_poro_data.phi;
36
38 .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
39
41 .template dValue<double>(
43 x_t.x, x_t.t, x_t.dt);
44
45 out.k_rel_L = media_data.relative_permeability_prop.template value<double>(
46 variables, x_t.x, x_t.t, x_t.dt);
47
48 out.dk_rel_L_dS_L =
49 media_data.relative_permeability_prop.template dValue<double>(
50 variables, MPL::Variable::liquid_saturation, x_t.x, x_t.t, x_t.dt);
51
52 // For stress dependent permeability.
53 variables.total_stress =
55 total_stress_data.sigma_total);
56
58 mechanical_strain_data.eps_m);
59
60 variables.equivalent_plastic_strain = equivalent_plastic_strain();
61
62 variables.volumetric_strain = Invariants::trace(eps_data.eps);
63
65 media_data.permeability_prop.value(variables, x_t.x, x_t.t, x_t.dt));
66}
67
68template struct PermeabilityModel<2>;
69template struct PermeabilityModel<3>;
70} // namespace ConstitutiveRelations
71} // namespace ProcessLib::TH2M
virtual PropertyDataType value() const
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
BaseLib::StrongType< double, struct EquivalentPlasticStrainTag > EquivalentPlasticStrainData
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps_m
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:14
MaterialPropertyLib::Property const & relative_permeability_nonwetting_phase_prop
void eval(SpaceTimeData const &x_t, MediaData const &media_data, SaturationData const &S_L_data, GasPressureData const &p_g, CapillaryPressureData const &p_cap, TemperatureData const &T_data, TransportPorosityData const &transport_poro_data, TotalStressData< DisplacementDim > const &total_stress_data, MechanicalStrainData< DisplacementDim > const &mechanical_strain_data, StrainData< DisplacementDim > const &eps_data, EquivalentPlasticStrainData const &equivalent_plastic_strain, PermeabilityData< DisplacementDim > &out) const