Reference documentation for deal.II version Git 2618e0f 2017-11-23 17:25:26 +0100
DerivativeForm< order, dim, spacedim, Number > Class Template Reference

#include <deal.II/base/derivative_form.h>

Inheritance diagram for DerivativeForm< order, dim, spacedim, Number >:
[legend]

## Public Member Functions

DerivativeForm ()

DerivativeForm (const Tensor< order+1, dim, Number > &)

Tensor< order, dim, Number > & operator[] (const unsigned int i)

const Tensor< order, dim, Number > & operator[] (const unsigned int i) const

DerivativeFormoperator= (const Tensor< order+1, dim, Number > &)

DerivativeFormoperator= (const Tensor< 1, dim, Number > &)

operator Tensor< order+1, dim, Number > () const

operator Tensor< 1, dim, Number > () const

DerivativeForm< 1, spacedim, dim, Number > transpose () const

numbers::NumberTraits< Number >::real_type norm () const

Number determinant () const

DerivativeForm< 1, dim, spacedim, Number > covariant_form () const

## Static Public Member Functions

static std::size_t memory_consumption ()

static::ExceptionBase & ExcInvalidTensorIndex (int arg1)

## Private Member Functions

DerivativeForm< 1, dim, spacedim, Number > times_T_t (const Tensor< 2, dim, Number > &T) const

## Private Attributes

Tensor< order, dim, Number > tensor [spacedim]

## Related Functions

(Note that these are not member functions.)

template<int spacedim, int dim, typename Number >
Tensor< 1, spacedim, Number > apply_transformation (const DerivativeForm< 1, dim, spacedim, Number > &DF, const Tensor< 1, dim, Number > &T)

template<int spacedim, int dim, typename Number >
DerivativeForm< 1, spacedim, dim > apply_transformation (const DerivativeForm< 1, dim, spacedim, Number > &DF, const Tensor< 2, dim, Number > &T)

template<int spacedim, int dim, typename Number >
Tensor< 2, spacedim, Number > apply_transformation (const DerivativeForm< 1, dim, spacedim, Number > &DF1, const DerivativeForm< 1, dim, spacedim, Number > &DF2)

template<int dim, int spacedim, typename Number >
DerivativeForm< 1, spacedim, dim, Number > transpose (const DerivativeForm< 1, dim, spacedim, Number > &DF)

## Detailed Description

### template<int order, int dim, int spacedim, typename Number = double> class DerivativeForm< order, dim, spacedim, Number >

This class represents the (tangential) derivatives of a function $$f: {\mathbb R}^{\text{dim}} \rightarrow {\mathbb R}^{\text{spacedim}}$$. Such functions are always used to map the reference dim-dimensional cell into spacedim-dimensional space. For such objects, the first derivative of the function is a linear map from $${\mathbb R}^{\text{dim}}$$ to $${\mathbb R}^{\text{spacedim}}$$, i.e., it can be represented as a matrix in $${\mathbb R}^{\text{spacedim}\times \text{dim}}$$. This makes sense since one would represent the first derivative, $$\nabla f(\mathbf x)$$ with $$\mathbf x\in {\mathbb R}^{\text{dim}}$$, in such a way that the directional derivative in direction $$\mathbf d\in {\mathbb R}^{\text{dim}}$$ so that

\begin{align*} \nabla f(\mathbf x) \mathbf d = \lim_{\varepsilon\rightarrow 0} \frac{f(\mathbf x + \varepsilon \mathbf d) - f(\mathbf x)}{\varepsilon}, \end{align*}

i.e., one needs to be able to multiply the matrix $$\nabla f(\mathbf x)$$ by a vector in $${\mathbb R}^{\text{dim}}$$, and the result is a difference of function values, which are in $${\mathbb R}^{\text{spacedim}}$$. Consequently, the matrix must be of size $$\text{spacedim}\times\text{dim}$$.

Similarly, the second derivative is a bilinear map from $${\mathbb R}^{\text{dim}} \times {\mathbb R}^{\text{dim}}$$ to $${\mathbb R}^{\text{spacedim}}$$, which one can think of a rank-3 object of size $$\text{spacedim}\times\text{dim}\times\text{dim}$$.

In deal.II we represent these derivatives using objects of type DerivativeForm<1,dim,spacedim,Number>, DerivativeForm<2,dim,spacedim,Number> and so on.

Definition at line 56 of file derivative_form.h.

## Constructor & Destructor Documentation

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm< order, dim, spacedim, Number >::DerivativeForm ( )

Constructor. Initialize all entries to zero.

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm< order, dim, spacedim, Number >::DerivativeForm ( const Tensor< order+1, dim, Number > & )

Constructor from a tensor.

## Member Function Documentation

