Tensor rotation and coordinate transformation

On this page, we will see that rotating tensors and transforming between different base vectors are very similar operations. From linear algebra, we are familiar with the rotation of vectors by using a rotation matrix, e.g.

R=[cos(β)sin(β)0sin(β)cos(β)0001]\begin{aligned} R = \begin{bmatrix} \cos(\beta) & -\sin(\beta) & 0 \\ \sin(\beta) & \cos(\beta) & 0 \\ 0 & 0 & 1\end{bmatrix} \end{aligned}

to rotate a vector around the zz-axis. Similarly, we can introduce the rotation tensor, R=Rijeiej\boldsymbol{ R}=R_{ij}\underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j}, with the property that RT=R1\boldsymbol{ R}^{\mathrm{T}}=\boldsymbol{ R}^{-1}.

[cos(β)sin(β)0sin(β)cos(β)0001][cos(β)sin(β)0sin(β)cos(β)0001]=[cos2(β)+sin2(β)sin(β)cos(β)sin(β)cos(β)0sin(β)cos(β)sin(β)cos(β)cos2(β)+sin2(β)0001]=[100010001]\begin{aligned} &\begin{bmatrix} \cos(\beta) & -\sin(\beta) & 0 \\ \sin(\beta) & \cos(\beta) & 0 \\ 0 & 0 & 1\end{bmatrix} \begin{bmatrix} \cos(\beta) & \sin(\beta) & 0 \\ -\sin(\beta) & \cos(\beta) & 0 \\ 0 & 0 & 1\end{bmatrix} \\ &= \begin{bmatrix} \cos^2(\beta) + \sin^2(\beta) & \sin(\beta)\cos(\beta)-\sin(\beta)\cos(\beta) & 0 \\ \sin(\beta)\cos(\beta)-\sin(\beta)\cos(\beta) & \cos^2(\beta) + \sin^2(\beta) & 0 \\ 0 & 0 & 1\end{bmatrix} \\ &= \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\end{bmatrix} \end{aligned}

The rotation tensor rotates a vector, but will not change its length. To rotate a vector v\underline{\boldsymbol{ v}}, we can either do Rv\boldsymbol{ R}\underline{\boldsymbol{ v}} or vR\underline{\boldsymbol{ v}}\boldsymbol{ R}. Both will rotate the vector, but in opposite directions, which we can see when we consider the index notation for these expressions: RijvjR_{ij} v_j and vjRji=Rij1vjv_j R_{ji} = R^{-1}_{ij} v_j. If we take resulting vector in the last expression and left multiply with R\boldsymbol{ R} as in the first expression, we get RkiRij1vj=δkjvj=vkR_{ki}R^{-1}_{ij} v_j = \delta_{kj} v_j = v_k. Hence, we rotated back to the original vector, showing that the first rotation was in the opposite direction. By convention, we define the rotation tensor such that we should left-multiply the vector by R\boldsymbol{ R} to get the desired rotation, i.e. Rv\boldsymbol{ R}\underline{\boldsymbol{ v}}.

Change of coordinates

alt

The left illustration has two coordinate systems, ei\underline{\boldsymbol{ e}}_i and gi\underline{\boldsymbol{ g}}_i. The vector v\underline{\boldsymbol{ v}} is then

v=vieei=viggi\begin{aligned} \underline{\boldsymbol{ v}}=v_i^{ \mathrm{ e} } \underline{\boldsymbol{ e}}_{ i} = v_i^{ \mathrm{ g} } \underline{\boldsymbol{ g}}_i \end{aligned}

where viev_i^{ \mathrm{ e} } and vigv_i^{ \mathrm{ g} } are coordinates in the two coordinate systems.

