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.