![]() |
deal.II version 9.7.1
|
#include <deal.II/base/config.h>#include <deal.II/base/exceptions.h>#include <deal.II/base/kokkos.h>#include <deal.II/base/numbers.h>#include <deal.II/base/table_indices.h>#include <deal.II/base/template_constraints.h>#include <deal.II/base/tensor_accessors.h>#include <Kokkos_Array.hpp>#include <adolc/adouble.h>#include <cmath>#include <complex>#include <ostream>#include <type_traits>Go to the source code of this file.
Classes | |
| class | Tensor< 0, dim, Number > |
| class | Tensor< rank_, dim, Number > |
|
|
|
|
|
|
|
|
Multiplication of a tensor of general rank with a scalar number from the right.
Only multiplication with a scalar number type (i.e., a floating point number, a complex floating point number, etc.) is allowed, see the documentation of EnableIfScalar for details.
|
Multiplication of a tensor of general rank with a scalar number from the left.
Only multiplication with a scalar number type (i.e., a floating point number, a complex floating point number, etc.) is allowed, see the documentation of EnableIfScalar for details.
|
Division of a tensor of general rank with a scalar number. See the discussion on operator*() above for more information about template arguments and the return type.
|
|
|
|
Entrywise multiplication of two tensor objects of general rank.
This multiplication is also called "Hadamard-product" (c.f. https://en.wikipedia.org/wiki/Hadamard_product_(matrices)), and generates a new tensor of size <rank, dim>:
![\[ \text{result}_{i, j}
= \text{left}_{i, j}\circ
\text{right}_{i, j}
\]](form_913.png)
| rank | The rank of both tensors. |
|
The dot product (single contraction) for tensors. This function return a tensor of rank 
src1 of rank rank_1 with the first index of a tensor src2 of rank rank_2:
![\[ \text{result}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
= \sum_{k}
\text{left}_{i_1,\ldots,i_{r1}, k}
\text{right}_{k, j_1,\ldots,j_{r2}}
\]](form_885.png)
|
Generic contraction of a pair of indices of two tensors of arbitrary rank: Return a tensor of rank 
index_1 of a tensor src1 of rank rank_1 with the index index_2 of a tensor src2 of rank rank_2:
![\[ \text{result}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
= \sum_{k}
\text{left}_{i_1,\ldots,k,\ldots,i_{r1}}
\text{right}_{j_1,\ldots,k,\ldots,j_{r2}}
\]](form_914.png)
If for example the first index (index_1==0) of a tensor t1 shall be contracted with the third index (index_2==2) of a tensor t2, this function should be invoked as

|
Generic contraction of two pairs of indices of two tensors of arbitrary rank: Return a tensor of rank 
index_1 with index index_2, and index index_3 with index index_4 of a tensor src1 of rank rank_1 and a tensor src2 of rank rank_2:
![\[ \text{result}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
= \sum_{k, l}
\text{left}_{i_1,\ldots,k,\ldots,l,\ldots,i_{r1}}
\text{right}_{j_1,\ldots,k,\ldots,l\ldots,j_{r2}}
\]](form_917.png)
If for example the first index (index_1==0) shall be contracted with the third index (index_2==2), and the second index (index_3==1) with the first index (index_4==0) of a tensor t2, this function should be invoked as

|
|
Full contraction of three tensors: Return a scalar number that is the result of a full contraction of a tensor left of rank rank_1, a tensor middle of rank 
right of rank rank_2:
![\[ \sum_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
\text{left}_{i_1,\ldots,i_{r1}}
\text{middle}_{i_1,\ldots,i_{r1},j_1,\ldots,j_{r2}}
\text{right}_{j_1,\ldots,j_{r2}}
\]](form_920.png)
|
|
Return the cross product in 2d. This is just a rotation by 90 degrees clockwise to compute the outer normal from a tangential vector. This function is defined for all space dimensions to allow for dimension independent programming (e.g. within switches over the space dimension), but may only be called if the actual dimension of the arguments is two (e.g. from the dim==2 case in the switch).
|
Return the cross product of 2 vectors in 3d. This function is defined for all space dimensions to allow for dimension independent programming (e.g. within switches over the space dimension), but may only be called if the actual dimension of the arguments is three (e.g. from the dim==3 case in the switch).
|
|
|
|
Return the nearest orthogonal matrix 



This is a (nonlinear) projection operation since when applied twice, we have 





due to the fact that the 

| A | The tensor for which to find the closest orthogonal tensor. |
| Number | The type used to store the entries of the tensor. Must be either float or double. |
A must not be singular. This is because, conceptually, the problem to be solved here is trying to find a matrix 










