scikit-elasticity#

A library for working with anisotropic elasticity in Python.

Homogenization#

Calculation of elastic constants from elastic stiffness and a list of orientations.

>>> import skel
>>> import damask
>>> import numpy as np

>>> N = 1000
>>> C_Al = skel.stiffness('cubic',C_11=106.9e9,C_12=60.5e9,C_44=28.4e9)
>>> O = damask.Rotation.from_random(N)
>>> p = skel.Polycrystal(C_Al,O)
>>> with np.printoptions(precision=2,suppress=True):
>>>    print(p.C_Reuss/1e9)
>>>    print(p.C_Voigt/1e9)
>>>    print(p.C_Hill_C/1e9)
>>>    print(p.C_Hill_S/1e9)
class skel.VolumeElement(C, O)[source]#
property C_Hill#

Homogenized stiffness according to Hill.

Average of C and S average from Voigt and Reuss.

property C_Hill_C#

Homogenized stiffness according to Hill.

Average of C from Voigt and Reuss.

property C_Hill_S#

Homogenized stiffness according to Hill.

Average of S from Voigt and Reuss.

property C_Hill_geometric#

Homogenized stiffness according to Hill.

property C_Reuss#

Homogenized compliance according to Reuss.

property C_Voigt#

Homogenized stiffness according to Voigt.

property S_Hill#

Homogenized compliance according to Hill.

Average of S and C average from Voigt and Reuss.

property S_Hill_C#

Homogenized compliance according to Hill.

Average of C from Voigt and Reuss.

property S_Hill_S#

Homogenized compliance according to Hill.

Average of S from Voigt and Reuss.

property S_Hill_geometric#

Homogenized compliance according to Hill.

property S_Reuss#

Homogenized stiffness according to Reuss.

property S_Voigt#

Homogenized compliance according to Voigt.

Conversions and Representations#

skel.Voigt.rotate_compliance(O, S_tilde)[source]#

Rotate symmetric 4th order compliance tensor in Voigt notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

S_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order compliance tensor in Voigt notation.

Returns#

S_tilde: numpy.ndarray of shape (…,6,6)

Rotated 4th order compliance tensor in Voigt notation.

skel.Voigt.rotate_stiffness(O, C_tilde)[source]#

Rotate symmetric 4th order stiffness tensor in Voigt notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

C_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order stiffness tensor in Voigt notation.

Returns#

C_tilde: numpy.ndarray of shape (…,6,6)

Rotated 4th order stiffness tensor in Voigt notation.

skel.Voigt.rotate_strain(O, epsilon_tilde)[source]#

Rotate symmetric 2nd order strain tensor in Voigt notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

epsilon_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order strain tensor in Voigt notation.

Returns#

epsilon_tilde: numpy.ndarray of shape (…,6)

Rotated 2nd order strain tensor in Voigt notation.

skel.Voigt.rotate_stress(O, sigma_tilde)[source]#

Rotate symmetric 2nd order stress tensor in Voigt notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

sigma_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order stress tensor in Voigt notation.

Returns#

sigma_tilde: numpy.ndarray of shape (…,6)

Rotated 2nd order stress tensor in Voigt notation.

skel.Voigt.to_3x3_strain(epsilon_tilde)[source]#

Convert symmetric 2nd order strain tensor in Voigt notation to matrix notation.

Parameters#

epsilon_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order strain tensor in Voigt notation.

Returns#

epsilonnumpy.ndarray of shape (…,3,3)

Symmetric 2nd order strain tensor in matrix notation.

skel.Voigt.to_3x3_stress(sigma_tilde)[source]#

Convert symmetric 2nd order stress tensor in Voigt notation to matrix notation.

Parameters#

sigma_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order stress tensor in Voigt notation.

Returns#

sigmanumpy.ndarray of shape (…,3,3)

Symmetric 2nd order stress tensor in matrix notation.

skel.Voigt.to_3x3x3x3_compliance(S_tilde)[source]#

Convert symmetric 4th order compliance tensor in Voigt notation to matrix notation.

