RFFGen
 All Classes Namespaces Files Functions Typedefs Enumerations Groups
Modules | Namespaces | Classes | Typedefs | Functions
Linear Algebra

Functionality from linear algebra such as (modified) principal and mixed matrix invariants. More...

Modules

 Invariants
 Matrix Invariants (principal and mixed, modified (isochoric) invariants and deviatoric invariants).
 

Namespaces

 LinearAlgebra
 Functionality from linear algebra such as (modified) principal and mixed matrix invariants.
 

Classes

class  RFFGen::LinearAlgebra::DynamicSizeDeterminant< Matrix >
 Determinant of dynamic size matrix with first three derivatives. More...
 
class  RFFGen::LinearAlgebra::Deviator< Matrix >
 Type of the deviator of a matrix $ A\in\mathbb{R}^{n,n} $, i.e. $ A - \frac{\mathrm{tr}(A)}{n}I $. More...
 
struct  RFFGen::LinearAlgebra::SquaredEuclideanNorm< Matrix, class >
 Compute squared matrix norm $ \|A\|^2 = A\negthinspace : \negthinspace A = \mathrm{tr}(A^TA) = \sum_{i,j} A_{ij}^2. $. More...
 
struct  RFFGen::LinearAlgebra::SquaredMatrixNorm< Matrix, class >
 Compute squared matrix norm $ \|A\|^2 = A\negthinspace : \negthinspace A = \mathrm{tr}(A^TA) = \sum_{i,j} A_{ij}^2. $. More...
 
class  RFFGen::LinearAlgebra::ShiftedInvariant< Invariant, offset >
 Possibly scaled, shifted invariant $scaling (invariant - offset)$, where $offset = dim$ for the first two (principal,modified) invariants and $offset = 1$ for the third (principal,modified) and mixed invariants. More...
 
class  RFFGen::LinearAlgebra::LeftCauchyGreenStrainTensor< Matrix, class >
 Left Cauchy-Green strain tensor $ F^T F $ for a symmetric matrix $ F $. More...
 
class  RFFGen::LinearAlgebra::LinearizedStrainTensor< Matrix, class >
 Linearized strain tensor $ \frac{1}{2}\left(F^T+F\right) $. More...
 
class  RFFGen::LinearAlgebra::StrainTensor< Matrix >
 Strain tensor $ \frac{1}{2}\left(F^T+F\right + F^T F) $. More...
 

Typedefs

template<class Matrix >
using RFFGen::LinearAlgebra::ConstantSizeDeterminant = Detail::DeterminantImpl< Matrix, dimension< Matrix >()>
 Determinant of constant size matrix with first three derivatives.
 
template<class Matrix >
using RFFGen::LinearAlgebra::Determinant = std::conditional_t< Checks::isConstantSizeMatrix< Matrix >(), ConstantSizeDeterminant< Matrix >, DynamicSizeDeterminant< Matrix > >
 Determinant with first three derivatives.
 
template<class Matrix >
using RFFGen::LinearAlgebra::EuclideanNorm = MathematicalOperations::Chain< CMath::Sqrt, SquaredEuclideanNorm< Matrix > >
 Compute matrix norm $ \|A\| = \sqrt{A\negthinspace : \negthinspace A }= \sqrt{\mathrm{tr}(A^TA)} = \sqrt{\sum_{i,j} A_{ij}^2}. $.
 
template<class Matrix >
using RFFGen::LinearAlgebra::MatrixNorm = MathematicalOperations::Chain< CMath::Sqrt, SquaredMatrixNorm< Matrix > >
 Compute matrix norm $ \|A\| = \sqrt{A\negthinspace : \negthinspace A }= \sqrt{\mathrm{tr}(A^TA)} = \sqrt{\sum_{i,j} A_{ij}^2}. $.
 
template<class Matrix >
using RFFGen::LinearAlgebra::GeometricNonlinearity = LeftCauchyGreenStrainTensor< Matrix >
 Model of the geometric nonlinearity in elasticity theory. Implemented as template-alias to CauchyGreenStrainTensor.
 
template<class Matrix >
using RFFGen::LinearAlgebra::Trace = std::conditional_t< Checks::isConstantSizeMatrix< Matrix >(), ConstantSizeTrace< Matrix >, DynamicSizeTrace< Matrix > >
 Trace of a matrix (sum of diagonal elements).
 

Functions

template<int row, int col, class Matrix , class = std::enable_if_t<Checks::isConstantSizeMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactor (Matrix const &A)
 Compute the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $. More...
 
template<int row, int col, class Matrix , class = std::enable_if_t<!Checks::isConstantSizeMatrix<Matrix>()>, class = std::enable_if_t<Checks::isDynamicMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactor (Matrix const &A)
 Compute the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $. More...
 
template<int row, int col, class Matrix , class = std::enable_if_t<Checks::isConstantSizeMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactorDirectionalDerivative (Matrix const &A, Matrix const &B)
 Compute the first directional derivative in direction $ B $ of the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $. More...
 
template<int row, int col, class Matrix , class = std::enable_if_t<!Checks::isConstantSizeMatrix<Matrix>()>, class = std::enable_if_t<Checks::isDynamicMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactorDirectionalDerivative (Matrix const &A, Matrix const &B)
 Compute the first directional derivative in direction $ B $ of the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $. More...
 
template<class Matrix >
auto RFFGen::LinearAlgebra::det (Matrix const &A)
 Convenient generation of Determinant<Matrix>(A).
 
template<class Matrix >
auto RFFGen::LinearAlgebra::determinant (Matrix const &A)
 Convenient computation of $\det(A)$.
 
