62 auto k_data = k0_(t, pos);
65 (gas_pressure <= pressure_threshold_)
66 ? (1.0 + a1_ * gas_pressure / 1.0e6)
67 : (a2_ * (gas_pressure - pressure_threshold_) / 1.0e6 + 1.0 +
68 a1_ * pressure_threshold_ / 1.0e6);
70 for (
auto& k_i : k_data)
72 k_i = std::clamp(k_i * factor, minimum_permeability_,
73 maximum_permeability_);
78 if (local_coordinate_system_ && (k_data.size() == DisplacementDim))
80 Eigen::Matrix<double, DisplacementDim, DisplacementDim>
const e =
81 local_coordinate_system_->transformation<DisplacementDim>(pos);
82 Eigen::Matrix<double, DisplacementDim, DisplacementDim> k =
83 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
85 for (
int i = 0; i < DisplacementDim; ++i)
87 Eigen::Matrix<double, DisplacementDim, DisplacementDim>
const
88 ei_otimes_ei = e.col(i) * e.col(i).transpose();
90 k += k_data[i] * ei_otimes_ei;
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)
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