25 std::array<double, DisplacementDim>
26 intrinsic_permeabilities,
27 std::array<double, DisplacementDim>
30 : k_(std::move(intrinsic_permeabilities)),
31 lambda_(std::move(exponents)),
32 local_coordinate_system_(local_coordinate_system)
57 auto const medium = std::get<Medium*>(scale_);
61 .template initialValue<double>(
62 pos, std::numeric_limits<double>::quiet_NaN())
64 .template initialValue<double>(
65 pos, std::numeric_limits<double>::quiet_NaN());
67 Eigen::Matrix<double, DisplacementDim, DisplacementDim> k =
68 Eigen::Matrix<double, DisplacementDim, DisplacementDim>::Zero();
70 Eigen::Matrix<double, DisplacementDim, DisplacementDim>
const e =
71 local_coordinate_system_ ==
nullptr
72 ? Eigen::Matrix<double, DisplacementDim,
73 DisplacementDim>::Identity()
74 : local_coordinate_system_->transformation<DisplacementDim>(pos);
78 for (
int i = 0; i < DisplacementDim; ++i)
80 Eigen::Matrix<double, DisplacementDim, DisplacementDim>
const
81 ei_otimes_ei = e.col(i) * e.col(i).transpose();
83 k += k_[i] * std::pow(phi / phi_0, lambda_[i]) * ei_otimes_ei;
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