Voigt representation

A common way to write out the components of higher order tensors is the Voigt notation. For unsymmetric tensors this is rather straight forward, however, the reduction to fewer elements for symmetric tensors are a frequent cause of confusion and bugs in computer programs. However, let's start with the general case of unsymmetric tensors.

Unsymmetric tensors

Here, we represent a 2nd order tensor, a\boldsymbol{ a}, as a 9-component vector, a\underline{ a}, and a 4th order tensor, A\textbf{\textsf{ A}}, as a 9-by-9 matrix, A\underline{\underline{\mathsf{ A}}}. It is also commonly used in computer implementations, mostly because linear algebra libraries are not written to deal with arrays of more than 2 dimensions.

The order of the off-diagonal components varies between different softwares, but can for example be such that

b=[b11,b22,b12,b21](2d)a=[a11,a22,a33,a12,a13,a23,a21,a31,a32](3d)\begin{aligned} \underline{ b} &= [b_{11}, b_{22}, b_{12}, b_{21}]\quad \text{(2d)}\\ \underline{ a} &= [a_{11}, a_{22}, a_{33}, a_{12}, a_{13}, a_{23}, a_{21}, a_{31}, a_{32}]\quad \text{(3d)} \end{aligned}

With this chosen, a 4th order tensor B\textbf{\textsf{ B}} in 2d can be described as

B=[ B1111 B1122 B1112 B1121 B2211 B2222 B2212 B2221 B1211 B1222 B1212 B1221 B2111 B2122 B2112 B2121]\begin{aligned} \underline{\underline{\mathsf{ B}}} = \begin{bmatrix} \textsf{ B}_{ 1111} & \textsf{ B}_{ 1122} & \textsf{ B}_{ 1112} & \textsf{ B}_{ 1121} \\ \textsf{ B}_{ 2211} & \textsf{ B}_{ 2222} & \textsf{ B}_{ 2212} & \textsf{ B}_{ 2221} \\ \textsf{ B}_{ 1211} & \textsf{ B}_{ 1222} & \textsf{ B}_{ 1212} & \textsf{ B}_{ 1221} \\ \textsf{ B}_{ 2111} & \textsf{ B}_{ 2122} & \textsf{ B}_{ 2112} & \textsf{ B}_{ 2121} \end{bmatrix} \end{aligned}

We can then see that the matrix multiplication B b\underline{\underline{\mathsf{ B}}}\,\underline{ b} is equivalent to the double contraction B:b\textbf{\textsf{ B}}:\boldsymbol{ b}. This property is a reason why the Voigt representation is often used in computer implementations.

Symmetric tensors

Even if we have a symmetric tensor, we can still represent it using the 9-component representation discussed above. However, in many applications symmetric tensors arise, and then a 6-component representation is used for convenience. But if we use a 6-component representation, a key feature of the Voigt-representation is lost: The double contraction is not equivalent to the matrix/vector dot product. We need to compensate for this somehow, and 3 possibilities are discussed below.

Modify the double contraction operation

The first option require that we take the off-diagonal entries twice when doing the double contraction. This implies that we cannot use the standard linear algebra libraries, and is therefore not so convenient for computer implementations.

Engineering strain

To use engineering strans, where the shear components are doubled, is very common in continuum mechanics. Often, this way is implicitly assumed when discussing the Voigt representation for symmetric tensors in continuum mechanics. It works well when considering the stress-strain relationship, and also for calculating the power σ:ϵ˙\boldsymbol{ \sigma}:\dot{\boldsymbol{ \epsilon}}. However, for example the norm of the stress, σ:σ\boldsymbol{ \sigma}:\boldsymbol{ \sigma} does not work automatically. Even if this representations have its drawbacks, it is commonly used and it is important to be aware of it.

Mandel notation

A final solution is to use the so-called Mandel representation. It is not so commonly used in older codes, but it offers the huge advantage that all the contractions give the correct result. Also, we treat all tensors equally, and do not differentiate wether a tensor represents e.g. stresses or strains. If we assume that the above tensors b\boldsymbol{ b} and B\textbf{\textsf{ B}} are symmetric, we can write their Mandel representation as

b=[b11,b22,2b12]B=[ B1111 B11222 B1112 B2211 B22222 B22122 B12112 B12222 B1212]\begin{aligned} \underline{ b} &= [b_{11}, b_{22}, \sqrt{2}b_{12}] \\ \underline{\underline{\mathsf{ B}}} &= \begin{bmatrix} \textsf{ B}_{ 1111} & \textsf{ B}_{ 1122} & \sqrt{2}\textsf{ B}_{ 1112} \\ \textsf{ B}_{ 2211} & \textsf{ B}_{ 2222} & \sqrt{2}\textsf{ B}_{ 2212} \\ \sqrt{2}\textsf{ B}_{ 1211} & \sqrt{2}\textsf{ B}_{ 1222} & 2\textsf{ B}_{ 1212} \end{bmatrix} \end{aligned}
Starting with b:b\boldsymbol{ b}:\boldsymbol{ b}, we have
b:b=bijbij=b112+b222+2b122bb=b112+b222+2b122\begin{aligned} \boldsymbol{ b}:\boldsymbol{ b} = b_{ij}b_{ij} &= b_{11}^2 + b_{22}^2 + 2 b_{12}^2\\ \underline{ b}\cdot\underline{ b} &= b_{11}^2 + b_{22}^2 + 2 b_{12}^2 \end{aligned}

Similarly,

B:b= Bijklbkl=[ B1111b11+ B1122b22+2 B1112b12 B1211b11+ B1222b22+2 B1212b12 B1211b11+ B1222b22+2 B1212b12 B2211b11+ B2222b11+2 B2212b12]Bb=[ B1111b11+ B1122b22+2 B1112b12 B2211b11+ B2222b11+2 B2212b122( B1211b11+ B1222b22+2 B1212b12)]\begin{aligned} \textbf{\textsf{ B}}:\boldsymbol{ b} &= \textsf{ B}_{ ijkl}b_{kl} \\&= \begin{bmatrix} \textsf{ B}_{ 1111}b_{11} + \textsf{ B}_{ 1122}b_{22} + 2\textsf{ B}_{ 1112}b_{12} & \textsf{ B}_{ 1211}b_{11} + \textsf{ B}_{ 1222}b_{22} + 2\textsf{ B}_{ 1212}b_{12} \\ \textsf{ B}_{ 1211}b_{11} + \textsf{ B}_{ 1222}b_{22} + 2\textsf{ B}_{ 1212}b_{12} & \textsf{ B}_{ 2211}b_{11} + \textsf{ B}_{ 2222}b_{11} + 2\textsf{ B}_{ 2212}b_{12} \end{bmatrix} \\ \underline{\underline{\mathsf{ B}}}\cdot\underline{ b} &= \begin{bmatrix} \textsf{ B}_{ 1111}b_{11} + \textsf{ B}_{ 1122}b_{22} + 2\textsf{ B}_{ 1112}b_{12} \\ \textsf{ B}_{ 2211}b_{11} + \textsf{ B}_{ 2222}b_{11} + 2\textsf{ B}_{ 2212}b_{12} \\ \sqrt{2}(\textsf{ B}_{ 1211}b_{11} + \textsf{ B}_{ 1222}b_{22} + 2\textsf{ B}_{ 1212}b_{12}) \end{bmatrix} \end{aligned}
where the last answer is the Mandel representation of the first result, which