Structured tensors — isotropic
Compact storage for isotropic tensors, in arbitrary dimension. Theory: Isotropic tensors; usage: Structured tensors.
TensND.TensISO Type
TensISO{order,dim,T,N}Isotropic tensor stored as N scalars instead of dim^order components, in arbitrary dimension.
| Order | N | Stored | Tensor |
|---|---|---|---|
| 2 | 1 | λ | λ 𝟏 |
| 4 | 2 | (α, β) | α 𝕁 + β 𝕂 |
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> ℂ = TensISO{3}(3 * 20.0, 2 * 8.0);
julia> get_data(inv(ℂ))
(0.016666666666666666, 0.0625)
julia> typeof(inv(ℂ)) === typeof(ℂ)
trueSee also Isotropic tensors, Structured tensors.
TensND.tens_Id2 Function
tens_Id2(::Val{dim}, ::Val{T}) where {dim,T<:Number}Identity tensor of second order 𝟏ᵢⱼ = δᵢⱼ = 1 if i=j otherwise 0
Examples
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 1TensND.tens_Id4 Function
tens_Id4(::Val{dim} = Val(3), ::Val{T} = Val(Sym))Symmetric identity tensor of fourth order 𝕀 = 𝟏 ⊠ˢ 𝟏 i.e. (𝕀)ᵢⱼₖₗ = (δᵢₖδⱼₗ+δᵢₗδⱼₖ)/2
Examples
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 1TensND.tens_J4 Function
tens_J4(::Val{dim} = Val(3), ::Val{T} = Val(Sym))Spherical projector of fourth order 𝕁 = (𝟏 ⊗ 𝟏) / dim i.e. (𝕁)ᵢⱼₖₗ = δᵢⱼδₖₗ/dim
Examples
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 0TensND.tens_K4 Function
tens_K4(::Val{dim} = Val(3), ::Val{T} = Val(Sym))Deviatoric projector of fourth order 𝕂 = 𝕀 - 𝕁 i.e. (𝕂)ᵢⱼₖₗ = (δᵢₖδⱼₗ+δᵢₗδⱼₖ)/2 - δᵢⱼδₖₗ/dim
Examples
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 1TensND.iso_projectors Function
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> 𝕀, 𝕁, 𝕂 = iso_projectors();
julia> 𝕁 + 𝕂 == 𝕀
trueisotropify 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.