Helper for the Eigen::Tensor types. More...
#include <numeric>
#include <ranges>
#include <unsupported/Eigen/CXX11/Tensor>
#include <dune/common/promotiontraits.hh>
#include <ikarus/utils/concepts.hh>
#include <ikarus/utils/math.hh>
Go to the source code of this file.
Namespaces | |
namespace | Ikarus |
Functions | |
template<typename Derived , typename T , auto rank> | |
Eigen::Tensor< typename Derived::Scalar, rank > | Ikarus::tensorView (const Eigen::EigenBase< Derived > &matrix, const std::array< T, rank > &dims) |
View an Eigen matrix as an Eigen Tensor with specified dimensions. More... | |
auto | Ikarus::dyadic (const auto &A_ij, const auto &B_kl) |
Computes the dyadic product of two Eigen tensors. More... | |
template<typename ScalarType = double, int dim = 3> | |
auto | Ikarus::symmetricIdentityFourthOrder () |
Generates a symmetric identity fourth-order tensor. More... | |
template<typename ScalarType = double, int dim = 3> | |
auto | Ikarus::symmetricFourthOrder (const auto &A, const auto &B) |
Generates a symmetric fourth-order tensor based on two second-order input tensors. More... | |
template<typename ScalarType = double, int dim = 3> | |
auto | Ikarus::identityFourthOrder () |
Generates an identity fourth-order tensor. More... | |
template<typename AType , typename BType > | |
auto | Ikarus::fourthOrderIKJL (const Eigen::MatrixBase< AType > &A, const Eigen::MatrixBase< BType > &B) |
Computes the IKJL product of two matrices. More... | |
template<typename ScalarType , long int dim> | |
auto | Ikarus::symTwoSlots (const Eigen::TensorFixedSize< ScalarType, Eigen::Sizes< dim, dim, dim, dim > > &t, const std::array< size_t, 2 > &slots) |
Creates a symmetric fourth-order tensor in the two specified slots of the input tensor. More... | |
constexpr Eigen::Index | Ikarus::toVoigt (Eigen::Index i, Eigen::Index j) noexcept |
Converts 2D indices to Voigt notation index. More... | |
template<typename ScalarType = double> | |
Eigen::Matrix< ScalarType, 6, 6 > | Ikarus::toVoigt (const Eigen::TensorFixedSize< ScalarType, Eigen::Sizes< 3, 3, 3, 3 > > &ft) |
Converts a fourth-order tensor of fixed size 3x3x3x3 to a Voigt notation matrix of size 6x6. More... | |
template<typename ST , int size, int Options, int maxSize> requires ((size > 0 and size <= 3) or (maxSize > 0 and maxSize <= 3 and size == Eigen::Dynamic)) | |
auto | Ikarus::toVoigt (const Eigen::Matrix< ST, size, size, Options, maxSize, maxSize > &E, bool isStrain=true) |
Converts a square 2x2 or 3x3 matrix to a Voigt notation vector. More... | |
template<typename ST , int size, int Options, int maxSize> requires ((size == 1 or size == 3 or size == 6) or ((maxSize == 1 or maxSize == 3 or maxSize == 6) and size == Eigen::Dynamic)) | |
auto | Ikarus::fromVoigt (const Eigen::Matrix< ST, size, 1, Options, maxSize, 1 > &EVoigt, bool isStrain=true) |
Converts a vector given in Voigt notation to a matrix. More... | |
constexpr std::array< size_t, 2 > | Ikarus::fromVoigt (size_t i) |
Converts a Voigt notation index to matrix indices. More... | |
template<typename ScalarType > | |
auto | Ikarus::fromVoigt (const Eigen::Matrix< ScalarType, 6, 6 > &CVoigt) |
Converts a matrix in Voigt notation to a Fourth-order tensor. More... | |
template<typename Geometry > | |
Eigen::Matrix3d | Ikarus::calcTransformationMatrix2D (const Geometry &geometry) |
Calculates the 2D transformation matrix. More... | |
template<typename Geometry > | |
Eigen::Matrix< double, 6, 6 > | Ikarus::calcTransformationMatrix3D (const Geometry &geometry) |
Calculates the 3D transformation matrix. More... | |