 Reference documentation for deal.II version 9.2.0
derivative_form.h File Reference
#include <deal.II/base/config.h>
#include <deal.II/base/tensor.h>

Go to the source code of this file.

## Classes

class  DerivativeForm< order, dim, spacedim, Number >

## Functions

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

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

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)

## ◆ apply_transformation() [1/3]

template<int spacedim, int dim, typename Number >
 Tensor< 1, spacedim, Number > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number > & grad_F, const Tensor< 1, dim, Number > & d_x )
inline

One of the uses of DerivativeForm is to apply it as a linear transformation. This function returns $$\nabla \mathbf F(\mathbf x) \Delta \mathbf x$$, which approximates the change in $$\mathbf F(\mathbf x)$$ when $$\mathbf x$$ is changed by the amount $$\Delta \mathbf x$$

$\nabla \mathbf F(\mathbf x) \; \Delta \mathbf x \approx \mathbf F(\mathbf x + \Delta \mathbf x) - \mathbf F(\mathbf x).$

The transformation corresponds to

$[\text{result}]_{i_1,\dots,i_k} = i\sum_{j} \left[\nabla \mathbf F(\mathbf x)\right]_{i_1,\dots,i_k, j} \Delta x_j$

in index notation and corresponds to $$[\Delta \mathbf x] [\nabla \mathbf F(\mathbf x)]^T$$ in matrix notation.

Definition at line 399 of file derivative_form.h.

## ◆ apply_transformation() [2/3]

template<int spacedim, int dim, typename Number >
 DerivativeForm< 1, spacedim, dim, Number > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number > & grad_F, const Tensor< 2, dim, Number > & D_X )
inline

Similar to the previous apply_transformation(). Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to $$\text{D\_X} \, \text{grad\_F}^T$$ in matrix notation.

Definition at line 421 of file derivative_form.h.

## ◆ apply_transformation() [3/3]

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 )
inline

Similar to the previous apply_transformation(). In matrix notation, it computes $$DF2 \, DF1^{T}$$. Moreover, the result of this operation $$\mathbf A$$ can be interpreted as a metric tensor in $${\mathbb R}^\text{spacedim}$$ which corresponds to the Euclidean metric tensor in $${\mathbb R}^\text{dim}$$. For every pair of vectors $$\mathbf u, \mathbf v \in {\mathbb R}^\text{spacedim}$$, we have:

$\mathbf u \cdot \mathbf A \mathbf v = \text{DF2}^{-1}(\mathbf u) \cdot \text{DF1}^{-1}(\mathbf v)$

Definition at line 449 of file derivative_form.h.

## ◆ transpose()

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

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

Definition at line 470 of file derivative_form.h.