Elasticipy.FourthOrderTensor module

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

Bases: StiffnessTensor

Class for manipulating compliance tensors

Construct of stiffness tensor from a (6,6) matrix.

The input matrix must be symmetric, otherwise an error is thrown (except if check_symmetry==False, see below)

Parameters:
  • M (np.ndarray) – (6,6) matrix corresponding to the stiffness tensor, written using the Voigt notation

  • phase_name (str, default None) – Name to display

  • symmetry (str, default Triclinic) – Name of the crystal’s symmetry

  • check_symmetry (bool, optional) – Whether to check or not that the input matrix is symmetric.

  • check_positive_definite (bool, optional) – Whether to check or not that the input matrix is definite positive

C11_C12_factor = 2.0[source]
C46_C56_factor = 2.0[source]
Hill_average()[source]

Compute the (Voigt-Reuss-)Hill 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-Reuss-Hill average of tensor

Return type:

StiffnessTensor

See also

Voigt_average

compute the Voigt average

Reuss_average

compute the Reuss average

average

generic function for calling either the Voigt, Reuss or Hill 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

average

generic function for calling either the Voigt, Reuss or 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

average

generic function for calling either the Voigt, Reuss or Hill average

component_prefix = 'S'[source]
inv()[source]

Compute the reciprocal stiffness tensor

Returns:

Reciprocal tensor

Return type:

StiffnessTensor

classmethod isotropic(E=None, nu=None, lame1=None, lame2=None, phase_name=None)[source]

Create an isotropic stiffness tensor from two elasticity coefficients, namely: E, nu, lame1, or lame2. Exactly two of these coefficients must be provided.

Parameters:
  • E (float, None) – Young modulus

  • nu (float, None) – Poisson ratio

  • lame1 (float, None) – First Lamé coefficient

  • lame2 (float, None) – Second Lamé coefficient

  • phase_name (str, None) – Name to print

Return type:

Corresponding isotropic stiffness tensor

See also

transverse_isotropic

create a transverse-isotropic tensor

Examples

On can check that the shear modulus for steel is around 82 GPa:

>>> from Elasticipy.FourthOrderTensor import StiffnessTensor
>>> C=StiffnessTensor.isotropic(E=210e3, nu=0.28)
>>> C.shear_modulus
Hyperspherical function
Min=82031.24999999991, Max=82031.24999999997
classmethod orthotropic(*args, **kwargs)[source]

Create a stiffness tensor corresponding to orthotropic symmetry, given the engineering constants.

Parameters:
  • Ex (float) – Young modulus along the x axis

  • Ey (float) – Young modulus along the y axis

  • Ez (float) – Young modulus along the z axis

  • nu_yx (float) – Poisson ratio between x and y axes

  • nu_zx (float) – Poisson ratio between x and z axes

  • nu_zy (float) – Poisson ratio between y and z axes

  • Gxy (float) – Shear modulus in the x-y plane

  • Gxz (float) – Shear modulus in the x-z plane

  • Gyz (float) – Shear modulus in the y-z plane

  • kwargs (dict, optional) – Keyword arguments to pass to the StiffnessTensor constructor

Return type:

StiffnessTensor

See also

transverse_isotropic

create a stiffness tensor for transverse-isotropic symmetry

tensor_name = 'Compliance'[source]
to_pymatgen()[source]

Convert the compliance tensor (from Elasticipy) to Python Materials Genomics (Pymatgen) format.

Returns:

Compliance tensor for pymatgen

Return type:

pymatgen.analysis.elasticity.elastic.Compliance

classmethod transverse_isotropic(*args, **kwargs)[source]

Create a stiffness tensor corresponding to the transverse isotropic symmetry, given the engineering constants.

Parameters:
  • Ex (float) – Young modulus along the x axis

  • Ez (float) – Young modulus along the y axis

  • nu_yx (float) – Poisson ratio between x and y axes

  • nu_zx (float) – Poisson ratio between x and z axes

  • Gxz (float) – Shear modulus in the x-z plane

  • kwargs (dict) – Keyword arguments to pass to the StiffnessTensor constructor

