Skip to content

Structured tensors — isotropic ​

Compact storage for isotropic tensors, in arbitrary dimension. Theory: Isotropic tensors; usage: Structured tensors.

TensND.TensISO Type
julia
TensISO{order,dim,T,N}

Isotropic tensor stored as N scalars instead of dim^order components, in arbitrary dimension.

ParametrizationRoleInvariance groupStored coefficients
TensISO{2, dim, T, 1}2nd-order isotropicO(dim)data = (λ,): λ 𝟏
TensISO{4, dim, T, 2}4th-order isotropicO(dim)data = (α, β): α 𝕁 + β 𝕂

with 𝕁 = (𝟏⊗𝟏)/dim the spherical projector and 𝕂 = 𝕀 − 𝕁 the deviatoric one. In 3-D elasticity α = 3k and β = 2μ.

Because 𝕁 and 𝕂 are complementary orthogonal projectors, the algebra is that of a pair of independent scalars: products multiply them termwise and inverses take their reciprocals, both in closed form and both staying in the type; an isotropic tensor is its own transpose and major-symmetric. It has no orientation, so it needs none stored. As TensTI and TensOrtho, the type carries its order and number of coefficients.

Constructors

TensISO{dim}(λ) and TensISO{dim}(α, β), plus the named ones tens_Id2, tens_Id4, tens_J4, tens_K4, and iso_projectors.

Examples

julia
julia> ℂ = TensISO{3}(3 * 20.0, 2 * 8.0);

julia> get_data(inv(ℂ))
(0.016666666666666666, 0.0625)

julia> typeof(inv(ℂ)) === typeof(ℂ)
true

See also Isotropic tensors, Structured tensors.

TensND.tens_Id2 Function
julia
tens_Id2(::Val{dim}, ::Val{T}) where {dim,T<:Number}

Identity tensor of second order 𝟏ᵢⱼ = δᵢⱼ = 1 if i=j otherwise 0

Examples

julia
julia> 𝟏 = t𝟏() ; mandel(𝟏)
6-element Vector{Sym}:
 1
 1
 1
 0
 0
 0

julia> 𝟏.data
3×3 SymmetricTensor{2, 3, Sym, 6}:
 1  0  0
 0  1  0
 0  0  1
TensND.tens_Id4 Function
julia
tens_Id4(::Val{dim} = Val(3), ::Val{T} = Val(Sym))

Symmetric identity tensor of fourth order 𝕀 = 𝟏 ⊠ˢ 𝟏 i.e. (𝕀)ᵢⱼₖₗ = (δᵢₖδⱼₗ+δᵢₗδⱼₖ)/2

Examples

julia
julia> 𝕀 = t𝕀() ; mandel(𝕀)
6×6 Matrix{Sym}:
 1  0  0  0  0  0
 0  1  0  0  0  0
 0  0  1  0  0  0
 0  0  0  1  0  0
 0  0  0  0  1  0
 0  0  0  0  0  1
TensND.tens_J4 Function
julia
tens_J4(::Val{dim} = Val(3), ::Val{T} = Val(Sym))

Spherical projector of fourth order 𝕁 = (𝟏 ⊗ 𝟏) / dim i.e. (𝕁)ᵢⱼₖₗ = δᵢⱼδₖₗ/dim

Examples

julia
julia> 𝕁 = t𝕁() ; mandel(𝕁)
6×6 Matrix{Sym}:
 1/3  1/3  1/3  0  0  0
 1/3  1/3  1/3  0  0  0
 1/3  1/3  1/3  0  0  0
   0    0    0  0  0  0
   0    0    0  0  0  0
   0    0    0  0  0  0
TensND.tens_K4 Function
julia
tens_K4(::Val{dim} = Val(3), ::Val{T} = Val(Sym))

Deviatoric projector of fourth order 𝕂 = 𝕀 - 𝕁 i.e. (𝕂)ᵢⱼₖₗ = (δᵢₖδⱼₗ+δᵢₗδⱼₖ)/2 - δᵢⱼδₖₗ/dim

Examples

julia
julia> 𝕂 = t𝕂() ; mandel(𝕂)
6×6 Matrix{Sym}:
  2/3  -1/3  -1/3  0  0  0
 -1/3   2/3  -1/3  0  0  0
 -1/3  -1/3   2/3  0  0  0
    0     0     0  1  0  0
    0     0     0  0  1  0
    0     0     0  0  0  1
