Loading [MathJax]/extensions/tex2jax.js
OGS
PermeabilityModel.cpp
Go to the documentation of this file.
1
10#include "PermeabilityModel.h"
11
13
14namespace ProcessLib::TH2M
15{
16namespace ConstitutiveRelations
17{
18template <int DisplacementDim>
20 SpaceTimeData const& x_t, MediaData const& media_data,
21 SaturationData const& S_L_data, GasPressureData const& p_g,
22 CapillaryPressureData const& p_cap, TemperatureData const& T_data,
23 TransportPorosityData const& transport_poro_data,
24 TotalStressData<DisplacementDim> const& total_stress_data,
25 MechanicalStrainData<DisplacementDim> const& mechanical_strain_data,
26 StrainData<DisplacementDim> const& eps_data,
27 EquivalentPlasticStrainData const& equivalent_plastic_strain,
29{
30 namespace MPL = MaterialPropertyLib;
31
32 static constexpr int kelvin_vector_size =
35
36 auto const& medium = media_data.medium;
37
38 MPL::VariableArray variables;
39 variables.liquid_saturation = S_L_data.S_L;
40 variables.temperature = T_data.T;
41 variables.capillary_pressure = p_cap.pCap;
42 variables.gas_phase_pressure = p_g.pG;
43 variables.transport_porosity = transport_poro_data.phi;
44
45 out.k_rel_G =
46 medium
47 .property(MPL::PropertyType::relative_permeability_nonwetting_phase)
48 .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
49
50 out.dk_rel_G_dS_L =
51 medium[MPL::PropertyType::relative_permeability_nonwetting_phase]
52 .template dValue<double>(variables,
53 MPL::Variable::liquid_saturation, x_t.x,
54 x_t.t, x_t.dt);
55
56 out.k_rel_L = medium.property(MPL::PropertyType::relative_permeability)
57 .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
58
59 out.dk_rel_L_dS_L = medium[MPL::PropertyType::relative_permeability]
60 .template dValue<double>(
61 variables, MPL::Variable::liquid_saturation,
62 x_t.x, x_t.t, x_t.dt);
63
64 // For stress dependent permeability.
65 variables.total_stress =
67 total_stress_data.sigma_total);
68
70 mechanical_strain_data.eps_m);
71
72 variables.equivalent_plastic_strain = equivalent_plastic_strain();
73
74 variables.volumetric_strain = Invariants::trace(eps_data.eps);
75
77 medium.property(MPL::PropertyType::permeability)
78 .value(variables, x_t.x, x_t.t, x_t.dt));
79}
80
81template struct PermeabilityModel<2>;
82template struct PermeabilityModel<3>;
83} // namespace ConstitutiveRelations
84} // namespace ProcessLib::TH2M
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
Definition Base.h:26
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps_m
ParameterLib::SpatialPosition x
Definition Base.h:74
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:20
MaterialPropertyLib::Medium const & medium
Definition Base.h:45
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