Return type:

StiffnessTensor

See also

orthotropic

create a stiffness tensor for orthotropic symmetry

property universal_anisotropy[source]

Compute the universal anisotropy factor.

It is actually an alias for inv().universal_anisotropy.

Returns:

Universal anisotropy factor

Return type:

float

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.]])[source]
classmethod weighted_average(*args)[source]

Compute the weighted average of a list of stiffness tensors, with respect to a given method (Voigt, Reuss or Hill).

Parameters:
  • Cs (list of StiffnessTensor or list of ComplianceTensor or tuple of StiffnessTensor or tuple of ComplianceTensor) – Series of tensors to compute the average from

  • volume_fractions (iterable of floats) – Volume fractions of each phase

  • method (str, {'Voigt', 'Reuss', 'Hill'}) – Method to use. It can be ‘Voigt’, ‘Reuss’, or ‘Hill’.

Returns:

Average tensor

Return type:

StiffnessTensor

class Elasticipy.FourthOrderTensor.StiffnessTensor(S, check_positive_definite=True, **kwargs)[source]

Bases: SymmetricTensor

Class for manipulating fourth-order stiffness tensors.

Construct of stiffness tensor from a (6,6) matrix.

The input matrix must be symmetric, otherwise an error is thrown (except if check_symmetry==False, see below)

Parameters:
  • M (np.ndarray) – (6,6) matrix corresponding to the stiffness tensor, written using the Voigt notation

  • phase_name (str, default None) – Name to display

  • symmetry (str, default Triclinic) – Name of the crystal’s symmetry

  • check_symmetry (bool, optional) – Whether to check or not that the input matrix is symmetric.

  • check_positive_definite (bool, optional) – Whether to check or not that the input matrix is definite positive

C11_C12_factor = 0.5[source]
Christoffel_tensor(u)[source]

Create the Christoffel tensor along a given direction, or set or directions.

Parameters:

u (list or np.ndarray) – 3D direction(s) to compute the Christoffel tensor along with

Returns:

Gamma – Array of Christoffel tensor(s). if u is a list of directions, Gamma[i] is the Christoffel tensor for direction u[i].

Return type:

np.ndarray

See also

wave_velocity

computes the p- and s-wave velocities.

Notes

For a given stiffness tensor C and a given unit vector u, the Christoffel tensor is defined as [2] :

\[M_{ij} = C_{iklj}.u_k.u_l\]
Hill_average()[source]

Compute the (Voigt-Reuss-)Hill 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-Reuss-Hill average of tensor

Return type:

StiffnessTensor

See also

Voigt_average

compute the Voigt average

Reuss_average

compute the Reuss average

average

generic function for calling either the Voigt, Reuss or Hill average

property Poisson_ratio[source]

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

average

generic function for calling either the Voigt, Reuss or 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

average

generic function for calling either the Voigt, Reuss or Hill average

property Young_modulus[source]

Directional Young’s modulus

Returns:

Young’s modulus

Return type:

SphericalFunction

average(method)[source]

Compute either the Voigt, Reuss, or Hill average of the stiffness tensor.

This function is just a shortcut for Voigt_average(), Reuss_average(), or Hill_average() and Hill_average().

Parameters:
  • method (str {'Voigt', 'Reuss', 'Hill'})

  • average. (Method to use to compute the)

Return type:

StiffnessTensor

See also

Voigt_average

compute the Voigt average

Reuss_average

compute the Reuss average

Hill_average

compute the Voigt-Reuss-Hill average

classmethod from_MP(ids, api_key=None)[source]

Import stiffness tensor(s) from the Materials Project API, given their material ids.

You need to register to https://materialsproject.org first to get an API key. This key can be explicitly passed as an argument (see below), or provided as an environment variable named MP_API_KEY.

Parameters:
  • ids (str or list of str) – ID(s) of the material to import (e.g. “mp-1048”)

  • api_key (str, optional) – API key to the Materials Project API. If not provided, it should be available as the API_KEY environment variable.

