Reference documentation for deal.II version Git d745029578 2021-12-01 09:26:47 +0100
\(\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\}}\)
Namespaces
Physics::Transformations Namespace Reference

Namespaces

 Contravariant
 
 Covariant
 
 Piola
 
 Rotations
 

Functions

Special operations
template<int dim, typename Number >
Tensor< 1, dim, Number > nansons_formula (const Tensor< 1, dim, Number > &N, const Tensor< 2, dim, Number > &F)
 
Basis transformations
template<int dim, typename Number >
Tensor< 1, dim, Number > basis_transformation (const Tensor< 1, dim, Number > &V, const Tensor< 2, dim, Number > &B)
 
template<int dim, typename Number >
Tensor< 2, dim, Number > basis_transformation (const Tensor< 2, dim, Number > &T, const Tensor< 2, dim, Number > &B)
 
template<int dim, typename Number >
SymmetricTensor< 2, dim, Number > basis_transformation (const SymmetricTensor< 2, dim, Number > &T, const Tensor< 2, dim, Number > &B)
 
template<int dim, typename Number >
Tensor< 4, dim, Number > basis_transformation (const Tensor< 4, dim, Number > &H, const Tensor< 2, dim, Number > &B)
 
template<int dim, typename Number >
SymmetricTensor< 4, dim, Number > basis_transformation (const SymmetricTensor< 4, dim, Number > &H, const Tensor< 2, dim, Number > &B)
 

Detailed Description

A collection of operations to assist in the transformation of tensor quantities from the reference to spatial configuration, and vice versa. These types of transformation are typically used to re-express quantities measured or computed in one configuration in terms of a second configuration.

Notation

We will use the same notation for the coordinates \(\mathbf{X}, \mathbf{x}\), transformations \(\varphi\), differential operator \(\nabla_{0}\) and deformation gradient \(\mathbf{F}\) as discussed for namespace Physics::Elasticity.

As a further point on notation, we will follow Holzapfel (2007) and denote the push forward transformation as \(\chi\left(\bullet\right)\) and the pull back transformation as \(\chi^{-1}\left(\bullet\right)\). We will also use the annotation \(\left(\bullet\right)^{\sharp}\) to indicate that a tensor \(\left(\bullet\right)\) is a contravariant tensor, and \(\left(\bullet\right)^{\flat}\) that it is covariant. In other words, these indices do not actually change the tensor, they just indicate the kind of object a particular tensor is.

Note
For these transformations, unless otherwise stated, we will strictly assume that all indices of the transformed tensors derive from one coordinate system; that is to say that they are not multi-point tensors (such as the Piola stress in elasticity).
Author
Jean-Paul Pelteret, Andrew McBride, 2016

Function Documentation

◆ nansons_formula()

template<int dim, typename Number >
Tensor<1, dim, Number> Physics::Transformations::nansons_formula ( const Tensor< 1, dim, Number > &  N,
const Tensor< 2, dim, Number > &  F 
)

Return the result of applying Nanson's formula for the transformation of the material surface area element \(d\mathbf{A}\) to the current surfaces area element \(d\mathbf{a}\) under the nonlinear transformation map \(\mathbf{x} = \boldsymbol{\varphi} \left( \mathbf{X} \right)\).

The returned result is the spatial normal scaled by the ratio of areas between the reference and spatial surface elements, i.e.

\[ \mathbf{n} \frac{da}{dA} \dealcoloneq \textrm{det} \mathbf{F} \, \mathbf{F}^{-T} \cdot \mathbf{N} = \textrm{cof} \mathbf{F} \cdot \mathbf{N} \, . \]

Parameters
[in]NThe referential normal unit vector \(\mathbf{N}\)
[in]FThe deformation gradient tensor \(\mathbf{F} \left( \mathbf{X} \right)\)
Returns
The scaled spatial normal vector \(\mathbf{n} \frac{da}{dA}\)
Note
For a discussion of the background of this function, see G. A. Holzapfel: "Nonlinear solid mechanics. A Continuum Approach for Engineering" (2007), and in particular formula (2.55) on p. 75 (or thereabouts).
For a discussion of the background of this function, see P. Wriggers: "Nonlinear finite element methods" (2008), and in particular formula (3.11) on p. 23 (or thereabouts).

◆ basis_transformation() [1/5]

template<int dim, typename Number >
Tensor<1, dim, Number> Physics::Transformations::basis_transformation ( const Tensor< 1, dim, Number > &  V,
const Tensor< 2, dim, Number > &  B 
)

Return a vector with a changed basis, i.e.

\[ \mathbf{V}^{\prime} \dealcoloneq \mathbf{B} \cdot \mathbf{V} \]

Parameters
[in]VThe vector to be transformed \(\mathbf{V}\)
[in]BThe transformation matrix \(\mathbf{B}\)
Returns
\(\mathbf{V}^{\prime}\)

◆ basis_transformation() [2/5]

template<int dim, typename Number >
Tensor<2, dim, Number> Physics::Transformations::basis_transformation ( const Tensor< 2, dim, Number > &  T,
const Tensor< 2, dim, Number > &  B 
)

Return a rank-2 tensor with a changed basis, i.e.

\[ \mathbf{T}^{\prime} \dealcoloneq \mathbf{B} \cdot \mathbf{T} \cdot \mathbf{B}^{T} \]

Parameters
[in]TThe tensor to be transformed \(\mathbf{T}\)
[in]BThe transformation matrix \(\mathbf{B}\)
Returns
\(\mathbf{T}^{\prime}\)

◆ basis_transformation() [3/5]

template<int dim, typename Number >
SymmetricTensor<2, dim, Number> Physics::Transformations::basis_transformation ( const SymmetricTensor< 2, dim, Number > &  T,
const Tensor< 2, dim, Number > &  B 
)

Return a symmetric rank-2 tensor with a changed basis, i.e.

\[ \mathbf{T}^{\prime} \dealcoloneq \mathbf{B} \cdot \mathbf{T} \cdot \mathbf{B}^{T} \]

Parameters
[in]TThe tensor to be transformed \(\mathbf{T}\)
[in]BThe transformation matrix \(\mathbf{B}\)
Returns
\(\mathbf{T}^{\prime}\)

◆ basis_transformation() [4/5]

template<int dim, typename Number >
Tensor<4, dim, Number> Physics::Transformations::basis_transformation ( const Tensor< 4, dim, Number > &  H,
const Tensor< 2, dim, Number > &  B 
)

Return a rank-4 tensor with a changed basis, i.e. (in index notation):

\[ H_{ijkl}^{\prime} \dealcoloneq B_{iI} B_{jJ} H_{IJKL} B_{kK} B_{lL} \]

Parameters
[in]HThe tensor to be transformed \(\mathbf{T}\)
[in]BThe transformation matrix \(\mathbf{B}\)
Returns
\(\mathbf{H}^{\prime}\)

◆ basis_transformation() [5/5]

template<int dim, typename Number >
SymmetricTensor<4, dim, Number> Physics::Transformations::basis_transformation ( const SymmetricTensor< 4, dim, Number > &  H,
const Tensor< 2, dim, Number > &  B 
)

Return a symmetric rank-4 tensor with a changed basis, i.e. (in index notation):

\[ H_{ijkl}^{\prime} \dealcoloneq B_{iI} B_{jJ} H_{IJKL} B_{kK} B_{lL} \]

Parameters
[in]HThe tensor to be transformed \(\mathbf{T}\)
[in]BThe transformation matrix \(\mathbf{B}\)
Returns
\(\mathbf{H}^{\prime}\)