Tensor algebra

In the previous chapter we vaguely introduced the concept of higher (than first) order tensors. The key new concept was the open product, \otimes. This operations allows us to create a higher order tensor, by taking the open product between two vectors to create a second order tensor a\boldsymbol{ a} as

a=uv=uivjeiej=aijeiej\begin{aligned} \boldsymbol{ a} = \underline{\boldsymbol{ u}}\otimes\underline{\boldsymbol{ v}} = u_i v_j \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} = a_{ij} \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} \end{aligned}

If we work with indicial expressions, we just need to respect the rules of the index juggling. However, it is often more convenient and easier to express without introducing indices. Therefore, we often write the expressions using actual tensors. First, we discuss the open product a bit more in detail. Thereafter, more operations and their definitions in index notation are described. By expanding the definitions, more examples and explanations are available.

Open product, "\otimes"

Another way to think is that eiej\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} are 9 2nd order base tensors for a 2nd order tensor. I.e., eiej\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} represents 9 orthogonal directions for a 2nd order tensor. Considering a particular base, e.g. e1e2\underline{\boldsymbol{ e}}_{ 1}\otimes\underline{\boldsymbol{ e}}_{ 2}, it can be represented in matrix form in the ei\underline{\boldsymbol{ e}}_{ i} coordinate system, as
[e1e2]=[010000000]\begin{aligned} \left[ \underline{\boldsymbol{ e}}_{ 1}\otimes\underline{\boldsymbol{ e}}_{ 2} \right] = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0\end{bmatrix} \end{aligned}
e1e2\underline{\boldsymbol{ e}}_{ 1}\otimes\underline{\boldsymbol{ e}}_{ 2} is similar to a basis vector, ei\underline{\boldsymbol{ e}}_{ i}, except that we now have a 2nd order base tensor

In pure index notation, the open product correspond to multiplying two index objects, say bib_i and cjc_j, with different free indices, i.e. aij=bicja_{ij} = b_i c_j

If we would like to express this as matrix operations, it corresponds to the following vector-vector multiplication

u=[u1u2u3],v=[v1v2v3],uvT=[u1v1u1v2u1v3u2v1u2v2u2v3u3v1u3v2u3v3]\begin{aligned} \underline{\boldsymbol{ u}} = \begin{bmatrix} u_1 \\ u_2 \\ u_3 \end{bmatrix}, \quad \underline{\boldsymbol{ v}} = \begin{bmatrix} v_1 \\ v_2 \\ v_3 \end{bmatrix}, \quad \underline{\boldsymbol{ u}}\underline{\boldsymbol{ v}}^{\mathrm{T}} = \begin{bmatrix} u_1 v_1 & u_1 v_2 & u_1 v_3 \\ u_2 v_1 & u_2 v_2 & u_2 v_3 \\ u_3 v_1 & u_3 v_2 & u_3 v_3 \end{bmatrix} \end{aligned}
where we see that we increased the order from vectors (1st order) to a matrix (2nd order).

Single contraction "\cdot"

Additional examples

  • Two 1st order tensors, uv\underline{\boldsymbol{ u}}\cdot\underline{\boldsymbol{ v}}
    c=uv=uivic = \underline{\boldsymbol{ u}}\cdot\underline{\boldsymbol{ v}} = u_i v_i

  • Two 2nd order tensors, ab\boldsymbol{ a}\boldsymbol{ b}
    c=cijeiej=ab=aijbjkeiek\boldsymbol{ c}=c_{ij}\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j}=\boldsymbol{ a}\boldsymbol{ b} = a_{ij} b_{jk} \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ k}
    In pure index notation: cij=aikbkjc_{ij} = a_{ik} b_{kj}

  • 2nd and 1st order tensors, au\boldsymbol{ a}\underline{\boldsymbol{ u}}
    v=viei=au=aijujei\boldsymbol{ v}=v_{i}\underline{\boldsymbol{ e}}_{ i}=\boldsymbol{ a}\underline{\boldsymbol{ u}} = a_{ij} u_{j} \underline{\boldsymbol{ e}}_{ i}
    In pure index notation: vi=aijujv_i=a_{ij} u_j

Did you notice anything strange about the expression for two 2nd order tensors? The indices on the left and right hand side basis don't match (cijeiejc_{ij}\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} versus aijbjkeieka_{ij}b_{jk}\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ k}). This is perfectly valid! The indices are dummy indices. However, when not writing out the basis vectors, we assume that we have the same indices and index order of the basis vectors in each term in an expression. If we have that, such as in the equivalent expression cikeiek=aijbjkeiekc_{ik}\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ k}=a_{ij} b_{jk} \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ k}, we can express it as cik=aijbjkc_{ik} = a_{ij} b_{jk} and drop the basis vectors. This way of expressing it works if: (1) we have an orthonormal basis system and (2) that the basis vector indices and order are the same on both sides.

The single contraction is the "standard" matrix-vector product used when doing matrix multiplication. It is sometimes called the inner product.

Double contraction, "::"

