Elasticipy.FourthOrderTensor module
- class Elasticipy.FourthOrderTensor.ComplianceTensor(C, **kwargs)[source]
Bases:
StiffnessTensorClass for manipulating compliance tensors
- C11_C12_factor = 2.0
- Hill_average()[source]
Compute the (Voigt-Reuss-)Hill average ofthe stiffness tensor. If the tensor contains no orientation, we assume isotropic behaviour. Otherwise, the mean is computed over all orientations.
- Parameters:
orientations (np.ndarray or None) – Set of m orientation matrices, defined as a [m, 3, 3] array. If None, uniform distribution is assumed, resulting in isotropic tensor
- Returns:
Voigt-Reuss-Hill average of tensor
- Return type:
See also
Voigt_averagecompute the Voigt average
Reuss_averagecompute the Reuss average
- Reuss_average()[source]
Compute the Reuss average of the stiffness tensor. If the tensor contains no orientation, we assume isotropic behaviour. Otherwise, the mean is computed over all orientations.
- Returns:
Reuss average of stiffness tensor
- Return type:
See also
Voigt_averagecompute the Voigt average
Hill_averagecompute the Voigt-Reuss-Hill average
- Voigt_average()[source]
Compute the Voigt average of the stiffness tensor. If the tensor contains no orientation, we assume isotropic behaviour. Otherwise, the mean is computed over all orientations.
- Returns:
Voigt average of stiffness tensor
- Return type:
See also
Reuss_averagecompute the Reuss average
Hill_averagecompute the Voigt-Reuss-Hill average
- component_prefix = 'S'
- tensor_name = 'Compliance'
- voigt_map = array([[1., 1., 1., 2., 2., 2.], [1., 1., 1., 2., 2., 2.], [1., 1., 1., 2., 2., 2.], [2., 2., 2., 4., 4., 4.], [2., 2., 2., 4., 4., 4.], [2., 2., 2., 4., 4., 4.]])
- class Elasticipy.FourthOrderTensor.StiffnessTensor(S, **kwargs)[source]
Bases:
SymmetricTensorClass for manipulating fourth-order stiffness tensors.
- C11_C12_factor = 0.5
- Hill_average()[source]
Compute the (Voigt-Reuss-)Hill average ofthe stiffness tensor. If the tensor contains no orientation, we assume isotropic behaviour. Otherwise, the mean is computed over all orientations.
- Parameters:
orientations (np.ndarray or None) – Set of m orientation matrices, defined as a [m, 3, 3] array. If None, uniform distribution is assumed, resulting in isotropic tensor
- Returns:
Voigt-Reuss-Hill average of tensor
- Return type:
See also
Voigt_averagecompute the Voigt average
Reuss_averagecompute the Reuss average
- property Poisson_ratio
Directional Poisson’s ratio
- Returns:
Poisson’s ratio
- Return type:
- Reuss_average()[source]
Compute the Reuss average of the stiffness tensor. If the tensor contains no orientation, we assume isotropic behaviour. Otherwise, the mean is computed over all orientations.
- Returns:
Reuss average of stiffness tensor
- Return type:
See also
Voigt_averagecompute the Voigt average
Hill_averagecompute the Voigt-Reuss-Hill average
- Voigt_average()[source]
Compute the Voigt average of the stiffness tensor. If the tensor contains no orientation, we assume isotropic behaviour. Otherwise, the mean is computed over all orientations.
- Returns:
Voigt average of stiffness tensor
- Return type:
See also
Reuss_averagecompute the Reuss average
Hill_averagecompute the Voigt-Reuss-Hill average
- property Young_modulus
Directional Young’s modulus
- Returns:
Young’s modulus
- Return type:
- property shear_modulus
Directional shear modulus
- Returns:
Shear modulus
- Return type:
- tensor_name = 'Stiffness'
- class Elasticipy.FourthOrderTensor.SymmetricTensor(M, phase_name='', symmetry='Triclinic', orientations=None)[source]
Bases:
objectTemplate class for manipulating symmetric fourth-order tensors.
- matrix
(6,6) matrix gathering all the components of the tensor, using the Voigt notation.
- Type:
np.ndarray
- symmetry
Symmetry of the tensor
- Type:
str
- C11_C12_factor = 0.5
- component_prefix = 'C'
- classmethod fromCrystalSymmetry(symmetry='Triclinic', point_group=None, diad='x', phase_name=None, **kwargs)[source]
Create a fourth-order tensor from limited number of components, taking advantage of crystallographic symmetries
- Parameters:
symmetry (str, default Triclinic) – Name of the crystallographic symmetry
point_group (str) – Point group of the considered crystal. Only used (and mandatory) for tetragonal and trigonal symmetries.
diad (str {'x', 'y'}, default 'x') – Alignment convention. Sets whether x||a or y||b. Only used for monoclinic symmetry.
phase_name (str, default None) – Name to use when printing the tensor
kwargs – Keywords describing all the necessary components, depending on the crystal’s symmetry and the type of tensor. For Stiffness, they should be named as ‘Cij’ (e.g. C11=…, C12=…). For Comliance, they should be named as ‘Sij’ (e.g. S11=…, S12=…). See examples below.
- Return type:
FourthOrderTensor
Examples
>>> from Elasticipy.FourthOrderTensor import StiffnessTensor
… StiffnessTensor.fromCrystalSymmetry(symmetry=’monoclinic’, diad=’y’, phase_name=’TiNi’, … C11=231, C12=127, C13=104, … C22=240, C23=131, C33=175, … C44=81, C55=11, C66=85, … C15=-18, C25=1, C35=-3, C46=3) Stiffness tensor (in Voigt notation) for TiNi: [[231. 127. 104. 0. -18. 0.]
[127. 240. 131. 0. 1. 0.] [104. 131. 175. 0. -3. 0.] [ 0. 0. 0. 81. 0. 3.] [-18. 1. -3. 0. 11. 0.] [ 0. 0. 0. 3. 0. 85.]]
Symmetry: monoclinic
>>> from Elasticipy.FourthOrderTensor import ComplianceTensor
>>> ComplianceTensor.fromCrystalSymmetry(symmetry='monoclinic', diad='y', phase_name='TiNi', ... S11=8, S12=-3, S13=-2, ... S22=8, S23=-5, S33=10, ... S44=12, S55=116, S66=12, ... S15=14, S25=-8, S35=0, S46=0) Compliance tensor (in Voigt notation) for TiNi: [[ 8. -3. -2. 0. 14. 0.] [ -3. 8. -5. 0. -8. 0.] [ -2. -5. 10. 0. 0. 0.] [ 0. 0. 0. 12. 0. 0.] [ 14. -8. 0. 0. 116. 0.] [ 0. 0. 0. 0. 0. 12.]] Symmetry: monoclinic
- full_tensor()[source]
Returns the full (unvoigted) tensor, as a [3, 3, 3, 3] array
- Returns:
Full tensor (4-index notation)
- Return type:
np.ndarray
- rotate(rotation)[source]
Apply a single rotation to a tensor, and return its component into the rotated frame.
- Parameters:
rotation (Rotation) – Rotation to apply
- Returns:
Rotated tensor
- Return type:
- tensor_name = 'Symmetric'
- voigt_map = array([[1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.]])