template<class Matrix , class = Concepts::SymmetricMatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::deviator (const Matrix &A)
 Deviator of a matrix $ A\in\mathbb{R}^{n,n} $, i.e. $ A - \frac{\mathrm{tr}(A)}{n}I $.
 
template<class Matrix , class Vector1 , class Vector2 >
Matrix RFFGen::LinearAlgebra::tensorProduct (const Vector1 &v, const Vector2 &w)
 Compute tensor product $ M = v \otimes w $.
 
template<class Matrix , class Vector >
Matrix RFFGen::LinearAlgebra::tensorProduct (const Vector &v)
 Compute tensor product $ M = v \otimes v $.
 
template<class Arg >
auto RFFGen::LinearAlgebra::trace (const Arg &arg)
 Convenient generation of Trace<Matrix>. More...
 
template<class Matrix , class TransposedMatrix = Matrix, class = std::enable_if_t<std::is_same<Matrix,TransposedMatrix>::value>, class = std::enable_if_t<Checks::isConstantSizeMatrix<Matrix>()>>
TransposedMatrix RFFGen::LinearAlgebra::transpose (Matrix A)
 Compute transpose of square matrix.
 
template<class TransposedMatrix , class Matrix , class = std::enable_if_t<!std::is_same<Matrix,TransposedMatrix>::value>, class = std::enable_if_t<Checks::isConstantSizeMatrix<Matrix>() && Checks::isConstantSizeMatrix<TransposedMatrix>()>>
TransposedMatrix RFFGen::LinearAlgebra::transpose (const Matrix &A)
 Compute transpose of non-square matrix.
 
template<class Matrix , class = std::enable_if_t<!Checks::isConstantSizeMatrix<Matrix>()>, class = std::enable_if_t<Checks::isDynamicMatrix<Matrix>()>>
Matrix RFFGen::LinearAlgebra::transpose (Matrix A)
 Compute transpose of square matrix.
 
template<class Matrix , class = std::enable_if_t<Checks::isConstantSizeMatrix<Matrix>()>>
Matrix RFFGen::LinearAlgebra::unitMatrix ()
 Compute unit matrix for the specified constant size matrix type. This requires that a corresponding specialization of Zero is provided.
 
template<class Matrix , class = std::enable_if_t<!Checks::isConstantSizeMatrix<Matrix>()>>
Matrix RFFGen::LinearAlgebra::unitMatrix (int rows)
 Compute unit matrix for the specified dynamic size matrix type. This requires that a corresponding specialization of Zero is provided.
 

Detailed Description

Functionality from linear algebra such as (modified) principal and mixed matrix invariants.

Function Documentation

template<int row, int col, class Matrix , class = std::enable_if_t<Checks::isConstantSizeMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactor ( Matrix const &  A)

Compute the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $.

The $(i,j)$-cofactor of a matrix $ A $ is $ (-1)^{i+j} \det(A^\#_{ij}) $, where $ A^\#_ij $ is obtained from $ A $ by deleting the $i$-th row and $ j $-th column.

template<int row, int col, class Matrix , class = std::enable_if_t<!Checks::isConstantSizeMatrix<Matrix>()>, class = std::enable_if_t<Checks::isDynamicMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactor ( Matrix const &  A)

Compute the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $.

The $(i,j)$-cofactor of a matrix $ A $ is $ (-1)^{i+j} \det(A^\#_{ij}) $, where $ A^\#_ij $ is obtained from $ A $ by deleting the $i$-th row and $ j $-th column.

template<int row, int col, class Matrix , class = std::enable_if_t<Checks::isConstantSizeMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactorDirectionalDerivative ( Matrix const &  A,
Matrix const &  B 
)

Compute the first directional derivative in direction $ B $ of the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $.

The $(i,j)$-cofactor of a matrix $ A $ is $ (-1)^{i+j} \det(A^\#_{ij}) $, where $ A^\#_{ij} $ is obtained from $ A $ by deleting the $i$-th row and $ j $-th column. If $ A\in \mathbb{R}^{3,3} $, then the cofactors are quadratic polynomials of the entries of $ A^\#_{ij} $. In this case this function can also used to compute the second directional derivative in directions $ A $ and $ B $.

template<int row, int col, class Matrix , class = std::enable_if_t<!Checks::isConstantSizeMatrix<Matrix>()>, class = std::enable_if_t<Checks::isDynamicMatrix<Matrix>()>, class = Concepts::MatrixConceptCheck<Matrix>>
auto RFFGen::LinearAlgebra::computeCofactorDirectionalDerivative ( Matrix const &  A,
Matrix const &  B 
)

Compute the first directional derivative in direction $ B $ of the $(row,col)$-cofactor of $ A $. Implemented for $ A\in \mathbb{R}^{n,n} $ with $ n=2,3 $.

The $(i,j)$-cofactor of a matrix $ A $ is $ (-1)^{i+j} \det(A^\#_{ij}) $, where $ A^\#_{ij} $ is obtained from $ A $ by deleting the $i$-th row and $ j $-th column. If $ A\in \mathbb{R}^{3,3} $, then the cofactors are quadratic polynomials of the entries of $ A^\#_{ij} $. In this case this function can also used to compute the second directional derivative in directions $ A $ and $ B $.

template<class Arg >
auto RFFGen::LinearAlgebra::trace ( const Arg &  arg)

Convenient generation of Trace<Matrix>.

Returns
Trace< std::decay_t<decltype(f.d0())> >(arg.d0())( arg ) if arg is a function, and else Trace<Arg>(arg)