TensND.iso_projectors Function
julia
iso_projectors(::Val{dim} = Val(3), ::Val{T} = Val(Sym))

Return the three fourth-order isotropic tensors (𝕀, 𝕁, 𝕂) — the symmetric identity, spherical projector, and deviatoric projector. Any isotropic 4th-order tensor can be written as α·𝕁 + β·𝕂.

Examples

julia
julia> 𝕀, 𝕁, 𝕂 = iso_projectors();

julia> 𝕁 + 𝕂 == 𝕀
true

See also tens_Id4, tens_J4, tens_K4.

Blocks of a symmetry class ​

The small matrices whose products and inverses are those of the tensors of a class; usage on Blocks: a class as a sum of small matrices.

TensND.symmetry_blocks Function
julia
symmetry_blocks(A) -> Tuple of SMatrix

The blocks of A in the matrix algebra of its symmetry class: the small matrices whose products and inverses, block by block, are those of the tensors,

classorder 4order 2
TensISO,
TensCubic, , —
TensTI, , ,
TensOrthothe normal   block, , , , ,

The frame (axis, material frame) is not part of the blocks: from_symmetry_blocks takes it from a tensor of the class.

julia
julia> A = TensTI{4}(4.0, 3.0, 1.0, 1.0, 2.0, 5.0, (0.0, 0.0, 1.0));

julia> symmetry_blocks(A)[1]
2×2 StaticArraysCore.SMatrix{2, 2, Float64, 4} with indices SOneTo(2)×SOneTo(2):
 4.0  1.0
 1.0  3.0
julia
symmetry_blocks(A, M::AbstractMatrix) -> Tuple of SMatrix

The blocks, in the class and frame of A, of the matrix M: a   Kelvin-Mandel matrix at order 4, a   matrix of components at order 2, in the canonical basis. Each block is read on its first copy in ; when M belongs to the class, symmetry_matrix(A, symmetry_blocks(A, M)) ≈ M, and the blocks are those of the tensor M stands for.

TensND.from_symmetry_blocks Function
julia
from_symmetry_blocks(A, blocks) -> AbstractTens

The tensor of the class and frame of A whose blocks are blocks: the inverse of symmetry_blocks. A product of two symmetric tensors of a class need not be symmetric, so a transversely isotropic or orthotropic result takes the general shape of its class (six Walpole coefficients, twelve orthotropic constants).

TensND.symmetry_basis Function
julia
symmetry_basis(A) -> SMatrix

The orthonormal basis, as columns, in which the matrix of a member of the class and frame of A is block diagonal: Kelvin-Mandel vectors ( ) at order 4, vectors ( ) at order 2. Each block of symmetry_blocks sits on the diagonal of at the positions symmetry_layout lists, once per copy.

classcolumns (in the material frame)
ISO, CUBICthe spherical direction, the two normal deviators, the three shears
TI about axial, transverse spherical, the two in-plane deviators, the two out-of-plane shears
ORTHOthe frame's normal and shear directions
TensND.symmetry_layout Function
julia
symmetry_layout(A) -> Tuple

For each block of symmetry_blocks(A), the index sets of its copies on the diagonal of , = symmetry_basis(A): the isotropic shear modulus sits on five, the transverse shear on two, and so on.

TensND.symmetry_matrix Function
julia
symmetry_matrix(A, blocks) -> SMatrix

The matrix (Kelvin-Mandel at order 4, of components at order 2, in the canonical basis) of the member of the class and frame of A whose blocks are blocks: the inverse of symmetry_blocks(A, M) on the class.

Isotropic elastic moduli ​

The stiffness and the compliance from any pair of the six moduli, every modulus read from either (role = :stiffness or :compliance), and plane strain and plane stress are explained on Elastic moduli.

TensND.iso_stiffness Function
julia
iso_stiffness(k, μ) → TensISO{4,3}
iso_stiffness(Val(dim), k, μ) → TensISO{4,dim}

Isotropic stiffness       from the bulk modulus k and the shear modulus μ, in dimension (3 by default; in 2-D, k is the in-plane bulk modulus   of the plane-strain stiffness); the reciprocal of bulk_shear. The compliance is iso_compliance(k, μ).

