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.

OrderNStoredTensor
21λλ 𝟏
42(α, β)α 𝕁 + β 𝕂

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 has no orientation, so it needs none stored.

Constructors

TensISO{dim}(λ) and TensISO{dim}(α, β), plus the named ones tens_Id2, tens_Id4, tens_J4, tens_K4, ISO 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𝟏() ; KM(𝟏)
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𝕀() ; KM(𝕀)
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𝕁() ; KM(𝕁)
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𝕂() ; KM(𝕂)
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 Function
julia
ISO(args...)

Legacy alias of iso_projectors kept for backward compatibility.

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.

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.