Parameters#

S_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order tensor in Voigt notation.

Returns#

Snumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order compliance tensor in matrix notation.

skel.Voigt.to_3x3x3x3_stiffness(C_tilde)[source]#

Convert symmetric 4th order stiffness tensor in Voigt notation to matrix notation.

Parameters#

C_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order stiffness tensor in Voigt notation.

Returns#

Cnumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order stiffness tensor in matrix notation.

skel.Voigt.to_6_strain(epsilon)[source]#

Convert symmetric 2nd order strain tensor in matrix notation to Voigt notation.

Parameters#

epsilonnumpy.ndarray of shape (…,3,3)

Symmetric 2nd order strain tensor in matrix notation.

Returns#

epsilon_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order strain tensor in Voigt notation.

skel.Voigt.to_6_stress(sigma)[source]#

Convert symmetric 2nd order stress tensor in matrix notation to Voigt notation.

Parameters#

sigmanumpy.ndarray of shape (…,3,3)

Symmetric 2nd order stress tensor in matrix notation.

Returns#

sigma_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order stress tensor in Voigt notation.

skel.Voigt.to_6x6_compliance(S)[source]#

Convert symmetric 4th order compliance tensor in matrix notation to Voigt notation.

Parameters#

Snumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order compliance tensor in matrix notation.

Returns#

S_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order compliance tensor in Voigt notation.

skel.Voigt.to_6x6_stiffness(C)[source]#

Convert symmetric 4th order stiffness tensor in matrix notation to Voigt notation.

Parameters#

Cnumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order stiffness tensor in matrix notation.

Returns#

C_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order stiffness tensor in Voigt notation.

skel.Mandel.rotate_2nd(O, t_tilde)[source]#

Rotate symmetric 2nd order tensor in Mandel notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

t_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order tensor in Mandel notation.

Returns#

t_tilde: numpy.ndarray of shape (…,6)

Rotated 2nd order tensor in Mandel notation.

Notes#

Due to the definition of the Mandel notation, this function can be used to rotate strain and stress tensors.

skel.Mandel.rotate_4th(O, T_tilde)[source]#

Rotate symmetric 4th order tensor in Mandel notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

T_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order tensor in Mandel notation.

Returns#

T_tilde: numpy.ndarray of shape (…,6,6)

Rotated 4th order tensor in Mandel notation.

Notes#

Due to the definition of the Mandel notation, this function can be used to rotate compliance and stiffness tensors.

skel.Mandel.rotate_compliance(O, S_tilde)[source]#

Rotate symmetric 4th order compliance tensor in Mandel notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

S_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order compliance tensor in Mandel notation.

Returns#

S_tilde: numpy.ndarray of shape (…,6,6)

Rotated 4th order compliance tensor in Mandel notation.

skel.Mandel.rotate_stiffness(O, C_tilde)[source]#

Rotate symmetric 4th order stiffness tensor in Mandel notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

C_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order stiffness tensor in Mandel notation.

Returns#

C_tilde: numpy.ndarray of shape (…,6,6)

Rotated 4th order stiffness tensor in Mandel notation.

skel.Mandel.rotate_strain(O, epsilon_tilde)[source]#

Rotate symmetric 2nd order strain tensor in Mandel notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

epsilon_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order strain tensor in Mandel notation.

Returns#

epsilon_tilde: numpy.ndarray of shape (…,6)

Rotated 2nd order strain tensor in Mandel notation.

skel.Mandel.rotate_stress(O, sigma_tilde)[source]#

Rotate symmetric 2nd order stress tensor in Mandel notation.

Parameters#

O: damask.Orientation of shape (…)

Orientations.

sigma_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order stress tensor in Mandel notation.

Returns#

sigma_tilde: numpy.ndarray of shape (…,6)

Rotated 2nd order stress tensor in Mandel notation.

skel.Mandel.to_3x3(t_tilde)[source]#

Convert symmetric 2nd order tensor in Mandel notation to matrix notation.

Parameters#

t_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order tensor in Mandel notation.

Returns#

