Elasticipy.FourthOrderTensor module

class Elasticipy.FourthOrderTensor.ComplianceTensor(C, **kwargs)[source]

Bases: StiffnessTensor

Class 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:

StiffnessTensor

See also

Voigt_average

compute the Voigt average

Reuss_average

compute 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:

StiffnessTensor

See also

Voigt_average

compute the Voigt average

Hill_average

compute 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:

StiffnessTensor

See also

Reuss_average

compute the Reuss average

Hill_average

compute the Voigt-Reuss-Hill average

component_prefix = 'S'
inv()[source]

Compute the reciprocal stiffness tensor

Returns:

Reciprocal tensor

Return type:

StiffnessTensor

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: SymmetricTensor

Class 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:

StiffnessTensor

See also

Voigt_average

compute the Voigt average

Reuss_average

compute the Reuss average

property Poisson_ratio

Directional Poisson’s ratio

Returns:

Poisson’s ratio

Return type:

HyperSphericalFunction

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:

StiffnessTensor

See also

Voigt_average

compute the Voigt average

Hill_average

compute 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:

StiffnessTensor

See also

Reuss_average

compute the Reuss average

Hill_average

compute the Voigt-Reuss-Hill average

property Young_modulus

Directional Young’s modulus

Returns:

Young’s modulus

Return type:

SphericalFunction

inv()[source]

Compute the reciprocal compliance tensor

Returns:

Reciprocal tensor

Return type:

ComplianceTensor

property shear_modulus

Directional shear modulus

Returns:

Shear modulus

Return type:

HyperSphericalFunction

tensor_name = 'Stiffness'
class Elasticipy.FourthOrderTensor.SymmetricTensor(M, phase_name='', symmetry='Triclinic', orientations=None)[source]

Bases: object

Template 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:

SymmetricTensor

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.]])
Elasticipy.FourthOrderTensor.unvoigt(i)[source]
Elasticipy.FourthOrderTensor.voigt(i, j)[source]

Translate the two-index notation to one-index notation

Parameters:
  • i (int or np.ndarray) – First index

  • j (int or np.ndarray) – Second index

Return type:

Index in the vector of length 6