Additional examples

  • Two 2nd order tensors, a:b\boldsymbol{ a}:\boldsymbol{ b}
    c=a:b=aijbijc = \boldsymbol{ a}:\boldsymbol{ b} = a_{ij} b_{ij}

  • 4th and 2nd order tensors, A:b\textbf{\textsf{ A}}:\boldsymbol{ b}
    c=cijeiej= A:b= Aijklbkleiej\boldsymbol{ c} = c_{ij}\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} = \textbf{\textsf{ A}}:\boldsymbol{ b} = \textsf{ A}_{ ijkl} b_{kl} \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j}
    In pure index notation: cij= Aijklbklc_{ij} = \textsf{ A}_{ ijkl} b_{kl}

The double contraction can loosely be thought of, for 2nd and 4th order tensors, as the equivalent to the dot product for 1st and 2nd order tensors (cf. vectors and matrices). For example, as we will see later, the norm of a second order tensor, a\boldsymbol{ a} is a:a\sqrt{\boldsymbol{ a}:\boldsymbol{ a}} and an "angle", θ\theta, between two tensors, a\boldsymbol{ a} and b\boldsymbol{ b} can be defined via a:ab:bcos(θ)=a:b\sqrt{\boldsymbol{ a}:\boldsymbol{ a}}\sqrt{\boldsymbol{ b}:\boldsymbol{ b}}\cos(\theta)=\boldsymbol{ a}:\boldsymbol{ b}.

Special open products, "\overline{\otimes}" and "\underline{\otimes}"

While it might seem arbitrary to introduce these special open products, they are useful in many cases. For example, the 4th order identity tensor is I=II\textbf{\textsf{ I}}=\boldsymbol{ I}\overline{\otimes}\boldsymbol{ I} where I\boldsymbol{ I} is the 2nd order identity tensor.

Derived rules

By using our rules for index notation, we can investigate how the above multiplication operations behave. The first example here, is the order of operations for the dot product between two vectors, that is,

uv=uivi=viui=vu\begin{aligned} \underline{\boldsymbol{ u}}\cdot\underline{\boldsymbol{ v}} = u_i v_i = v_i u_i = \underline{\boldsymbol{ v}}\cdot\underline{\boldsymbol{ u}} \end{aligned}

so clearly the order of the vectors do not matter. Similarly, for the double contraction between two 2nd order tensors,

a:b=aijbij=bijaij=b:a\begin{aligned} \boldsymbol{ a}:\boldsymbol{ b} = a_{ij} b_{ij} = b_{ij} a_{ij} = \boldsymbol{ b}:\boldsymbol{ a} \end{aligned}

we also have no difference if we flip the order. However, if we take the dot product between a 2nd and 1st order tensor,

au=aijujei=ujaijeiujajiei=ua a\begin{aligned} \boldsymbol{ a}\cdot\underline{\boldsymbol{ u}} = a_{ij} u_j \underline{\boldsymbol{ e}}_{ i} = u_j a_{ij} \underline{\boldsymbol{ e}}_{ i} \neq u_j a_{ji} \underline{\boldsymbol{ e}}_{ i} = \underline{\boldsymbol{ u}}\cdot\boldsymbol{ a}\; \forall\; \boldsymbol{ a} \end{aligned}

The reason that the last relation is not equal for all a\boldsymbol{ a}, is that we contract the the last index of a\boldsymbol{ a} with u\underline{\boldsymbol{ u}}'s index. (Note that if a\boldsymbol{ a} is symmetric, then this would be an equality.)

If we instead would look at a sum, we can consider A:[b+c]\textbf{\textsf{ A}}:\left[\boldsymbol{ b} + \boldsymbol{ c}\right],

Aijkl[bkl+ckl]= Aijklbkl+ Aijklckl\begin{aligned} \textsf{ A}_{ ijkl}\left[b_{kl} + c_{kl}\right] = \textsf{ A}_{ ijkl} b_{kl} + \textsf{ A}_{ ijkl} c_{kl} \end{aligned}

which holds as we are only considering summation and multiplication when working with the indices, i.e. A:[b+c]= A:b+ A:c\textbf{\textsf{ A}}:\left[\boldsymbol{ b} + \boldsymbol{ c}\right]=\textbf{\textsf{ A}}:\boldsymbol{ b} + \textbf{\textsf{ A}}:\boldsymbol{ c}

Cross product with vector

For completeness, the cross product between a 2nd order tensor and a vector is given as

a×v=aijvkeiej×ek=aijvkei[εjkmem]=εjkmaijvkeiem\begin{aligned} \boldsymbol{ a}\times\underline{\boldsymbol{ v}} = a_{ij} v_k \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} \times \underline{\boldsymbol{ e}}_{ k} = a_{ij} v_k \underline{\boldsymbol{ e}}_{ i} \otimes [\varepsilon_{jkm} \underline{\boldsymbol{ e}}_{ m}] = \varepsilon_{jkm} a_{ij} v_k \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ m} \end{aligned}