Reference documentation for deal.II version 9.6.1
 
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
derivative_form.h File Reference

Go to the source code of this file.

Classes

class  DerivativeForm< order, dim, spacedim, Number >
 

Function Documentation

◆ operator<<()

template<int order, int dim, int spacedim, typename Number>
std::ostream & operator<< ( std::ostream & out,
const DerivativeForm< order, dim, spacedim, Number > & df )
related

Output operator for DerivativeForm. Print the elements consecutively, with a space in between, two spaces between rank 1 subtensors, three between rank 2 and so on.

Definition at line 438 of file derivative_form.h.

◆ apply_transformation() [1/5]

template<int spacedim, int dim, typename Number1, typename Number2>
Tensor< 1, spacedim, typename ProductType< Number1, Number2 >::type > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number1 > & grad_F,
const Tensor< 1, dim, Number2 > & d_x )
related

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 478 of file derivative_form.h.

◆ apply_transformation() [2/5]

template<int spacedim, int dim, typename Number1, typename Number2>
DerivativeForm< 1, spacedim, dim, typename ProductType< Number1, Number2 >::type > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number1 > & grad_F,
const Tensor< 2, dim, Number2 > & D_X )
related

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 $\mathrm{D\_X} \, \mathrm{grad\_F}^T$ in matrix notation.

Definition at line 503 of file derivative_form.h.

◆ apply_transformation() [3/5]

template<int dim, typename Number1, typename Number2>
Tensor< 2, dim, typename ProductType< Number1, Number2 >::type > apply_transformation ( const DerivativeForm< 1, dim, dim, Number1 > & grad_F,
const Tensor< 2, dim, Number2 > & D_X )
related

Similar to the previous apply_transformation(), specialized for the case dim == spacedim where we can return a rank-2 tensor instead of the more general DerivativeForm. Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to $\mathrm{D\_X} \, \mathrm{grad\_F}^T$ in matrix notation.

Definition at line 529 of file derivative_form.h.

◆ apply_transformation() [4/5]

template<int spacedim, int dim, int n_components, typename Number1, typename Number2>
Tensor< 1, n_components, Tensor< 1, spacedim, typename ProductType< Number1, Number2 >::type > > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number1 > & grad_F,
const Tensor< 1, n_components, Tensor< 1, dim, Number2 > > & D_X )
related

Similar to the previous apply_transformation(). Each row of the result corresponds to one of the rows of D_X transformed by grad_F.

Definition at line 556 of file derivative_form.h.

◆ apply_transformation() [5/5]

template<int spacedim, int dim, typename Number1, typename Number2>
Tensor< 2, spacedim, typename ProductType< Number1, Number2 >::type > apply_transformation ( const DerivativeForm< 1, dim, spacedim, Number1 > & DF1,
const DerivativeForm< 1, dim, spacedim, Number2 > & DF2 )
related

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 589 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)
related

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

Definition at line 610 of file derivative_form.h.

◆ apply_diagonal_transformation() [1/4]

template<int spacedim, int dim, typename Number1, typename Number2>
Tensor< 1, spacedim, typename ProductType< Number1, Number2 >::type > apply_diagonal_transformation ( const DerivativeForm< 1, dim, spacedim, Number1 > & grad_F,
const Tensor< 1, dim, Number2 > & d_x )
related

Specialization of apply_transformation() for a diagonal DerivativeForm.

Definition at line 624 of file derivative_form.h.

◆ apply_diagonal_transformation() [2/4]

template<int dim, typename Number1, typename Number2>
Tensor< 2, dim, typename ProductType< Number1, Number2 >::type > apply_diagonal_transformation ( const DerivativeForm< 1, dim, dim, Number1 > & grad_F,
const Tensor< 2, dim, Number2 > & D_X )
related

Similar to the previous apply_diagonal_transformation(), specialized for the case dim == spacedim where we can return a rank-2 tensor instead of the more general DerivativeForm. Each row of the result corresponds to one of the rows of D_X transformed by grad_F, equivalent to $\mathrm{D\_X} \, \mathrm{grad\_F}^T$ in matrix notation.

Definition at line 649 of file derivative_form.h.

◆ apply_diagonal_transformation() [3/4]

template<int spacedim, int dim, int n_components, typename Number1, typename Number2>
Tensor< 1, n_components, Tensor< 1, spacedim, typename ProductType< Number1, Number2 >::type > > apply_diagonal_transformation ( const DerivativeForm< 1, dim, spacedim, Number1 > & grad_F,
const Tensor< 1, n_components, Tensor< 1, dim, Number2 > > & D_X )
related

Similar to the previous apply_diagonal_transformation(). Each row of the result corresponds to one of the rows of D_X transformed by grad_F.

Definition at line 677 of file derivative_form.h.

◆ apply_diagonal_transformation() [4/4]

template<int spacedim, int dim, typename Number1, typename Number2>
DerivativeForm< 1, spacedim, dim, typename ProductType< Number1, Number2 >::type > apply_diagonal_transformation ( const DerivativeForm< 1, dim, spacedim, Number1 > & grad_F,
const Tensor< 2, dim, Number2 > & D_X )
related

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 $\mathrm{D\_X} \, \mathrm{grad\_F}^T$ in matrix notation.

Definition at line 707 of file derivative_form.h.