19template <
int GlobalDim>
23 double const& value)
const
25 return Eigen::Matrix<double, GlobalDim, GlobalDim>::Identity() * value;
29 Eigen::Vector2d
const& values)
const
31 if constexpr (GlobalDim == 2)
33 return values.asDiagonal();
36 "Cannot convert 2d vector with values [{}] to {:d}x{:d} diagonal "
38 values, GlobalDim, GlobalDim);
42 Eigen::Vector3d
const& values)
const
44 if constexpr (GlobalDim == 3)
46 return values.asDiagonal();
49 "Cannot convert 3d vector with values [{}] to {:d}x{:d} diagonal "
51 values, GlobalDim, GlobalDim);
55 Eigen::Matrix<double, 2, 2>
const& values)
const
57 if constexpr (GlobalDim == 2)
62 "Cannot convert a 2d tensor with values [{}] to {:d}x{:d} matrix",
63 values, GlobalDim, GlobalDim);
66 Eigen::Matrix<double, 3, 3>
const& values)
const
68 if constexpr (GlobalDim == 3)
73 "Cannot convert a 3d tensor with values [{}] to {:d}x{:d} matrix",
74 values, GlobalDim, GlobalDim);
78 Eigen::Matrix<double, 4, 1>
const& values)
const
80 Eigen::Matrix<double, GlobalDim, GlobalDim> result;
81 if constexpr (GlobalDim == 2)
83 result << values[0], values[3], values[3], values[1];
85 if constexpr (GlobalDim == 3)
87 result << values[0], values[3], 0, values[3], values[1], 0, 0, 0,
94 Eigen::Matrix<double, 6, 1>
const& values)
const
96 if constexpr (GlobalDim == 3)
98 Eigen::Matrix<double, GlobalDim, GlobalDim> result;
99 result << values[0], values[3], values[5], values[3], values[1],
100 values[4], values[5], values[4], values[2];
105 "Cannot convert a symmetric 3d tensor with values [{}] to a {}x{} "
107 values, GlobalDim, GlobalDim);
111 Eigen::MatrixXd
const& values)
const
113 if (GlobalDim == values.rows() && GlobalDim == values.cols())
119 "Cannot convert a dynamic {}x{} matrix with values [{}] to a {}x{} "
121 values.rows(), values.cols(), values, GlobalDim, GlobalDim);
125template <
int GlobalDim>
template Eigen::Matrix< double, 4, 4 > formEigenTensor< 4 >(MaterialPropertyLib::PropertyDataType const &values)
template Eigen::Matrix< double, 6, 6 > formEigenTensor< 6 >(MaterialPropertyLib::PropertyDataType const &values)
template Eigen::Matrix< double, 3, 3 > formEigenTensor< 3 >(MaterialPropertyLib::PropertyDataType const &values)
Eigen::Matrix< double, GlobalDim, GlobalDim > formEigenTensor(MaterialPropertyLib::PropertyDataType const &values)
template Eigen::Matrix< double, 1, 1 > formEigenTensor< 1 >(MaterialPropertyLib::PropertyDataType const &values)
template Eigen::Matrix< double, 2, 2 > formEigenTensor< 2 >(MaterialPropertyLib::PropertyDataType 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