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