3.2. anisotropy.materials

The anisotropy.materials module provides a suite of standard elastic materials and means of interacting with them.

copyright

2021–2022, AnisotroPy developers.

license

GNU General Public License, Version 3 (https://www.gnu.org/licenses/gpl-3.0.html)

3.2.1. anisotropy.materials.core

Module for performing all things related to materials and their elastic properties. This includes the elastic stiffness and compliance tensors, various moduli, etc.

copyright

2021–2022, AnisotroPy developers.

license

GNU General Public License, Version 3 (https://www.gnu.org/licenses/gpl-3.0.html)

class anisotropy.materials.core.Material(C, rho)[source]

Bases: object

Small class to encapsulate information that defines a material with an elastic stiffness tensor, C, and density, rho, and a suite of useful functions to query its properties.

Within the linear elastic theory of continuum mechanics, seismic anisotropy enters the elastodynamic equations of motion through the fourth-order stiffness tensor, composed of 81 independent elastic moduli. This tensor formally relates the applied stress, σ_ij , to the resulting deformation of an elastic body, ε_kl, via Hooke’s law.

C

Stiffness tensor for the material, in GPa.

Type

array-like of float, shape(6, 6)

rho

Density of material, in g/cm^3.

Type

float

is_isotropic

Tests whether the material is isotropic.

Type

bool

lame_coefficients

Calculates Lame coefficients for the material.

Type

[float, float]

bulk_modulus

Calculates the bulk modulus, K, for the material.

Type

float

phase_velocities()[source]

Calculates the phase velocities for the material at requested azimuth/ inclination pairs.

group_velocities()[source]

Calculates the group velocities, which are the phase velocities projected onto the group velocity directions, for the material at requested azimuth/inclination pairs.

rotate()[source]

Arbitrarily rotates the materials stiffness tensor in 3 dimensions.

TO-DO
-----
- Provide methods to transform between the Voigt-form and full tensor

representations of the elasticity tensors

- Finish documentation
- Implement method to calculate the isotropic (symmetric) portion of a

arbitrarily anisotropic stiffness tensor

property bulk_modulus

Returns the bulk modulus for the material.

group_velocities(inclination, azimuth=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360]))[source]

Calculate the group velocities for the 6x6 elasticity matrix C along the direction (ψ, θ), in degrees, and return P-wave velocity Vp, and the fast and slow shear wave velocities, Vs1 and Vs2.

!! CURRENTLY APPEARS TO NOT BE WORKING !!

Parameters
  • inclination (list of float or float) – Inclination, θ, from the x1-x2 plane towards x3, in degrees.

  • azimuth (list of float or float, optional) – Azimuth, ψ, from x1 towards x2, in degrees.

Returns

  • gvp (list of float) – P-wave group velocity in km/s.

  • gvs1 (list of float) – Faster S-wave group velocity in km/s.

  • gvs2 (list of float) – Slower S-wave group velocity in km/s.

property is_isotropic

Tests whether the material is isotropic. Returns a boolean.

isotropic = array([[237.5533,  78.4733,  78.4733,   0.    ,   0.    ,   0.    ],        [ 78.4733, 237.5533,  78.4733,   0.    ,   0.    ,   0.    ],        [ 78.4733,  78.4733, 237.5533,   0.    ,   0.    ,   0.    ],        [  0.    ,   0.    ,   0.    ,  79.54  ,   0.    ,   0.    ],        [  0.    ,   0.    ,   0.    ,   0.    ,  79.54  ,   0.    ],        [  0.    ,   0.    ,   0.    ,   0.    ,   0.    ,  79.54  ]])
property lame_coefficients

Returns the Lame coefficients for the material.

phase_velocities(inclination, azimuth=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360]))[source]

Calculate the phase velocities for the 6x6 elasticity matrix C along the direction (ψ, θ), in degrees, and return P-wave velocity Vp, the fast and slow shear wave velocities, Vs1 and Vs2, the polarisation of the fast shear wave, pol, and the shear wave velocity anisotropy, swa.

Parameters
  • inclination (list of float or float) – Inclination, θ, from the x1-x2 plane towards x3, in degrees.

  • azimuth (list of float or float, optional) – Azimuth, ψ, from x1 towards x2, in degrees.

Returns

  • vp (list of float) – P-wave phase velocity in km/s.

  • vs1 (list of float) – Faster S-wave phase velocity in km/s.

  • vs2 (list of float) – Slower S-wave phase velocity in km/s.

  • φφ (list of float) – Polarisation direction of the faster S-wave.

  • shear_wave_anisotropy (list of float) – Calculated shear wave anisotropy.

Raises

ValueError – When vectors provided are not of equal length.

rotate(alpha, beta, gamma, order=[1, 2, 3], mode='extrinsic')[source]