To demonstrate this, consider a vector v\underline{\boldsymbol{ v}} with length 1. Then
v1e=cos(αe), v2e=sin(αe), v3e=0vig=Qikegvkev1g=cos(αe)cos(β)+sin(αe)sin(β)=cos(αeβ)=cos(αg)v2g=cos(αe)sin(β)+sin(αe)cos(β)=sin(αeβ)=sin(αg)v3g=v3e=0\begin{aligned} v_1^{ \mathrm{ e} } &= \cos(\alpha_{ \mathrm{ e} }),\,v_2^{ \mathrm{ e} }=\sin(\alpha_{ \mathrm{ e} }),\,v_3^{ \mathrm{ e} }=0\\ v_i^{ \mathrm{ g} } &= Q^{ \mathrm{ eg} }_{ik}v_k^{ \mathrm{ e} } \\ v_1^{ \mathrm{ g} } &= \cos(\alpha_{ \mathrm{ e} })\cos(\beta) + \sin(\alpha_{ \mathrm{ e} })\sin(\beta) = \cos(\alpha_{ \mathrm{ e} }-\beta) = \cos(\alpha_{ \mathrm{ g} })\\ v_2^{ \mathrm{ g} } &= -\cos(\alpha_{ \mathrm{ e} })\sin(\beta) + \sin(\alpha_{ \mathrm{ e} })\cos(\beta) = \sin(\alpha_{ \mathrm{ e} }-\beta) = \sin(\alpha_{ \mathrm{ g} })\\ v_3^{ \mathrm{ g} } &= v_3^{ \mathrm{ e} } = 0 \end{aligned}

However, note that QRT\boldsymbol{ Q}\neq\boldsymbol{ R}^{\mathrm{T}}. This is because, more precicely, the transformation tensor Q\boldsymbol{ Q} between the coordinate systems ei\underline{\boldsymbol{ e}}_{ i} and gi\underline{\boldsymbol{ g}}_i is

Q=Qijeggiej=(giej)giej\begin{aligned} \boldsymbol{ Q} = Q_{ij}^{ \mathrm{ eg} } \underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ e}}_j = (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) \underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ e}}_j \end{aligned}

Note that Q\boldsymbol{ Q} is described in a special way - its bases are mixed. This is not a property of the tensor itself, but just a convenient way to describe it.

Hence, the transformation of the vector v\underline{\boldsymbol{ v}} from ei\underline{\boldsymbol{ e}}_i bases to gi\underline{\boldsymbol{ g}}_i bases becomes

Qv=(giej)(giej)(vkeek)=(giej)giδjkvke=((giej)vje)givig=(giej)vje\begin{aligned} \boldsymbol{ Q}\underline{\boldsymbol{ v}} &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) (\underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ e}}_j) \cdot (v_k^{ \mathrm{ e} } \underline{\boldsymbol{ e}}_k) \\ &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) \underline{\boldsymbol{ g}}_i \delta_{jk} v_k^{ \mathrm{ e} } \\ &= ((\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) v_j^{ \mathrm{ e} }) \underline{\boldsymbol{ g}}_i \\ v_i^{ \mathrm{ g} } &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) v_j^{ \mathrm{ e} } \end{aligned}
So let's try to do the same transformation but starting from v\underline{\boldsymbol{ v}} described in the gi\underline{\boldsymbol{ g}}_i coordinate system.
Qv=(giej)(giej)(vkggk)=(giej)gi(ejgk)vkg=Qijeg[Qeg]jk1vkggi=viggi=v\begin{aligned} \boldsymbol{ Q}\underline{\boldsymbol{ v}} &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) (\underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ e}}_j) \cdot (v_k^{ \mathrm{ g} } \underline{\boldsymbol{ g}}_k) \\ &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) \underline{\boldsymbol{ g}}_i (\underline{\boldsymbol{ e}}_j \cdot \underline{\boldsymbol{ g}}_k) v_k^{ \mathrm{ g} } \\ &= Q^{ \mathrm{ eg} }_{ij} \left[Q^{ \mathrm{ eg} }\right]^{-1}_{jk} v_k^{ \mathrm{ g} } \underline{\boldsymbol{ g}}_i = v_i^{ \mathrm{ g} } \underline{\boldsymbol{ g}}_i = \underline{\boldsymbol{ v}} \end{aligned}
Since Qijeg=giejQ^{ \mathrm{ eg} }_{ij}=\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j and Qjkge=(Qjkeg)1=ejgkQ^{ \mathrm{ ge} }_{jk}=(Q^{ \mathrm{ eg} }_{jk})^{-1}=\underline{\boldsymbol{ e}}_j \cdot \underline{\boldsymbol{ g}}_k, then (giej)(ejgk)=δik(\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) (\underline{\boldsymbol{ e}}_j \cdot \underline{\boldsymbol{ g}}_k)=\delta_{ik}, and we have vig=δikvkg=vigv_i^{ \mathrm{ g} }=\delta_{ik}v_k^{ \mathrm{ g} }=v_i^{ \mathrm{ g} }. So now we showed that Qv=v\boldsymbol{ Q}\underline{\boldsymbol{ v}}=\underline{\boldsymbol{ v}}. But this would, as mentioned, imply that Q=I\boldsymbol{ Q}=\boldsymbol{ I}. To check this, let's transform the tensor Q\boldsymbol{ Q}, expressed in mixed bases, into the same bases
Q=(giej)gi(Qej)=(giej)gi(gkelej)=(giej)(gkel)δljgigk=(giej)(gkej)gigk=QijegQjkgegigk=δikgigk=I\begin{aligned} \boldsymbol{ Q} &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) \underline{\boldsymbol{ g}}_i \otimes (\boldsymbol{ Q}\underline{\boldsymbol{ e}}_j)\quad\quad\\ &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) \underline{\boldsymbol{ g}}_i \otimes ( \underline{\boldsymbol{ g}}_k \otimes \underline{\boldsymbol{ e}}_l\cdot\underline{\boldsymbol{ e}}_j) \\ &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) (\underline{\boldsymbol{ g}}_k \cdot \underline{\boldsymbol{ e}}_l) \delta_{lj} \underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ g}}_k \\ &= (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) (\underline{\boldsymbol{ g}}_k \cdot \underline{\boldsymbol{ e}}_j) \underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ g}}_k \\ &= Q^{ \mathrm{ eg} }_{ij} Q^{ \mathrm{ ge} }_{jk}\underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ g}}_k = \delta_{ik}\underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ g}}_k = \boldsymbol{ I} \end{aligned}
where in the first equality we used that ej=Qej\underline{\boldsymbol{ e}}_j = \boldsymbol{ Q}\underline{\boldsymbol{ e}}_j.

