cratepy.tensor.tensoroperations.spectral_decomposition

spectral_decomposition(x, is_real_if_close=False)[source]

Perform spectral decomposition of symmetric second-order tensor.

The computational implementation of the spectral decomposition follows the Appendix A of Computational Methods for Plasticity [1].


Parameters:
  • x (numpy.ndarray (2d)) – Second-order tensor (square array) whose eigenvalues and eigenvectors are computed.

  • is_real_if_close (bool, default=False) – If True, then drop imaginary parts of eigenvalues and eigenvectors if these are close to zero (tolerance with respect to machine epsilon for input type) and convert to real type.

Returns:

  • eigenvals (numpy.ndarray (1d)) – Eigenvalues of second-order tensor sorted in descending order.

  • eigenvectors (numpy.ndarray (2d)) – Eigenvectors of second-order tensor stored columnwise according with eigenvalues.

  • eig_multiplicity (dict) – Multiplicity (item, int) of the eigenvalue stored at given index (key, str).

  • eigenprojections (list[tuple]) – Eigenprojections of second-order tensor stored as tuples (item) as (eigenvalue, eigenprojection) and sorted in descending order of eigenvalues. Only available for 2x2 and 3x3 second-order tensors, otherwise an empty list is returned.