Returns:

If one of the requested material ids was not found, the corresponding value in the list will be None.

Return type:

list of StiffnessTensor

inv()[source]

Compute the reciprocal compliance tensor

Returns:

Reciprocal tensor

Return type:

ComplianceTensor

classmethod isotropic(E=None, nu=None, lame1=None, lame2=None, phase_name=None)[source]

Create an isotropic stiffness tensor from two elasticity coefficients, namely: E, nu, lame1, or lame2. Exactly two of these coefficients must be provided.

Parameters:
  • E (float, None) – Young modulus

  • nu (float, None) – Poisson ratio

  • lame1 (float, None) – First Lamé coefficient

  • lame2 (float, None) – Second Lamé coefficient

  • phase_name (str, None) – Name to print

Return type:

Corresponding isotropic stiffness tensor

See also

transverse_isotropic

create a transverse-isotropic tensor

Examples

On can check that the shear modulus for steel is around 82 GPa:

>>> from Elasticipy.FourthOrderTensor import StiffnessTensor
>>> C=StiffnessTensor.isotropic(E=210e3, nu=0.28)
>>> C.shear_modulus
Hyperspherical function
Min=82031.24999999991, Max=82031.24999999997
classmethod orthotropic(*, Ex, Ey, Ez, nu_yx, nu_zx, nu_zy, Gxy, Gxz, Gyz, **kwargs)[source]

Create a stiffness tensor corresponding to orthotropic symmetry, given the engineering constants.

Parameters:
  • Ex (float) – Young modulus along the x axis

  • Ey (float) – Young modulus along the y axis

  • Ez (float) – Young modulus along the z axis

  • nu_yx (float) – Poisson ratio between x and y axes

  • nu_zx (float) – Poisson ratio between x and z axes

  • nu_zy (float) – Poisson ratio between y and z axes

  • Gxy (float) – Shear modulus in the x-y plane

  • Gxz (float) – Shear modulus in the x-z plane

  • Gyz (float) – Shear modulus in the y-z plane

  • kwargs (dict, optional) – Keyword arguments to pass to the StiffnessTensor constructor

Return type:

StiffnessTensor

See also

transverse_isotropic

create a stiffness tensor for transverse-isotropic symmetry

property shear_modulus[source]

Directional shear modulus

Returns:

Shear modulus

Return type:

HyperSphericalFunction

tensor_name = 'Stiffness'[source]
to_pymatgen()[source]

Convert the stiffness tensor (from Elasticipy) to Python Materials Genomics (Pymatgen) format.

Returns:

Stiffness tensor for pymatgen

Return type:

pymatgen.analysis.elasticity.elastic.ElasticTensor

classmethod transverse_isotropic(*, Ex, Ez, nu_yx, nu_zx, Gxz, **kwargs)[source]

Create a stiffness tensor corresponding to the transverse isotropic symmetry, given the engineering constants.

Parameters:
  • Ex (float) – Young modulus along the x axis

  • Ez (float) – Young modulus along the y axis

  • nu_yx (float) – Poisson ratio between x and y axes

  • nu_zx (float) – Poisson ratio between x and z axes

  • Gxz (float) – Shear modulus in the x-z plane

  • kwargs (dict) – Keyword arguments to pass to the StiffnessTensor constructor

Return type:

StiffnessTensor

See also

orthotropic

create a stiffness tensor for orthotropic symmetry

property universal_anisotropy[source]

Compute the universal anisotropy factor.

The larger the value, the more likely the material will behave in an anisotropic way.

Returns:

The universal anisotropy factor.

Return type:

float

Notes

The universal anisotropy factor is defined as [3]:

\[5\frac{G_v}{G_r} + \frac{K_v}{K_r} - 6\]

References

wave_velocity(rho)[source]

Compute the wave velocities, given the mass density.

Parameters:

rho (float) – mass density. Its unit must be consistent with that of the stiffness tensor. See notes for hints.

See also

ChristoffelTensor

Computes the Christoffel tensor along a given direction

Returns:

  • c_p (SphericalFunction) – Velocity of the primary (compressive) wave

  • c_s1 (SphericalFunction) – Velocity of the fast secondary (shear) wave

  • c_s2 (SphericalFunction) – Velocity of the slow secondary (shear) wave

Notes

The estimation of the wave velocities is made by finding the eigenvalues of the Christoffel tensor [2].

One should double-check the units. The table below provides hints about the unit you get, depending on the units you use for stiffness and the mass density:

Stiffness

Mass density

Velocities

Notes

Pa (N/m²)

kg/m³

m/s

SI units

GPa (10⁹ Pa)

kg/dm³

km/s

Conversion factor

GPa (10³ N/mm²)

kg/mm³

m/s

Consistent units

MPa (10⁶ Pa)

kg/m³

km/s

Conversion factor

MPa (10³ N/mm²)

g/mm³

m/s

Consistent units

References

classmethod weighted_average(Cs, volume_fractions, method)[source]

Compute the weighted average of a list of stiffness tensors, with respect to a given method (Voigt, Reuss or Hill).

Parameters:
  • Cs (list of StiffnessTensor or list of ComplianceTensor or tuple of StiffnessTensor or tuple of ComplianceTensor) – Series of tensors to compute the average from

  • volume_fractions (iterable of floats) – Volume fractions of each phase

  • method (str, {'Voigt', 'Reuss', 'Hill'}) – Method to use. It can be ‘Voigt’, ‘Reuss’, or ‘Hill’.

Returns:

Average tensor

Return type:

StiffnessTensor

class Elasticipy.FourthOrderTensor.SymmetricTensor(M, phase_name=None, symmetry='Triclinic', orientations=None, check_symmetry=True, check_positive_definite=False)[source]

Bases: object

Template class for manipulating symmetric fourth-order tensors.

matrix[source]

(6,6) matrix gathering all the components of the tensor, using the Voigt notation.

Type:

np.ndarray

symmetry[source]

Symmetry of the tensor

Type:

str

Construct of stiffness tensor from a (6,6) matrix.

The input matrix must be symmetric, otherwise an error is thrown (except if check_symmetry==False, see below)

Parameters:
  • M (np.ndarray) – (6,6) matrix corresponding to the stiffness tensor, written using the Voigt notation

  • phase_name (str, default None) – Name to display

  • symmetry (str, default Triclinic) – Name of the crystal’s symmetry

  • check_symmetry (bool, optional) – Whether to check or not that the input matrix is symmetric.

  • check_positive_definite (bool, optional) – Whether to check or not that the input matrix is definite positive

C11_C12_factor = 0.5[source]
C46_C56_factor = 1.0[source]
component_prefix = 'C'[source]
classmethod cubic(*, C11=0.0, C12=0.0, C44=0.0, phase_name=None)[source]

Create a fourth-order tensor from cubic symmetry.

Parameters:
  • C11 (float)

  • C12 (float)

  • C44 (float)

  • phase_name (str, optional) – Phase name to display

Return type:

StiffnessTensor

See also

hexagonal

create a tensor from hexagonal symmetry

orthorhombic

create a tensor from orthorhombic symmetry