Higher order tensors

Transforming the bases of the 2nd and 4th order tensors a\boldsymbol{ a} and A\textbf{\textsf{ A}}, becomes
aij(Qei)(Qej)=QaQT=(QQ):a Aijkl(Qei)(Qej)(Qek)(Qel)=(QQ): A:(QTQT)\begin{aligned} a_{ij} (\boldsymbol{ Q}\underline{\boldsymbol{ e}}_i)\otimes(\boldsymbol{ Q}\underline{\boldsymbol{ e}}_j) = \boldsymbol{ Q}\boldsymbol{ a}\boldsymbol{ Q}^{\mathrm{T}} = (\boldsymbol{ Q}\overline{\otimes}\boldsymbol{ Q}):\boldsymbol{ a} \\ \textsf{ A}_{ ijkl} (\boldsymbol{ Q}\underline{\boldsymbol{ e}}_i)\otimes(\boldsymbol{ Q}\underline{\boldsymbol{ e}}_j)\otimes(\boldsymbol{ Q}\underline{\boldsymbol{ e}}_k)\otimes(\boldsymbol{ Q}\underline{\boldsymbol{ e}}_l) = (\boldsymbol{ Q}\overline{\otimes}\boldsymbol{ Q}):\textbf{\textsf{ A}}:(\boldsymbol{ Q}^{\mathrm{T}}\overline{\otimes}\boldsymbol{ Q}^{\mathrm{T}}) \end{aligned}
When actually doing the calculations however, we work in index notation. So to transform from aijea_{ij}^{ \mathrm{ e} } and Aijkle\textsf{ A}_{ ijkl}^{ \mathrm{ e} } to aijga_{ij}^{ \mathrm{ g} } and Aijklg\textsf{ A}_{ ijkl}^{ \mathrm{ g} }, we have
aijg=QikegQjlegaije Aijklg=QimegQjnegQkoegQlpeg Amnope\begin{aligned} a_{ij}^{ \mathrm{ g} } &= Q_{ik}^{ \mathrm{ eg} } Q_{jl}^{ \mathrm{ eg} } a_{ij}^{ \mathrm{ e} } \\ \textsf{ A}_{ ijkl}^{ \mathrm{ g} } &= Q_{im}^{ \mathrm{ eg} } Q_{jn}^{ \mathrm{ eg} } Q_{ko}^{ \mathrm{ eg} } Q_{lp}^{ \mathrm{ eg} } \textsf{ A}_{ mnop}^{ \mathrm{ e} } \end{aligned}
I.e. we left-multiply each index by the transformation coefficients Qijeg=giejQ_{ij}^{ \mathrm{ eg} }=\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j

Tensor rotation