Helper function to perform an arbitrary 3-D rotation of C.

anisotropy.materials.core.isotropic_C(vp=None, vs=None, rho=None, la=None, mu=None, K=None, G=None)[source]

Calculate the coefficients of the stiffness tensor expressed in the Voigt matrix form.

Voigt’s form does not preserve the sum of the squares, which in the case of Hooke’s law has geometric significance.

Parameters
  • vp (float, optional) – Isotropic P wave velocity. Units of km/s.

  • vs (float, optional) – Isotropic S wave velocity. Units of km/s.

  • rho (float, optional) – Bulk density of material. Units of g/cm^3

  • la (float, optional) – Lamé’s first parameter. Units of m^2/s^2.

  • mu (float, optional) – Lamé’s second parameter - the shear modulus.

  • K (float, optional) – Bulk modulus.

  • G (float, optional) – Shear modulus.

Returns

C – Isotropic elastic stiffness tensor in Voigt matrix form.

Return type

6x6 array of floats

anisotropy.materials.core.reuss_average(stiffness_tensors, volume_fractions)[source]

Calculates the Reuss average of a set material phases, described by their elastic stiffness tensors and densities, and constitutive phase volume fractions.

The Reuss average is defined as the inverse of the weighted arithmetic mean of elastic compliance tensors (i.e. the inverse of the elastic stiffness tensors), that is:

C_r = __________________1_________________

f1*1/C_1 + f2*1/C_2 + … + fn*1/C_n

For more information, read:

Hill, R., 1952. The elastic behaviour of a crystalline aggregate. Proceedings of the Physical Society. Section A, 65(5), p.349.

Parameters
  • stiffness_tensors (list of array-like of float, shape(n, 6, 6)) – Stiffness tensors of constitutive phases for which to calculate the Reuss average.

  • volume_fractions (list of float) – Fraction of each constitutive phase in the composite material.

Returns

C_r – Reuss average elastic stiffness tensor, C, for the composite material.

Return type

array-like of float, shape(6, 6)

anisotropy.materials.core.voigt_average(stiffness_tensors, volume_fractions)[source]

Calculates the Voigt average of a set material phases, described by their elastic stiffness tensors and densities, and constitutive phase volume fractions.

The Voigt average is defined as the weighted arithmetic mean of elastic stiffness tensors, that is:

C_v = f1*C_1 + f2*C_2 + … + fn*C_n

For more information, read:

Hill, R., 1952. The elastic behaviour of a crystalline aggregate. Proceedings of the Physical Society. Section A, 65(5), p.349.

Parameters
  • stiffness_tensors (list of array-like of float, shape(n, 6, 6)) – Stiffness tensors of constitutive phases for which to calculate the Reuss average.

  • volume_fractions (list of float) – Fraction of each constitutive phase in the composite material.

Returns

C_v – Voigt average elastic stiffness tensor, C, for the composite material.

Return type

array-like of float, shape(6, 6)

anisotropy.materials.core.voigt_reuss_hill_average(materials, volume_fractions)[source]

Calculates the Voigt-Reuss-Hill average of a set material phases, described by their elastic stiffness tensors and densities, and constitutive phase volume fractions.

This was defined as the arithmetic mean of the Voigt average (arithmetic mean of stiffness tensors weighted by volume fraction) and the Reuss average (arithmetic mean of compliance tensors weighted by volume fraction).

For more information, read:

Hill, R., 1952. The elastic behaviour of a crystalline aggregate. Proceedings of the Physical Society. Section A, 65(5), p.349.

Parameters
  • materials (list of anisotropy.Material) – Constitutive phases for which to calculate the Voigt-Reuss-Hill average.

  • volume_fractions (list of float) – Fraction of each constitutive phase in the composite material.

Returns

  • C_vrh (array-like of float, shape(6, 6)) – Voigt-Reuss-Hill average elastic stiffness tensor, C, for the composite material.

  • rho_average (float) – Density of composite material.

  • C_v (array-like of float, shape(6, 6)) – Voigt average elastic stiffness tensor, C, for the composite material.

  • C_r (array-like of float, shape(6, 6)) – Reuss average elastic stiffness tensor, C, for the composite material.

3.2.2. anisotropy.materials.database

Module containing a collection of published elastic material descriptions, in terms of elastic stiffness tensor, C, and bulk density, rho.

All values are reported in units of GPa and g/cm^3.

copyright

2021–2022, AnisotroPy developers.

license

GNU General Public License, Version 3 (https://www.gnu.org/licenses/gpl-3.0.html)

anisotropy.materials.database.load(material_id)[source]

Utility function that serves up a material based on a string identifier.

Parameters

material_id (str) – Unique material identifier.

Returns

material – Material loaded from database.

Return type

anisotropy.Material object