GEOSX
Namespaces
fixedSizeSquareMatrixOps.hpp File Reference

Contains tensorOps functions for operating on 2x2 and 3x3 matrices. More...

#include "genericTensorOps.hpp"
#include "fixedSizeSquareMatrixOpsImpl.hpp"

Go to the source code of this file.

Namespaces

 LvArray
 The top level namespace.
 
 LvArray::tensorOps
 Contains operations for operating on compile time sized vectors and matrices.
 

Functions

Fixed size square matrix operations

Functions that are overloaded to operate square matrices of a fixed size.

Note
Currently all functions only support matrices of sizes 2x2 and 3x3.
template<std::ptrdiff_t M, typename MATRIX >
constexpr auto LvArray::tensorOps::determinant (MATRIX const &matrix)
 
template<std::ptrdiff_t M, typename DST_MATRIX , typename SRC_MATRIX >
constexpr auto LvArray::tensorOps::invert (DST_MATRIX &&LVARRAY_RESTRICT_REF dstMatrix, SRC_MATRIX const &LVARRAY_RESTRICT_REF srcMatrix)
 Invert the source matrix srcMatrix and store the result in dstMatrix. More...
 
template<std::ptrdiff_t M, typename MATRIX >
constexpr auto LvArray::tensorOps::invert (MATRIX &&matrix)
 Invert the matrix matrix overwritting it. More...
 
Fixed size symmetric matrix operations

Functions that are overloaded to operate symmetric matrices of a fixed size.

Note
Currently all functions only support matrices of sizes 2x2 and 3x3.
template<std::ptrdiff_t M, typename DST_VECTOR , typename SYM_MATRIX_A , typename VECTOR_B >
constexpr void LvArray::tensorOps::Ri_eq_symAijBj (DST_VECTOR &&LVARRAY_RESTRICT_REF dstVector, SYM_MATRIX_A const &LVARRAY_RESTRICT_REF symMatrixA, VECTOR_B const &LVARRAY_RESTRICT_REF vectorB)
 Multiply the vector vectorB by the symmetric matrix symMatrixA and store the result in dstVector. More...
 
template<std::ptrdiff_t M, typename DST_VECTOR , typename SYM_MATRIX_A , typename VECTOR_B >
constexpr void LvArray::tensorOps::Ri_add_symAijBj (DST_VECTOR &&LVARRAY_RESTRICT_REF dstVector, SYM_MATRIX_A const &LVARRAY_RESTRICT_REF symMatrixA, VECTOR_B const &LVARRAY_RESTRICT_REF vectorB)
 Multiply the vector vectorB by the symmetric matrix symMatrixA and add the result to dstVector. More...
 
template<std::ptrdiff_t M, typename DST_MATRIX , typename SYM_MATRIX_A , typename MATRIX_B >
constexpr void LvArray::tensorOps::Rij_eq_symAikBjk (DST_MATRIX &&LVARRAY_RESTRICT_REF dstMatrix, SYM_MATRIX_A const &LVARRAY_RESTRICT_REF symMatrixA, MATRIX_B const &LVARRAY_RESTRICT_REF matrixB)
 Multiply the transpose of matrix matrixB by the symmetric matrix symMatrixA and store the result in dstMatrix. More...
 
template<std::ptrdiff_t M, typename DST_SYM_MATRIX , typename MATRIX_A , typename SYM_MATRIX_B >
constexpr void LvArray::tensorOps::Rij_eq_AikSymBklAjl (DST_SYM_MATRIX &&LVARRAY_RESTRICT_REF dstSymMatrix, MATRIX_A const &LVARRAY_RESTRICT_REF matrixA, SYM_MATRIX_B const &LVARRAY_RESTRICT_REF symMatrixB)
 Multiply the transpose of matrix matrixA by the symmetric matrix symMatrixB then by matrixA and store the result in dstSymMatrix. More...
 
template<std::ptrdiff_t M, typename SYM_MATRIX >
constexpr auto LvArray::tensorOps::symDeterminant (SYM_MATRIX const &symMatrix)
 
template<std::ptrdiff_t M, typename DST_SYM_MATRIX , typename SRC_SYM_MATRIX >
constexpr auto LvArray::tensorOps::symInvert (DST_SYM_MATRIX &&LVARRAY_RESTRICT_REF dstSymMatrix, SRC_SYM_MATRIX const &LVARRAY_RESTRICT_REF srcSymMatrix)
 Invert the symmetric matrix srcSymMatrix and store the result in dstSymMatrix. More...
 
template<std::ptrdiff_t M, typename SYM_MATRIX >
constexpr auto LvArray::tensorOps::symInvert (SYM_MATRIX &&symMatrix)
 Invert the symmetric matrix symMatrix overwritting it. More...
 
template<std::ptrdiff_t M, typename DST_VECTOR , typename SYM_MATRIX >
constexpr void LvArray::tensorOps::symEigenvalues (DST_VECTOR &&LVARRAY_RESTRICT_REF eigenvalues, SYM_MATRIX const &LVARRAY_RESTRICT_REF symMatrix)
 Compute the eigenvalues of the symmetric matrix symMatrix. More...
 
template<std::ptrdiff_t M, typename DST_VECTOR , typename DST_MATRIX , typename SYM_MATRIX >
constexpr void LvArray::tensorOps::symEigenvectors (DST_VECTOR &&LVARRAY_RESTRICT_REF eigenvalues, DST_MATRIX &&LVARRAY_RESTRICT_REF eigenvectors, SYM_MATRIX const &LVARRAY_RESTRICT_REF symMatrix)
 Compute the eigenvalues and eigenvectors of the symmetric matrix symMatrix. More...
 
template<std::ptrdiff_t M, typename DST_SYM_MATRIX , typename SRC_MATRIX >
constexpr void LvArray::tensorOps::denseToSymmetric (DST_SYM_MATRIX &&dstSymMatrix, SRC_MATRIX const &srcMatrix)
 Convert the upper triangular part of srcMatrix to a symmetric matrix. More...
 
template<std::ptrdiff_t M, typename DST_MATRIX , typename SRC_SYM_MATRIX >
constexpr void LvArray::tensorOps::symmetricToDense (DST_MATRIX &&dstMatrix, SRC_SYM_MATRIX const &srcSymMatrix)
 Convert the srcSymMatrix into a dense matrix. More...
 

Detailed Description

Contains tensorOps functions for operating on 2x2 and 3x3 matrices.

Definition in file fixedSizeSquareMatrixOps.hpp.