Above, we have found the following interesting facts about coordinate transformation tensor and rotation tensor.

  • The rotation tensor is R=Rijeiej\boldsymbol{ R}=R_{ij} \underline{\boldsymbol{ e}}_{ i}\otimes\underline{\boldsymbol{ e}}_{ j} and is such that RT=R1\boldsymbol{ R}^{\mathrm{T}}=\boldsymbol{ R}^{-1}.

  • The coordinate transformation tensor is Q=Qijeggiej=(giej)giej=I\boldsymbol{ Q}=Q^{ \mathrm{ eg} }_{ij} \underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ e}}_j = (\underline{\boldsymbol{ g}}_i \cdot \underline{\boldsymbol{ e}}_j) \underline{\boldsymbol{ g}}_i \otimes \underline{\boldsymbol{ e}}_j = \boldsymbol{ I}

  • If we would like to transform from basis system ei\underline{\boldsymbol{ e}}_i to gi=Rei\underline{\boldsymbol{ g}}_i = \boldsymbol{ R}\underline{\boldsymbol{ e}}_i, then Qijeg=RijTQ^{ \mathrm{ eg} }_{ij} = R^{\mathrm{T}}_{ij}

Rotating a 2nd order tensor, a\boldsymbol{ a}, becomes
aij(Rei)(Rej)=aij(Rklekelei)(Rmnemenej)=aijRklRmn(ekδli)(δnjem)=RkiaijRmjekem=RkiaijRjmTekem=RaRT\begin{aligned} a_{ij} (\boldsymbol{ R}\underline{\boldsymbol{ e}}_i)\otimes(\boldsymbol{ R}\underline{\boldsymbol{ e}}_j) &= a_{ij} (R_{kl}\underline{\boldsymbol{ e}}_{ k}\otimes\underline{\boldsymbol{ e}}_{ l}\cdot\underline{\boldsymbol{ e}}_{ i}) \otimes (R_{mn}\underline{\boldsymbol{ e}}_{ m}\otimes\underline{\boldsymbol{ e}}_{ n}\cdot\underline{\boldsymbol{ e}}_{ j}) \\ &= a_{ij} R_{kl} R_{mn} (\underline{\boldsymbol{ e}}_{ k} \delta_{li}) \otimes (\delta_{nj} \underline{\boldsymbol{ e}}_{ m})\\ &= R_{ki} a_{ij} R_{mj} \underline{\boldsymbol{ e}}_{ k}\otimes\underline{\boldsymbol{ e}}_{ m} = R_{ki} a_{ij} R^{\mathrm{T}}_{jm} \underline{\boldsymbol{ e}}_{ k}\otimes\underline{\boldsymbol{ e}}_{ m} \\ &= \boldsymbol{ R} \boldsymbol{ a} \boldsymbol{ R}^{\mathrm{T}} \end{aligned}
Hence, if we just consider coefficients via index expressions, we have the rotated coefficients akma'_{km} as akm=RkiaijRjmTa'_{km} = R_{ki} a_{ij} R^{\mathrm{T}}_{jm}.

Similarly, rotating a 4th order tensor, A\textbf{\textsf{ A}}, becomes

Aijkl(Rei)(Rej)(Rek)(Rel)=RmiRnj AijklRkoTRlpTemeneoep=[RR]: A:[RTRT]\begin{aligned} \textsf{ A}_{ ijkl} (\boldsymbol{ R}\underline{\boldsymbol{ e}}_i)\otimes(\boldsymbol{ R}\underline{\boldsymbol{ e}}_j)\otimes(\boldsymbol{ R}\underline{\boldsymbol{ e}}_k)\otimes(\boldsymbol{ R}\underline{\boldsymbol{ e}}_l) &= R_{mi} R_{nj} \textsf{ A}_{ ijkl} R^{\mathrm{T}}_{ko} R^{\mathrm{T}}_{lp} \underline{\boldsymbol{ e}}_{ m}\otimes\underline{\boldsymbol{ e}}_{ n}\otimes\underline{\boldsymbol{ e}}_{ o}\otimes\underline{\boldsymbol{ e}}_{ p} \\ &= \left[ \boldsymbol{ R}\overline{\otimes} \boldsymbol{ R}\right] : \textbf{\textsf{ A}} : \left[\boldsymbol{ R}^{\mathrm{T}} \overline{\otimes} \boldsymbol{ R}^{\mathrm{T}}\right] \end{aligned}
and if we just consider coefficients via index expressions, we have the rotated coefficients Amnop\textsf{ A}_{ mnop}' as Amnop=RmiRnj AijklRkoTRlpT\textsf{ A}_{ mnop}' = R_{mi} R_{nj} \textsf{ A}_{ ijkl} R^{\mathrm{T}}_{ko} R^{\mathrm{T}}_{lp}.