template<int order, int dim, int spacedim, typename Number = double>
 Tensor& DerivativeForm< order, dim, spacedim, Number >::operator[] ( const unsigned int i )

template<int order, int dim, int spacedim, typename Number = double>
 const Tensor& DerivativeForm< order, dim, spacedim, Number >::operator[] ( const unsigned int i ) const

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm& DerivativeForm< order, dim, spacedim, Number >::operator= ( const Tensor< order+1, dim, Number > & )

Assignment operator.

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm& DerivativeForm< order, dim, spacedim, Number >::operator= ( const Tensor< 1, dim, Number > & )

Assignment operator.

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm< order, dim, spacedim, Number >::operator Tensor< order+1, dim, Number > ( ) const

Converts a DerivativeForm <order,dim,dim> to Tensor<order+1,dim,Number>. In particular, if order==1 and the derivative is the Jacobian of F, then Tensor[i] = grad(F^i).

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm< order, dim, spacedim, Number >::operator Tensor< 1, dim, Number > ( ) const

Converts a DerivativeForm <1, dim, 1> to Tensor<1,dim,Number>.

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm<1, spacedim, dim, Number> DerivativeForm< order, dim, spacedim, Number >::transpose ( ) const

Return the transpose of a rectangular DerivativeForm, that is to say viewed as a two dimensional matrix.

template<int order, int dim, int spacedim, typename Number = double>
 numbers::NumberTraits::real_type DerivativeForm< order, dim, spacedim, Number >::norm ( ) const

Compute the Frobenius norm of this form, i.e., the expression $$\sqrt{\sum_{ij} |DF_{ij}|^2}$$.

template<int order, int dim, int spacedim, typename Number = double>
 Number DerivativeForm< order, dim, spacedim, Number >::determinant ( ) const

Compute the volume element associated with the jacobian of the transformation F. That is to say if $$DF$$ is square, it computes $$\det(DF)$$, in case DF is not square returns $$\sqrt{\det(DF^T * DF)}$$.

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm<1, dim, spacedim, Number> DerivativeForm< order, dim, spacedim, Number >::covariant_form ( ) const

Assuming that the current object stores the Jacobian of a mapping $$F$$, then the current function computes the covariant form of the derivative, namely $$(\nabla F)G^{-1}$$, where $$G = (\nabla F)^{T}*(\nabla F)$$. If $$\nabla F$$ is a square matrix (i.e., $$F: {\mathbb R}^n \mapsto {\mathbb R}^n$$), then this function simplifies to computing $$\nabla F^{-T}$$.

template<int order, int dim, int spacedim, typename Number = double>
 static std::size_t DerivativeForm< order, dim, spacedim, Number >::memory_consumption ( )
static

Determine an estimate for the memory consumption (in bytes) of this object.

template<int order, int dim, int spacedim, typename Number = double>
 DerivativeForm<1, dim, spacedim, Number> DerivativeForm< order, dim, spacedim, Number >::times_T_t ( const Tensor< 2, dim, Number > & T ) const
private

Auxiliary function that computes (*this) * $$T^{T}$$

## Friends And Related Function Documentation

template<int spacedim, int dim, typename Number >
 Tensor< 1, spacedim, Number > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number > & DF, const Tensor< 1, dim, Number > & T )
related

One of the uses of DerivativeForm is to apply it as a transformation. This is what this function does. If T is DerivativeForm<1,dim,1> it computes $$DF * T$$, if T is DerivativeForm<1,dim,rank> it computes $$T*DF^{T}$$.

Definition at line 400 of file derivative_form.h.

template<int spacedim, int dim, typename Number >
 DerivativeForm< 1, spacedim, dim > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number > & DF, const Tensor< 2, dim, Number > & T )
related

Similar to previous apply_transformation. It computes $$T*DF^{T}$$.

Definition at line 421 of file derivative_form.h.

template<int spacedim, int dim, typename Number >
 Tensor< 2, spacedim, Number > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number > & DF1, const DerivativeForm< 1, dim, spacedim, Number > & DF2 )
related

Similar to previous apply_transformation. It computes $$DF2*DF1^{T}$$

Definition at line 441 of file derivative_form.h.

template<int dim, int spacedim, typename Number >
 DerivativeForm< 1, spacedim, dim, Number > transpose ( const DerivativeForm< 1, dim, spacedim, Number > & DF )
related

Transpose of a rectangular DerivativeForm DF, mostly for compatibility reasons.

Definition at line 463 of file derivative_form.h.

## Member Data Documentation

template<int order, int dim, int spacedim, typename Number = double>
 Tensor DerivativeForm< order, dim, spacedim, Number >::tensor[spacedim]
private

Array of tensors holding the subelements.

Definition at line 154 of file derivative_form.h.

The documentation for this class was generated from the following file: