Reference documentation for deal.II version GIT relicensing-860-g3e6195f9ee 2024-06-20 00:40:01+00:00
Searching...
No Matches
internal::SymmetricTensorImplementation Namespace Reference

## Classes

struct  Inverse

struct  Inverse< 4, 3, adouble >

struct  SortEigenValuesVectors

## Functions

template<int dim, typename Number >
void tridiagonalize (const ::SymmetricTensor< 2, dim, Number > &A, ::Tensor< 2, dim, Number > &Q, std::array< Number, dim > &d, std::array< Number, dim - 1 > &e)

template<int dim, typename Number >
std::array< std::pair< Number, Tensor< 1, dim, Number > >, dim > ql_implicit_shifts (const ::SymmetricTensor< 2, dim, Number > &A)

template<int dim, typename Number >
std::array< std::pair< Number, Tensor< 1, dim, Number > >, dim > jacobi (::SymmetricTensor< 2, dim, Number > A)

template<typename Number >
std::array< std::pair< Number, Tensor< 1, 2, Number > >, 2 > hybrid (const ::SymmetricTensor< 2, 2, Number > &A)

template<typename Number >
std::array< std::pair< Number, Tensor< 1, 3, Number > >, 3 > hybrid (const ::SymmetricTensor< 2, 3, Number > &A)

## Detailed Description

A namespace for functions and classes that are internal to how the SymmetricTensor class (and its associate functions) works.

## ◆ tridiagonalize()

template<int dim, typename Number >
 void internal::SymmetricTensorImplementation::tridiagonalize ( const ::SymmetricTensor< 2, dim, Number > & A, ::Tensor< 2, dim, Number > & Q, std::array< Number, dim > & d, std::array< Number, dim - 1 > & e )
private

Tridiagonalize a rank-2 symmetric tensor using the Householder method. The specialized algorithm implemented here is given in [130] and is based off of the generic algorithm presented in section 11.3.2 of [177].

Parameters
 [in] A This tensor to be tridiagonalized [out] Q The orthogonal matrix effecting the transformation [out] d The diagonal elements of the tridiagonal matrix [out] e The off-diagonal elements of the tridiagonal matrix

## ◆ ql_implicit_shifts()

template<int dim, typename Number >
 std::array< std::pair< Number, Tensor< 1, dim, Number > >, dim > internal::SymmetricTensorImplementation::ql_implicit_shifts ( const ::SymmetricTensor< 2, dim, Number > & A )
private

Compute the eigenvalues and eigenvectors of a real-valued rank-2 symmetric tensor using the QL algorithm with implicit shifts. The specialized algorithm implemented here is given in [130] and is based off of the generic algorithm presented in section 11.4.3 of [177].

Parameters
 [in] A The tensor of which the eigenvectors and eigenvalues are to be computed.
Returns
An array containing the eigenvectors and the associated eigenvalues. The array is not sorted in any particular order.

## ◆ jacobi()

template<int dim, typename Number >
 std::array< std::pair< Number, Tensor< 1, dim, Number > >, dim > internal::SymmetricTensorImplementation::jacobi ( ::SymmetricTensor< 2, dim, Number > A )
private

Compute the eigenvalues and eigenvectors of a real-valued rank-2 symmetric tensor using the Jacobi algorithm. The specialized algorithm implemented here is given in [130] and is based off of the generic algorithm presented in section 11.4.3 of [177].

Parameters
 [in] A The tensor of which the eigenvectors and eigenvalues are to be computed.
Returns
An array containing the eigenvectors and the associated eigenvalues. The array is not sorted in any particular order.

## ◆ hybrid() [1/2]

template<typename Number >
 std::array< std::pair< Number, Tensor< 1, 2, Number > >, 2 > internal::SymmetricTensorImplementation::hybrid ( const ::SymmetricTensor< 2, 2, Number > & A )
private

Compute the eigenvalues and eigenvectors of a real-valued rank-2 symmetric 2x2 tensor using the characteristic equation to compute eigenvalues and an analytical approach based on the cross-product for the eigenvectors. If the computations are deemed too inaccurate then the method falls back to ql_implicit_shifts.

Parameters
 [in] A The tensor of which the eigenvectors and eigenvalues are to be computed.
Returns
An array containing the eigenvectors and the associated eigenvalues. The array is not sorted in any particular order.

## ◆ hybrid() [2/2]

template<typename Number >
 std::array< std::pair< Number, Tensor< 1, 3, Number > >, 3 > internal::SymmetricTensorImplementation::hybrid ( const ::SymmetricTensor< 2, 3, Number > & A )
private

Compute the eigenvalues and eigenvectors of a real-valued rank-2 symmetric 3x3 tensor using the characteristic equation to compute eigenvalues and an analytical approach based on the cross-product for the eigenvectors. If the computations are deemed too inaccurate then the method falls back to ql_implicit_shifts. The specialized algorithm implemented here is given in [130].

Parameters
 [in] A The tensor of which the eigenvectors and eigenvalues are to be computed.
Returns
An array containing the eigenvectors and the associated eigenvalues. The array is not sorted in any particular order.