From 941dc06468f8b24e22102897d30636638613cd70 Mon Sep 17 00:00:00 2001 From: Keita Nakamura Date: Thu, 5 Sep 2024 08:53:40 +0900 Subject: [PATCH] Remove vdots, use contract3 instead --- Project.toml | 2 +- src/Tensorial.jl | 6 ++++-- src/ops.jl | 10 +++++----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Project.toml b/Project.toml index 065e6df0..22996976 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Tensorial" uuid = "98f94333-fa9f-48a9-ad80-1c66397b2b38" authors = ["Keita Nakamura "] -version = "0.16.0" +version = "0.16.1" [deps] ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" diff --git a/src/Tensorial.jl b/src/Tensorial.jl index c5e45486..d711bf86 100644 --- a/src/Tensorial.jl +++ b/src/Tensorial.jl @@ -48,6 +48,9 @@ export levicivita, # operations contract, + contract1, + contract2, + contract3, otimes, dotdot, symmetric, @@ -55,7 +58,6 @@ export skew, ⊗, ⊡, - ⋮, rotmat, rotmatx, rotmaty, @@ -80,6 +82,7 @@ export quaternion, angleaxis +const contract1 = dot include("utils.jl") include("Symmetry.jl") @@ -102,7 +105,6 @@ include("quaternion.jl") const ⊗ = otimes const ⊡ = contract2 -const ⋮ = contract3 @deprecate contraction contract true @deprecate double_contraction contract2 true diff --git a/src/ops.jl b/src/ops.jl index d37ac0ef..6db621b9 100644 --- a/src/ops.jl +++ b/src/ops.jl @@ -33,8 +33,8 @@ end @inline Base.:-(x::AbstractTensor, y::UniformScaling) = _add_uniform( x, -y.λ) @inline Base.:+(x::UniformScaling, y::AbstractTensor) = _add_uniform( y, x.λ) @inline Base.:-(x::UniformScaling, y::AbstractTensor) = _add_uniform(-y, x.λ) -@inline dot(x::Union{AbstractVec, AbstractMat, AbstractSquareTensor}, y::UniformScaling) = x * y.λ -@inline dot(x::UniformScaling, y::Union{AbstractVec, AbstractMat, AbstractSquareTensor}) = x.λ * y +@inline contract1(x::Union{AbstractVec, AbstractMat, AbstractSquareTensor}, y::UniformScaling) = x * y.λ +@inline contract1(x::UniformScaling, y::Union{AbstractVec, AbstractMat, AbstractSquareTensor}) = x.λ * y @inline contract2(x::AbstractSquareTensor, y::UniformScaling) = tr(x) * y.λ @inline contract2(x::UniformScaling, y::AbstractSquareTensor) = x.λ * tr(y) @@ -58,7 +58,7 @@ end Conduct contraction of `N` inner indices. For example, `N=2` contraction for third-order tensors ``A_{ij} = B_{ikl} C_{klj}`` -can be computed in Tensorial.jl as +can be computed as follows: ```jldoctest julia> B = rand(Tensor{Tuple{3,3,3}}); @@ -178,8 +178,8 @@ julia> a = x ⋅ y 0.5715585109976284 ``` """ -@inline dot(x1::AbstractTensor, x2::AbstractTensor) = contract(x1, x2, Val(1)) -@inline contract2(x1::AbstractTensor, x2::AbstractTensor) = contract(x1, x2, Val(2)) +@inline dot(x1::AbstractTensor, x2::AbstractTensor) = contract(x1, x2, Val(1)) # dot, ⋅ +@inline contract2(x1::AbstractTensor, x2::AbstractTensor) = contract(x1, x2, Val(2)) # ⊡ @inline contract3(x1::AbstractTensor, x2::AbstractTensor) = contract(x1, x2, Val(3)) """