17template <
int DisplacementDim>
21 double const a1,
double const a2,
double const pressure_threshold,
22 double const minimum_permeability,
double const maximum_permeability,
35template <
int DisplacementDim>
38 if (!std::holds_alternative<Medium*>(
scale_))
41 "The property 'GasPressureDependentPermeability' is implemented on "
42 "the 'medium' scale only.");
46template <
int DisplacementDim>
54 auto k_data =
k0_(t, pos);
58 ? (1.0 +
a1_ * gas_pressure / 1.0e6)
62 for (
auto& k_i : k_data)
72 Eigen::Matrix<double, DisplacementDim, DisplacementDim>
const e =
74 Eigen::Matrix<double, DisplacementDim, DisplacementDim> k =
75 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
77 for (
int i = 0; i < DisplacementDim; ++i)
79 Eigen::Matrix<double, DisplacementDim, DisplacementDim>
const
80 ei_otimes_ei = e.col(i) * e.col(i).transpose();
82 k += k_data[i] * ei_otimes_ei;
90template <
int DisplacementDim>
97 "The derivative of the intrinsic permeability of "
98 "GasPressureDependentPermeability"
99 "is not implemented.");
A gas pressure dependent intrinsic permeability model.
GasPressureDependentPermeability(std::string name, ParameterLib::Parameter< double > const &k0, double const a1, double const a2, double const pressure_threshold, double const minimum_permeability, double const maximum_permeability, ParameterLib::CoordinateSystem const *const local_coordinate_system)
ParameterLib::Parameter< double > const & k0_
Initial intrinsic permeability.
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
double const minimum_permeability_
double const maximum_permeability_
ParameterLib::CoordinateSystem const *const local_coordinate_system_
void checkScale() const override
double const pressure_threshold_
virtual PropertyDataType value() const
std::variant< Medium *, Phase *, Component * > scale_
double gas_phase_pressure
PropertyDataType fromVector(std::vector< double > const &values)
std::variant< double, Eigen::Matrix< double, 2, 1 >, Eigen::Matrix< double, 3, 1 >, Eigen::Matrix< double, 2, 2 >, Eigen::Matrix< double, 3, 3 >, Eigen::Matrix< double, 4, 1 >, Eigen::Matrix< double, 6, 1 >, Eigen::MatrixXd > PropertyDataType
A local coordinate system used for tensor transformations.