Generated with sparks and insights from 5 sources
Introduction

Definition: A Fourthorder tensor can be viewed as a linear map from secondorder tensors to secondorder tensors.

Voigt Notation: Commonly used for stress/strain tensors, involves a 6x6 matrix representation.

MandelKelvin Notation: Another method for representing stress/strain tensors, using the same 6x6 matrices for rotations.

Rotation Matrix: A 3x3 matrix used to perform the rotation of the tensor.

Rotation Formula: In Voigt notation, the rotation of a Stiffness tensor is done via C' = M C M^T.

Python Implementation: Using NumPy, tensor rotation can be efficiently performed with np.tensordot or np.einsum functions.

Mathematica Implementation: A method using multiDot function to contract the matrix on all levels of the array.
Voigt Notation [1]

Definition: Voigt notation is a method to represent stress/strain tensors as 6component vectors.

Rotation Matrix: The rotation of a stiffness tensor in Voigt's notation is done via C' = M C M^T.

Stress Rotation: The rotation matrix M for stresses is a 6x6 matrix derived from the 3x3 rotation matrix Q.

Strain Rotation: The rotation matrix N for strains is also a 6x6 matrix derived from Q.

References: Auld's book and Mehrabadi and Cowin's paper provide detailed descriptions of these matrices.
MandelKelvin Notation [1]

Definition: MandelKelvin notation is another method for representing stress/strain tensors.

Rotation Matrix: The rotation matrix M for MandelKelvin notation is similar to Voigt but includes sqrt(2) factors.

Stiffness and Compliance: Both stiffness and compliance tensors can be rotated using M in MandelKelvin notation.

Advantages: This notation treats stress and strain arrays the same, simplifying calculations.

References: Mehrabadi and Cowin's paper describes the rotation matrix for MandelKelvin notation.
Rotation Matrix [1]

Definition: A 3x3 matrix used to perform the rotation of the tensor.

Matrix Form: Typically denoted as Q, with elements Qxx, Qxy, Qxz, etc.

Usage: Used in both Voigt and MandelKelvin notations to form rotation matrices for tensors.

Example: A sample rotation matrix Q can be used to derive the 6x6 rotation matrices M and N.

References: Auld's book and Mehrabadi and Cowin's paper provide detailed descriptions of these matrices.
Python Implementation [2]

Library: NumPy is commonly used for tensor operations in Python.

np.einsum: A function that allows for efficient tensor rotation using Einstein summation convention.

np.tensordot: Another function that can be used for tensor rotation, often more efficient than np.einsum.

Example: np.einsum('ai,bj,ck,dl,abcd>ijkl', g, g, g, g, T) for rotating a 4th order tensor.

Performance: np.tensordot is generally faster and more memory efficient for large tensors.
Mathematica Implementation [3]

Function: multiDot function can be used to contract the matrix on all levels of the array.

Example: multiDot[m_, a_] := With[{d = ArrayDepth[a]}, Nest[Transpose[m.#, RotateRight[Range[d]]] &, a, d]]

Usage: Can be applied to arrays of any depth, not just 4th order tensors.

Symmetry: The function preserves the symmetry of the tensor under rotation.

Example: r = RotationMatrix[RandomReal[2 Pi], RandomReal[1, 3]]; c = Normal@ SymmetrizedArray[_ :> RandomReal[1], {3, 3, 3, 3}, {{{2, 1, 3, 4}, 1}, {{1, 2, 4, 3}, 1}, {{3, 4, 1, 2}, 1}}]; rc = multiDot[r, c]
Related Videos
<br><br>
<div class="mdextyoutubewidget"> { "title": "2E. Fourth order tensors", "link": "https://www.youtube.com/watch?v=VJeSKBXPfN0", "channel": { "name": ""}, "published_date": "Sep 3, 2020", "length": "" }</div>
<div class="mdextyoutubewidget"> { "title": "Introduction to Tensors: Transformation Rules", "link": "https://www.youtube.com/watch?v=j6DazQDbEhQ", "channel": { "name": ""}, "published_date": "Jun 16, 2018", "length": "" }</div>