tnumpy.ndarray of shape (…,3,3)

Symmetric 2nd order tensor in matrix notation.

Notes#

Due to the definition of the Mandel notation, this function can be used to convert strain and stress tensors.

skel.Mandel.to_3x3_strain(epsilon_tilde)[source]#

Convert symmetric 2nd order strain tensor in Mandel notation to matrix notation.

Parameters#

epsilon_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order strain tensor in Mandel notation.

Returns#

epsilonnumpy.ndarray of shape (…,3,3)

Symmetric 2nd order strain tensor in matrix notation.

skel.Mandel.to_3x3_stress(sigma_tilde)[source]#

Convert symmetric 2nd order stress tensor in Mandel notation to matrix notation.

Parameters#

sigma_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order stress tensor in Mandel notation.

Returns#

sigmanumpy.ndarray of shape (…,3,3)

Symmetric 2nd order stress tensor in matrix notation.

skel.Mandel.to_3x3x3x3(T_tilde)[source]#

Convert symmetric 4th order tensor in Mandel notation to matrix notation.

Parameters#

T_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order tensor in Mandel notation.

Returns#

Tnumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order tensor in matrix notation.

Notes#

Due to the definition of the Mandel notation, this function can be used to convert compliance and stiffness tensors.

skel.Mandel.to_3x3x3x3_compliance(S_tilde)[source]#

Convert symmetric 4th order compliance tensor in Mandel notation to matrix notation.

Parameters#

S_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order tensor in Mandel notation.

Returns#

Snumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order compliance tensor in matrix notation.

skel.Mandel.to_3x3x3x3_stiffness(C_tilde)[source]#

Convert symmetric 4th order stiffness tensor in Mandel notation to matrix notation.

Parameters#

C_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order stiffness tensor in Mandel notation.

Returns#

Cnumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order stiffness tensor in matrix notation.

skel.Mandel.to_6(t)[source]#

Convert symmetric 2nd order tensor in matrix notation to Mandel notation.

Parameters#

tnumpy.ndarray of shape (…,3,3)

Symmetric 2nd order tensor in matrix notation.

Returns#

t_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order tensor in Mandel notation.

Notes#

Due to the definition of the Mandel notation, this function can be used to convert strain and stress tensors.

skel.Mandel.to_6_strain(epsilon)[source]#

Convert symmetric 2nd order strain tensor in matrix notation to Mandel notation.

Parameters#

epsilonnumpy.ndarray of shape (…,3,3)

Symmetric 2nd order strain tensor in matrix notation.

Returns#

epsilon_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order strain tensor in Mandel notation.

skel.Mandel.to_6_stress(sigma)[source]#

Convert symmetric 2nd order stress tensor in matrix notation to Mandel notation.

Parameters#

sigmanumpy.ndarray of shape (…,3,3)

Symmetric 2nd order stress tensor in matrix notation.

Returns#

sigma_tilde: numpy.ndarray of shape (…,6)

Symmetric 2nd order stress tensor in Mandel notation.

skel.Mandel.to_6x6(T)[source]#

Convert symmetric 4th order tensor in matrix notation to Mandel notation.

Parameters#

Tnumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order tensor in matrix notation.

Returns#

T_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order tensor in Mandel notation.

Notes#

Due to the definition of the Mandel notation, this function can be used to convert compliance and stiffness tensors.

skel.Mandel.to_6x6_compliance(S)[source]#

Convert symmetric 4th order compliance tensor in matrix notation to Mandel notation.

Parameters#

Snumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order compliance tensor in matrix notation.

Returns#

S_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order compliance tensor in Mandel notation.

skel.Mandel.to_6x6_stiffness(C)[source]#

Convert symmetric 4th order stiffness tensor in matrix notation to Mandel notation.

Parameters#

Cnumpy.ndarray of shape (…,3,3,3,3)

Symmetric 4th order stiffness tensor in matrix notation.

Returns#

C_tilde: numpy.ndarray of shape (…,6,6)

Symmetric 4th order stiffness tensor in Mandel notation.