iso_stiffness_bulk_shear, iso_stiffness_k_mu and iso_stiffness_k_μ are the same function. The stiffness from any other pair of moduli is iso_stiffness_<pair>: see iso_stiffness_young_poisson.

TensND.iso_stiffness_bulk_young Function
julia
iso_stiffness_bulk_young(a, b) → TensISO{4,3}
iso_stiffness_bulk_young(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its bulk and young moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_bulk_lame Function
julia
iso_stiffness_bulk_lame(a, b) → TensISO{4,3}
iso_stiffness_bulk_lame(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its bulk and lame moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_bulk_poisson Function
julia
iso_stiffness_bulk_poisson(a, b) → TensISO{4,3}
iso_stiffness_bulk_poisson(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its bulk and poisson moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_bulk_pwave Function
julia
iso_stiffness_bulk_pwave(a, b) → TensISO{4,3}
iso_stiffness_bulk_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its bulk and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_young_lame Function
julia
iso_stiffness_young_lame(a, b) → TensISO{4,3}
iso_stiffness_young_lame(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its young and lame moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_young_shear Function
julia
iso_stiffness_young_shear(a, b) → TensISO{4,3}
iso_stiffness_young_shear(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its young and shear moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_young_poisson Function
julia
iso_stiffness_young_poisson(E, ν) → TensISO{4,3}
iso_stiffness_young_poisson(Val(dim), E, ν) → TensISO{4,dim}

Isotropic stiffness from Young's modulus and Poisson's ratio,    and   ; the reciprocal of young_poisson. With Val(2), the plane-strain stiffness of that material.

The stiffness is built in the same way from any pair of the six moduli, named in the order bulk k, Young E, Lamé λ, shear μ, Poisson ν, P-wave M, and the compliance likewise by iso_compliance_<pair>, written directly (       from ):

pairstiffnesscompliancealiases (iso_stiffness_ or iso_compliance_ then)
iso_stiffness_bulk_youngiso_compliance_bulk_youngk_E
iso_stiffness_bulk_lameiso_compliance_bulk_lamek_lambda, k_λ
iso_stiffness, iso_stiffness_bulk_sheariso_compliance, iso_compliance_bulk_sheark_mu, k_μ
iso_stiffness_bulk_poissoniso_compliance_bulk_poissonk_nu, k_ν
iso_stiffness_bulk_pwaveiso_compliance_bulk_pwave
iso_stiffness_young_lameiso_compliance_young_lameE_lambda, E_λ
iso_stiffness_young_sheariso_compliance_young_shearE_mu, E_μ
iso_stiffness_young_poissoniso_compliance_young_poissonE_nu, E_ν
iso_stiffness_young_pwaveiso_compliance_young_pwave
iso_stiffness_lame_sheariso_compliance_lame_shearlambda_mu, λ_μ
iso_stiffness_lame_poissoniso_compliance_lame_poissonlambda_nu, λ_ν
iso_stiffness_lame_pwaveiso_compliance_lame_pwave
iso_stiffness_shear_poissoniso_compliance_shear_poissonmu_nu, μ_ν
iso_stiffness_shear_pwaveiso_compliance_shear_pwave
iso_stiffness_poisson_pwaveiso_compliance_poisson_pwave

The pair does not determine at  , where   too. Each takes the dimension as an optional leading Val(2) or Val(3). The pairs with the P-wave modulus have no short alias: k_M or μ_M already name the moduli of a matrix in MeanFieldHomogenization.

Two conversions solve a quadratic. From ,     with  , the only root with   . From , two materials share the pair, one with   and one with  ; the one kept is  ,     and     with  . In 2-D, gives   , the root of   : the other,  , has the same pair of moduli.

TensND.iso_stiffness_young_pwave Function
julia
iso_stiffness_young_pwave(a, b) → TensISO{4,3}
iso_stiffness_young_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its young and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_lame_shear Function
julia
iso_stiffness_lame_shear(a, b) → TensISO{4,3}
iso_stiffness_lame_shear(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its lame and shear moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_lame_poisson Function
julia
iso_stiffness_lame_poisson(a, b) → TensISO{4,3}
iso_stiffness_lame_poisson(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its lame and poisson moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_lame_pwave Function
julia
iso_stiffness_lame_pwave(a, b) → TensISO{4,3}
iso_stiffness_lame_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its lame and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_shear_poisson Function
julia
iso_stiffness_shear_poisson(a, b) → TensISO{4,3}
iso_stiffness_shear_poisson(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its shear and poisson moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_shear_pwave Function
julia
iso_stiffness_shear_pwave(a, b) → TensISO{4,3}
iso_stiffness_shear_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its shear and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_stiffness_poisson_pwave Function
julia
iso_stiffness_poisson_pwave(a, b) → TensISO{4,3}
iso_stiffness_poisson_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic stiffness from its poisson and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance Function
julia
iso_compliance(k, μ) → TensISO{4,3}
iso_compliance(Val(dim), k, μ) → TensISO{4,dim}

Isotropic compliance     from the bulk modulus k (in 2-D, the in-plane  ) and the shear modulus μ, written directly, without an inverse: the inverse of iso_stiffness(k, μ).

iso_compliance_bulk_shear, iso_compliance_k_mu and iso_compliance_k_μ are the same function. The compliance from any other pair of moduli is iso_compliance_<pair>: see iso_stiffness_young_poisson for the table.

TensND.iso_compliance_bulk_young Function
julia
iso_compliance_bulk_young(a, b) → TensISO{4,3}
iso_compliance_bulk_young(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its bulk and young moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_bulk_lame Function
julia
iso_compliance_bulk_lame(a, b) → TensISO{4,3}
iso_compliance_bulk_lame(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its bulk and lame moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_bulk_poisson Function
julia
iso_compliance_bulk_poisson(a, b) → TensISO{4,3}
iso_compliance_bulk_poisson(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its bulk and poisson moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_bulk_pwave Function
julia
iso_compliance_bulk_pwave(a, b) → TensISO{4,3}
iso_compliance_bulk_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its bulk and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_young_lame Function
julia
iso_compliance_young_lame(a, b) → TensISO{4,3}
iso_compliance_young_lame(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its young and lame moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_young_shear Function
julia
iso_compliance_young_shear(a, b) → TensISO{4,3}
iso_compliance_young_shear(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its young and shear moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_young_poisson Function
julia
iso_compliance_young_poisson(E, ν) → TensISO{4,3}
iso_compliance_young_poisson(Val(dim), E, ν) → TensISO{4,dim}

Isotropic compliance from Young's modulus and Poisson's ratio, written directly:        in 3-D; with Val(2), the compliance of the plane-strain stiffness of that material. The inverse of iso_stiffness_young_poisson, whose docstring gives the table of every pair. iso_compliance_E_nu and iso_compliance_E_ν are the same function.

TensND.iso_compliance_young_pwave Function
julia
iso_compliance_young_pwave(a, b) → TensISO{4,3}
iso_compliance_young_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its young and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_lame_shear Function
julia
iso_compliance_lame_shear(a, b) → TensISO{4,3}
iso_compliance_lame_shear(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its lame and shear moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_lame_poisson Function
julia
iso_compliance_lame_poisson(a, b) → TensISO{4,3}
iso_compliance_lame_poisson(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its lame and poisson moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_lame_pwave Function
julia
iso_compliance_lame_pwave(a, b) → TensISO{4,3}
iso_compliance_lame_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its lame and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_shear_poisson Function
julia
iso_compliance_shear_poisson(a, b) → TensISO{4,3}
iso_compliance_shear_poisson(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its shear and poisson moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_shear_pwave Function
julia
iso_compliance_shear_pwave(a, b) → TensISO{4,3}
iso_compliance_shear_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its shear and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.iso_compliance_poisson_pwave Function
julia
iso_compliance_poisson_pwave(a, b) → TensISO{4,3}
iso_compliance_poisson_pwave(Val(dim), a, b) → TensISO{4,dim}

Isotropic compliance from its poisson and pwave moduli (Poisson's ratio for poisson, Lamé's first parameter for lame), in 3-D or, with Val(2), in plane strain. See iso_stiffness_young_poisson for the table of the pairs and their conventions.

TensND.lame_lambda Function
julia
lame_lambda(t::TensISO{4,dim}; role = :stiffness)

Lamé's first parameter of an isotropic stiffness      , or, with role = :compliance, of the material whose compliance is t; in 2-D, that of the 3-D material whose plane-strain stiffness (or compliance) is t.

Each modulus has its reader, which computes that modulus alone, from the two coefficients of t on and , by a formula of its own for each role (never through an inverse): bulk_modulus (in 2-D, the in-plane  ), young_modulus, lame_lambda, shear_modulus, poisson_ratio, pwave_modulus (  ). On a 3-D compliance     , for instance,    and    .

Each pair has one too, named as its builder without iso_stiffness_ (bulk_shear, young_poisson, lame_shear, young_pwave, …), with the same aliases (k_mu, E_nu, λ_μ, …), the same role keyword, and the two moduli of its readers: the conversion of a pair of moduli to another is young_shear(iso_stiffness_lame_poisson(λ, ν)).

TensND.bulk_modulus Function

The bulk modulus of an isotropic stiffness, in 2-D the in-plane one  , or of a compliance with role = :compliance; see lame_lambda.

TensND.young_modulus Function

Young's modulus of an isotropic stiffness, or of a compliance with role = :compliance; see lame_lambda.

TensND.shear_modulus Function

The shear modulus of an isotropic stiffness, or of a compliance with role = :compliance; see lame_lambda.

TensND.poisson_ratio Function
julia
poisson_ratio(k, μ) → ν

Poisson's ratio of a 3-D isotropic material from its bulk and shear moduli,    . On a tensor, see lame_lambda.

TensND.pwave_modulus Function

The P-wave (oedometric) modulus    of an isotropic stiffness, or of a compliance with role = :compliance; see lame_lambda.

TensND.bulk_young Function
julia
bulk_young(t::TensISO{4}; role = :stiffness) → (bulk, young)

The bulk and young moduli of an isotropic stiffness, or of a compliance with role = :compliance (bulk_modulus(t; role), young_modulus(t; role)); see lame_lambda for the conventions.

TensND.bulk_lame Function
julia
bulk_lame(t::TensISO{4}; role = :stiffness) → (bulk, lame)

The bulk and lame moduli of an isotropic stiffness, or of a compliance with role = :compliance (bulk_modulus(t; role), lame_lambda(t; role)); see lame_lambda for the conventions.

TensND.bulk_shear Function
julia
bulk_shear(t::TensISO{4,dim}; role = :stiffness) → (k, μ)

Bulk and shear moduli of an isotropic stiffness       in dimension , or of a compliance with role = :compliance: relates the trace of the stress to the trace of the strain,      . In 3-D it is the bulk modulus; in 2-D the in-plane (area) bulk modulus,   for the plane-strain restriction of a 3-D material. For a tensor that is not a TensISO, take its isotropic part first: isotropify (the exact rotation average) or best_fit_iso (the closest isotropic tensor).

k_mu and k_μ are the same function, under the symbols of the moduli.

TensND.bulk_poisson Function
julia
bulk_poisson(t::TensISO{4}; role = :stiffness) → (bulk, poisson)

The bulk and poisson moduli of an isotropic stiffness, or of a compliance with role = :compliance (bulk_modulus(t; role), poisson_ratio(t; role)); see lame_lambda for the conventions.

TensND.bulk_pwave Function
julia
bulk_pwave(t::TensISO{4}; role = :stiffness) → (bulk, pwave)

The bulk and pwave moduli of an isotropic stiffness, or of a compliance with role = :compliance (bulk_modulus(t; role), pwave_modulus(t; role)); see lame_lambda for the conventions.

TensND.young_lame Function
julia
young_lame(t::TensISO{4}; role = :stiffness) → (young, lame)

The young and lame moduli of an isotropic stiffness, or of a compliance with role = :compliance (young_modulus(t; role), lame_lambda(t; role)); see lame_lambda for the conventions.

TensND.young_shear Function
julia
young_shear(t::TensISO{4}; role = :stiffness) → (young, shear)

The young and shear moduli of an isotropic stiffness, or of a compliance with role = :compliance (young_modulus(t; role), shear_modulus(t; role)); see lame_lambda for the conventions.

TensND.young_poisson Function
julia
young_poisson(t::TensISO{4,dim}; role = :stiffness) → (E, ν)

Young's modulus and Poisson's ratio of an isotropic stiffness, or of a compliance with role = :compliance. In 3-D,    and = poisson_ratio(k, μ) on a stiffness,    and     on a compliance    . In 2-D, those of the 3-D material whose plane-strain stiffness (or compliance) is t: on     ,    and   ,  .

See also bulk_shear, shear_poisson, iso_stiffness_young_poisson, and lame_lambda for every other modulus and pair.

E_nu and E_ν are the same function, under the symbols of the moduli.

TensND.young_pwave Function
julia
young_pwave(t::TensISO{4}; role = :stiffness) → (young, pwave)

The young and pwave moduli of an isotropic stiffness, or of a compliance with role = :compliance (young_modulus(t; role), pwave_modulus(t; role)); see lame_lambda for the conventions.

TensND.lame_shear Function
julia
lame_shear(t::TensISO{4}; role = :stiffness) → (lame, shear)

The lame and shear moduli of an isotropic stiffness, or of a compliance with role = :compliance (lame_lambda(t; role), shear_modulus(t; role)); see lame_lambda for the conventions.

TensND.lame_poisson Function
julia
lame_poisson(t::TensISO{4}; role = :stiffness) → (lame, poisson)

The lame and poisson moduli of an isotropic stiffness, or of a compliance with role = :compliance (lame_lambda(t; role), poisson_ratio(t; role)); see lame_lambda for the conventions.

TensND.lame_pwave Function
julia
lame_pwave(t::TensISO{4}; role = :stiffness) → (lame, pwave)

The lame and pwave moduli of an isotropic stiffness, or of a compliance with role = :compliance (lame_lambda(t; role), pwave_modulus(t; role)); see lame_lambda for the conventions.

TensND.shear_poisson Function
julia
shear_poisson(t::TensISO{4,dim}; role = :stiffness) → (μ, ν)

Shear modulus and Poisson's ratio of an isotropic stiffness, or of a compliance with role = :compliance, the pair the Kelvin and plane-strain Green functions are written with; in 2-D, is that of the 3-D material whose plane-strain stiffness is t (see young_poisson).

mu_nu and μ_ν are the same function, under the symbols of the moduli.

TensND.shear_pwave Function
julia
shear_pwave(t::TensISO{4}; role = :stiffness) → (shear, pwave)

The shear and pwave moduli of an isotropic stiffness, or of a compliance with role = :compliance (shear_modulus(t; role), pwave_modulus(t; role)); see lame_lambda for the conventions.

TensND.poisson_pwave Function
julia
poisson_pwave(t::TensISO{4}; role = :stiffness) → (poisson, pwave)

The poisson and pwave moduli of an isotropic stiffness, or of a compliance with role = :compliance (poisson_ratio(t; role), pwave_modulus(t; role)); see lame_lambda for the conventions.

TensND.plane_strain_stiffness Function
julia
plane_strain_stiffness(ℂ::TensISO{4,3}) → TensISO{4,2}

The in-plane stiffness of an isotropic material under plane strain ( ): the in-plane block of , with the same and ,      in two dimensions. It is the convention of every TensISO{4,2} here: its young_poisson are those of ℂ.

See also plane_stress_stiffness.

TensND.plane_stress_stiffness Function
julia
plane_stress_stiffness(ℂ::TensISO{4,3}) → TensISO{4,2}

The in-plane stiffness of an isotropic material under plane stress ( ): condensed out, which replaces by      and keeps . Read as a plane-strain stiffness, as every TensISO{4,2} is, its moduli are plane_stress_to_plane_strain(E, ν).

See also plane_strain_stiffness.

TensND.plane_stress_to_plane_strain Function
julia
plane_stress_to_plane_strain(E, ν) → (E′, ν′)

The moduli with which a plane-strain computation reproduces a plane-stress state of the material :    ,   . The plane-strain stiffness of is the plane-stress stiffness of ; plane_strain_to_plane_stress is the reciprocal.

TensND.plane_strain_to_plane_stress Function
julia
plane_strain_to_plane_stress(E, ν) → (E′, ν′)

The moduli with which a plane-stress computation reproduces a plane-strain state of the material :   ,   ; the reciprocal of plane_stress_to_plane_strain.

isotropify is the exact rotation-group average, not a form of compact storage, so it is documented with the other averages under Exact rotation-group averages.