Conversion between tensor representations

Conversion between tensor representations#

Introduction#

Second-order and fourth-order tensors admit various matrix representations as explained in Helnwein, P. (2001). Once a basis has been chosen for the space of (symmetric) second-order tensors, they can be represented respectively by vectors and matrices. The choice of such basis depends on the physical and numerical problem at hand, and can also be influenced by computer implementation. Conversion between different representations may hence become necessary.

Although the scope of this package is not limited to continuum mechanics, many of the provided representations originate from it. If they do not suit your particular application, please feel free to open an issue on the GitHub page.

API#

The easy-to-use API is inspired from scipy.spatial.transform.Rotation:

  • Representing an existing tensor is performed by as_... methods.

  • Initializing from a representation uses from_... methods.

Thanks to the Fluent API, as_... methods can be applied directly after from_... methods. For example, to convert a fourth-order tensor represented by Mandel notation to Voigt notation, we can do

FourthOrderTensor(...).from_mandel(...).to_voigt()

For a detailed overview of API, please read the API documentation.

Examples#

Tutorials and examples of using this package can be found in two notebooks. It is recommended to read the notebook for second-order tensors first, before that for fourth-order tensors.

For second-order tensors, the following vector representations are available

  • Voigt notation for strain-like quantities

  • Voigt notation for stress-like quantities

  • Mandel notation

  • Unsymmetric notation

Fourth-order tensors can be written using the following matrix representations

  • Voigt notation

  • Mandel notation

  • Unsymmetric notation