![]() |
Reference documentation for deal.II version 9.2.0
|
#include <deal.II/base/tensor.h>
Public Types | |
| using | real_type = typename numbers::NumberTraits< Number >::real_type |
| using | value_type = Number |
| using | array_type = Number |
| using | tensor_type = Number |
Public Member Functions | |
| constexpr | Tensor () |
| template<typename OtherNumber > | |
| constexpr | Tensor (const Tensor< 0, dim, OtherNumber > &initializer) |
| template<typename OtherNumber > | |
| constexpr | Tensor (const OtherNumber &initializer) |
| Number * | begin_raw () |
| const Number * | begin_raw () const |
| Number * | end_raw () |
| const Number * | end_raw () const |
| constexpr | operator Number & () |
| constexpr | operator const Number & () const |
| template<typename OtherNumber > | |
| constexpr Tensor & | operator= (const Tensor< 0, dim, OtherNumber > &rhs) |
| template<typename OtherNumber > | |
| constexpr Tensor & | operator= (const OtherNumber &d) |
| template<typename OtherNumber > | |
| constexpr bool | operator== (const Tensor< 0, dim, OtherNumber > &rhs) const |
| template<typename OtherNumber > | |
| constexpr bool | operator!= (const Tensor< 0, dim, OtherNumber > &rhs) const |
| template<typename OtherNumber > | |
| constexpr Tensor & | operator+= (const Tensor< 0, dim, OtherNumber > &rhs) |
| template<typename OtherNumber > | |
| constexpr Tensor & | operator-= (const Tensor< 0, dim, OtherNumber > &rhs) |
| template<typename OtherNumber > | |
| constexpr Tensor & | operator*= (const OtherNumber &factor) |
| template<typename OtherNumber > | |
| constexpr Tensor & | operator/= (const OtherNumber &factor) |
| constexpr Tensor | operator- () const |
| constexpr void | clear () |
| real_type | norm () const |
| constexpr real_type | norm_square () const |
| template<class Archive > | |
| void | serialize (Archive &ar, const unsigned int version) |
Static Public Attributes | |
| static constexpr unsigned int | dimension = dim |
| static constexpr unsigned int | rank = 0 |
| static constexpr unsigned int | n_independent_components = 1 |
Private Member Functions | |
| template<typename OtherNumber > | |
| void | unroll_recursion (Vector< OtherNumber > &result, unsigned int &start_index) const |
Private Attributes | |
| Number | value |
Friends | |
| template<int , int , typename > | |
| class | Tensor |
This class is a specialized version of the Tensor<rank,dim,Number> class. It handles tensors of rank zero, i.e. scalars. The second template argument dim is ignored.
This class exists because in some cases we want to construct objects of type Tensor<spacedim-dim,dim,Number>, which should expand to scalars, vectors, matrices, etc, depending on the values of the template arguments dim and spacedim. We therefore need a class that acts as a scalar (i.e. Number) for all purposes but is part of the Tensor template family.
| dim | An integer that denotes the dimension of the space in which this tensor operates. This of course equals the number of coordinates that identify a point and rank-1 tensor. Since the current object is a rank-0 tensor (a scalar), this template argument has no meaning for this class. |
| Number | The data type in which the tensor elements are to be stored. This will, in almost all cases, simply be the default double, but there are cases where one may want to store elements in a different (and always scalar) type. It can be used to base tensors on float or complex numbers or any other data type that implements basic arithmetic operations. Another example would be a type that allows for Automatic Differentiation (see, for example, the Sacado type used in step-33) and thereby can generate analytic (spatial) derivatives of a function that takes a tensor as argument. |
| using Tensor< 0, dim, Number >::real_type = typename numbers::NumberTraits<Number>::real_type |
Declare a type that has holds real-valued numbers with the same precision as the template argument to this class. For std::complex<number>, this corresponds to type number, and it is equal to Number for all other cases. See also the respective field in Vector<Number>.
This alias is used to represent the return type of norms.
| using Tensor< 0, dim, Number >::value_type = Number |
| using Tensor< 0, dim, Number >::array_type = Number |
| using Tensor< 0, dim, Number >::tensor_type = Number |
Internal type declaration that is used to specialize the return type of operator[]() for Tensor<1,dim,Number>
Constructor. Set to zero.
| constexpr Tensor< 0, dim, Number >::Tensor | ( | const Tensor< 0, dim, OtherNumber > & | initializer | ) |
Constructor from tensors with different underlying scalar type. This obviously requires that the OtherNumber type is convertible to Number.
| constexpr Tensor< 0, dim, Number >::Tensor | ( | const OtherNumber & | initializer | ) |
Constructor, where the data is copied from a C-style array.
| Number* Tensor< 0, dim, Number >::begin_raw | ( | ) |
Return a pointer to the first element of the underlying storage.
| const Number* Tensor< 0, dim, Number >::begin_raw | ( | ) | const |
Return a const pointer to the first element of the underlying storage.
| Number* Tensor< 0, dim, Number >::end_raw | ( | ) |
Return a pointer to the element past the end of the underlying storage.
| const Number* Tensor< 0, dim, Number >::end_raw | ( | ) | const |
Return a const pointer to the element past the end of the underlying storage.
| constexpr Tensor< 0, dim, Number >::operator Number & | ( | ) |
Return a reference to the encapsulated Number object. Since rank-0 tensors are scalars, this is a natural operation.
This is the non-const conversion operator that returns a writable reference.
| constexpr Tensor< 0, dim, Number >::operator const Number & | ( | ) | const |
Return a reference to the encapsulated Number object. Since rank-0 tensors are scalars, this is a natural operation.
This is the const conversion operator that returns a read-only reference.
| constexpr Tensor& Tensor< 0, dim, Number >::operator= | ( | const Tensor< 0, dim, OtherNumber > & | rhs | ) |
Assignment from tensors with different underlying scalar type. This obviously requires that the OtherNumber type is convertible to Number.
| constexpr Tensor& Tensor< 0, dim, Number >::operator= | ( | const OtherNumber & | d | ) |
This operator assigns a scalar to a tensor. This obviously requires that the OtherNumber type is convertible to Number.
| constexpr bool Tensor< 0, dim, Number >::operator== | ( | const Tensor< 0, dim, OtherNumber > & | rhs | ) | const |
Test for equality of two tensors.
| constexpr bool Tensor< 0, dim, Number >::operator!= | ( | const Tensor< 0, dim, OtherNumber > & | rhs | ) | const |
Test for inequality of two tensors.
| constexpr Tensor& Tensor< 0, dim, Number >::operator+= | ( | const Tensor< 0, dim, OtherNumber > & | rhs | ) |
Add another scalar.
| constexpr Tensor& Tensor< 0, dim, Number >::operator-= | ( | const Tensor< 0, dim, OtherNumber > & | rhs | ) |
Subtract another scalar.
| constexpr Tensor& Tensor< 0, dim, Number >::operator*= | ( | const OtherNumber & | factor | ) |
Multiply the scalar with a factor.
| constexpr Tensor& Tensor< 0, dim, Number >::operator/= | ( | const OtherNumber & | factor | ) |
Divide the scalar by factor.
Tensor with inverted entries.
| constexpr void Tensor< 0, dim, Number >::clear | ( | ) |
Reset all values to zero.
Note that this is partly inconsistent with the semantics of the clear() member functions of the standard library containers and of several other classes within deal.II, which not only reset the values of stored elements to zero, but release all memory and return the object into a virginial state. However, since the size of objects of the present type is determined by its template parameters, resizing is not an option, and indeed the state where all elements have a zero value is the state right after construction of such an object.
Return the Frobenius-norm of a tensor, i.e. the square root of the sum of the absolute squares of all entries. For the present case of rank-1 tensors, this equals the usual l2 norm of the vector.
| constexpr real_type Tensor< 0, dim, Number >::norm_square | ( | ) | const |
Return the square of the Frobenius-norm of a tensor, i.e. the sum of the absolute squares of all entries.
| void Tensor< 0, dim, Number >::serialize | ( | Archive & | ar, |
| const unsigned int | version | ||
| ) |
Read or write the data of this object to or from a stream for the purpose of serialization
|
private |
Internal helper function for unroll.
|
static |
Provide a way to get the dimension of an object without explicit knowledge of it's data type. Implementation is this way instead of providing a function dimension() because now it is possible to get the dimension at compile time without the expansion and preevaluation of an inlined function; the compiler may therefore produce more efficient code and you may use this value to declare other data types.
|
private |
1.8.13