classmethod fromCrystalSymmetry(symmetry='Triclinic', point_group=None, diad='y', phase_name=None, prefix=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

  • prefix (str, default None) – Define the prefix to use when providing the components. By default, it is ‘C’ for stiffness tensors, ‘S’ for compliance.

  • 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. The behaviour can be overriten with the prefix option (see above)

Return type:

FourthOrderTensor

See also

StiffnessTensor.isotropic

creates an isotropic stiffness tensor from two paremeters (e.g. E and v).

Notes

The relationships between the tensor’s components depend on the crystallogrpahic symmetry [1].

References

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
classmethod from_txt_file(filename)[source]

Load the tensor from a text file.

The two first lines can have data about phase name and symmetry, but this is not mandatory.

Parameters:

filename (str) – Filename to load the tensor from.

Returns:

The reconstructed tensor read from the file.

Return type:

SymmetricTensor

See also

save_to_txt

create a tensor from text file

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

classmethod hexagonal(*, C11=0.0, C12=0.0, C13=0.0, C33=0.0, C44=0.0, phase_name=None)[source]

Create a fourth-order tensor from hexagonal symmetry.

Parameters:
  • C11 (float) – Components of the tensor, using the Voigt notation

  • C12 (float) – Components of the tensor, using the Voigt notation

  • C13 (float) – Components of the tensor, using the Voigt notation

  • C33 (float) – Components of the tensor, using the Voigt notation

  • C44 (float) – Components of the tensor, using the Voigt notation

  • phase_name (str, optional) – Phase name to display

Return type:

FourthOrderTensor

See also

transverse_isotropic

creates a transverse-isotropic tensor from engineering parameters

cubic

create a tensor from cubic symmetry

tetragonal

create a tensor from tetragonal symmetry

classmethod monoclinic(*, C11=0.0, C12=0.0, C13=0.0, C22=0.0, C23=0.0, C33=0.0, C44=0.0, C55=0.0, C66=0.0, C15=None, C25=None, C35=None, C46=None, C16=None, C26=None, C36=None, C45=None, phase_name=None)[source]

Create a fourth-order tensor from monoclinic symmetry. It automatically detects whether the components are given according to the Y or Z diad, depending on the input arguments.

For Diad || y, C15, C25, C35 and C46 must be provided. For Diad || z, C16, C26, C36 and C45 must be provided.

Parameters:
  • C11 (float) – Components of the tensor, using the Voigt notation

  • C12 (float) – Components of the tensor, using the Voigt notation

  • C13 (float) – Components of the tensor, using the Voigt notation

  • C22 (float) – Components of the tensor, using the Voigt notation

  • C23 (float) – Components of the tensor, using the Voigt notation

  • C33 (float) – Components of the tensor, using the Voigt notation

  • C44 (float) – Components of the tensor, using the Voigt notation

  • C55 (float) – Components of the tensor, using the Voigt notation

  • C66 (float) – Components of the tensor, using the Voigt notation

  • C15 (float, optional) – C15 component of the tensor (if Diad || y)

  • C25 (float, optional) – C25 component of the tensor (if Diad || y)

  • C35 (float, optional) – C35 component of the tensor (if Diad || y)

  • C46 (float, optional) – C46 component of the tensor (if Diad || y)

  • C16 (float, optional) – C16 component of the tensor (if Diad || z)

  • C26 (float, optional) – C26 component of the tensor (if Diad || z)

  • C36 (float, optional) – C36 component of the tensor (if Diad || z)

  • C45 (float, optional) – C45 component of the tensor (if Diad || z)

  • phase_name (str, optional) – Name to display

Return type:

FourthOrderTensor

See also

triclinic

create a tensor from triclinic symmetry

orthorhombic

create a tensor from orthorhombic symmetry

classmethod orthorhombic(*, C11=0.0, C12=0.0, C13=0.0, C22=0.0, C23=0.0, C33=0.0, C44=0.0, C55=0.0, C66=0.0, phase_name=None)[source]

Create a fourth-order tensor from orthorhombic symmetry.

Parameters:
  • C11 (float) – Components of the tensor, using the Voigt notation

  • C12 (float) – Components of the tensor, using the Voigt notation

  • C13 (float) – Components of the tensor, using the Voigt notation

  • C22 (float) – Components of the tensor, using the Voigt notation

  • C23 (float) – Components of the tensor, using the Voigt notation

  • C33 (float) – Components of the tensor, using the Voigt notation

  • C44 (float) – Components of the tensor, using the Voigt notation

  • C55 (float) – Components of the tensor, using the Voigt notation

  • C66 (float) – Components of the tensor, using the Voigt notation

  • phase_name (str, optional) – Phase name to display

Return type:

FourthOrderTensor

See also

monoclinic

create a tensor from monoclinic symmetry

orthorhombic

create a tensor from orthorhombic symmetry

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

save_to_txt(filename, matrix_only=False)[source]

Save the tensor to a text file.

Parameters:
  • filename (str) – Filename to save the tensor to.

  • matrix_only (bool, False) – If true, only the components of tje stiffness tensor is saved (no data about phase nor symmetry)

See also

from_txt_file

create a tensor from text file

tensor_name = 'Symmetric'[source]
classmethod tetragonal(*, C11=0.0, C12=0.0, C13=0.0, C33=0.0, C44=0.0, C16=0.0, C66=0.0, phase_name=None)[source]

Create a fourth-order tensor from tetragonal symmetry.

Parameters:
  • C11 (float) – Components of the tensor, using the Voigt notation

  • C12 (float) – Components of the tensor, using the Voigt notation

  • C13 (float) – Components of the tensor, using the Voigt notation

  • C33 (float) – Components of the tensor, using the Voigt notation

  • C44 (float) – Components of the tensor, using the Voigt notation

  • C66 (float) – Components of the tensor, using the Voigt notation

  • C16 (float, optional) – C16 component in Voigt notation (for point groups 4, -4 and 4/m only)

  • phase_name (str, optional) – Phase name to display

Return type:

FourthOrderTensor

See also

trigonal

create a tensor from trigonal symmetry

orthorhombic

create a tensor from orthorhombic symmetry

classmethod triclinic(C11=0.0, C12=0.0, C13=0.0, C14=0.0, C15=0.0, C16=0.0, C22=0.0, C23=0.0, C24=0.0, C25=0.0, C26=0.0, C33=0.0, C34=0.0, C35=0.0, C36=0.0, C44=0.0, C45=0.0, C46=0.0, C55=0.0, C56=0.0, C66=0.0, phase_name=None)[source]
Parameters:
  • C11 (float) – Components of the tensor

  • C12 (float) – Components of the tensor

  • C13 (float) – Components of the tensor

  • C14 (float) – Components of the tensor

  • C15 (float) – Components of the tensor

  • C16 (float) – Components of the tensor

  • C22 (float) – Components of the tensor

  • C23 (float) – Components of the tensor

  • C24 (float) – Components of the tensor

  • C25 (float) – Components of the tensor

  • C26 (float) – Components of the tensor

  • C33 (float) – Components of the tensor

  • C34 (float) – Components of the tensor

  • C35 (float) – Components of the tensor

  • C36 (float) – Components of the tensor

  • C44 (float) – Components of the tensor

  • C45 (float) – Components of the tensor

  • C46 (float) – Components of the tensor

  • C55 (float) – Components of the tensor

  • C56 (float) – Components of the tensor

  • C66 (float) – Components of the tensor

  • phase_name (str, optional) – Name to display

Return type:

FourthOrderTensor

See also

monoclinic

create a tensor from monoclinic symmetry

orthorhombic

create a tensor from orthorhombic symmetry

classmethod trigonal(*, C11=0.0, C12=0.0, C13=0.0, C14=0.0, C33=0.0, C44=0.0, C15=0.0, phase_name=None)[source]

Create a fourth-order tensor from trigonal symmetry.

Parameters:
  • C11 (float) – Components of the tensor, using the Voigt notation

  • C12 (float) – Components of the tensor, using the Voigt notation

  • C13 (float) – Components of the tensor, using the Voigt notation

  • C14 (float) – Components of the tensor, using the Voigt notation

  • C33 (float) – Components of the tensor, using the Voigt notation

  • C44 (float) – Components of the tensor, using the Voigt notation

  • C15 (float, optional) – C15 component of the tensor, only used for point groups 3 and -3.

  • phase_name (str, optional) – Phase name to display

Return type:

FourthOrderTensor

See also

tetragonal

create a tensor from tetragonal symmetry

orthorhombic

create a tensor from orthorhombic symmetry

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.]])[source]
Elasticipy.FourthOrderTensor.unvoigt_index(i)[source]

Translate the one-index notation to two-index notation

Parameters:

i (int or np.ndarray) – Index to translate

Elasticipy.FourthOrderTensor.voigt_indices(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