Skip to content

Commit 08d757a

Browse files
authored
Merge pull request #1270 from ovanvincq/master
Correct return type of contracted_product
2 parents 62586b6 + 7e7a2bd commit 08d757a

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

src/TensorValues/Operations.jl

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ end
236236
inner(a::MultiValue{S,Ta,N}, b::MultiValue{S,Tb,N}) where {S,Ta,Tb,N} = contracted_product(Val(N),a,b)
237237

238238
@generated function inner(a::AbstractSymTensorValue{D,Ta}, b::AbstractSymTensorValue{D,Tb}) where {D,Ta,Tb}
239-
iszero(D) && return :(zero($(promote_type(Ta, Tb))))
239+
iszero(D) && return :(zero($(Base.promote_op(*,Ta,Tb))))
240240
str = ""
241241
for i in 1:D
242242
str *= "+ a[$i,$i]*b[$i,$i]"
@@ -252,7 +252,7 @@ inner(a::MultiValue{S,Ta,N}, b::MultiValue{S,Tb,N}) where {S,Ta,Tb,N} = contract
252252
end
253253

254254
@generated function inner(a::SymFourthOrderTensorValue{D,Ta}, b::SymFourthOrderTensorValue{D,Tb}) where {D,Ta,Tb}
255-
iszero(D) && return :(zero($(promote_type(Ta, Tb))))
255+
iszero(D) && return :(zero($(Base.promote_op(*,Ta,Tb))))
256256

257257
S = Tuple{D,D,D,D}
258258
VInt = change_eltype(a, Int)
@@ -271,15 +271,15 @@ end
271271
end
272272

273273
function inner(a::SkewSymTensorValue{D,Ta}, b::SkewSymTensorValue{D,Tb}) where {D,Ta,Tb}
274-
iszero(D) && return zero(promote_type(Ta, Tb))
274+
iszero(D) && return zero(Base.promote_op(*,Ta,Tb))
275275
2 * inner(VectorValue(a.data), VectorValue(b.data))
276276
end
277277

278278
function inner(a::SkewSymTensorValue{D,Ta}, b::AbstractSymTensorValue{D,Tb}) where {D,Ta,Tb}
279-
zero(promote_type(Ta,Tb))
279+
zero(Base.promote_op(*,Ta,Tb))
280280
end
281281
function inner(a::AbstractSymTensorValue{D,Tb}, b::SkewSymTensorValue{D,Ta}) where {D,Ta,Tb}
282-
zero(promote_type(Ta,Tb))
282+
zero(Base.promote_op(*,Ta,Tb))
283283
end
284284

285285
# TODO These two methods make no sense and shold be removed
@@ -342,7 +342,7 @@ end
342342

343343
# c_ijkl = a_ijmn*b_mnkl (general case)
344344
@generated function double_contraction(a::SymFourthOrderTensorValue{D,Ta}, b::SymFourthOrderTensorValue{D,Tb}) where {D,Ta,Tb}
345-
iszero(D) && return :(SymFourthOrderTensorValue{0,$(promote_type(Ta, Tb))}())
345+
iszero(D) && return :(SymFourthOrderTensorValue{0,$(Base.promote_op(*,Ta,Tb))}())
346346

347347
str = ""
348348
for j in 1:D
@@ -394,7 +394,7 @@ end
394394

395395
# c_ij = a_ijkl*b_kl
396396
@generated function double_contraction(a::SymFourthOrderTensorValue{D,Ta}, b::AbstractSymTensorValue{D,Tb}) where {D,Ta,Tb}
397-
iszero(D) && return :(zero(SymTensorValue{D,$(promote_type(Ta, Tb))}))
397+
iszero(D) && return :(zero(SymTensorValue{D,$(Base.promote_op(*,Ta,Tb))}))
398398
str = ""
399399
for i in 1:D
400400
for j in i:D
@@ -415,7 +415,7 @@ end
415415

416416
# c_ij = a_kl*b_klij
417417
@generated function double_contraction(a::AbstractSymTensorValue{D,Ta}, b::SymFourthOrderTensorValue{D,Tb}) where {D,Ta,Tb}
418-
iszero(D) && return :(zero(SymTensorValue{D,$(promote_type(Ta, Tb))}))
418+
iszero(D) && return :(zero(SymTensorValue{D,$(Base.promote_op(*,Ta,Tb))}))
419419
str = ""
420420
for i in 1:D
421421
for j in i:D
@@ -457,7 +457,7 @@ Given a square second order tensors `a` and `b`, return `b`ᵀ⋅`a`⋅`b`.
457457
The type of the resulting value is (skew) symmetric stable w.r.t. `typeof(a)`.
458458
"""
459459
function congruent_prod(a::MultiValue{Tuple{D,D},Ta}, b::MultiValue{Tuple{D,D1},Tb}) where {D,D1,Ta,Tb}
460-
T = promote_type(Ta, Tb)
460+
T = Base.promote_op(*,Ta,Tb)
461461
V = _congruent_ret_type(a, D1)
462462
(iszero(D) || iszero(D1)) && return zero(V{T})
463463
V{T}(get_array(transpose(b) a b))
@@ -505,7 +505,7 @@ outer(a::MultiValue, b::MultiValue) = contracted_product(Val(0), a, b)
505505

506506
# c_ijkl = a_ij*b_kl
507507
@generated function outer(a::AbstractSymTensorValue{D,Ta}, b::AbstractSymTensorValue{D,Tb}) where {D,Ta,Tb}
508-
iszero(D) && return :(zero(SymFourthOrderTensorValue{D,$(promote_type(Ta, Tb))}))
508+
iszero(D) && return :(zero(SymFourthOrderTensorValue{D,$(Base.promote_op(*,Ta,Tb))}))
509509
str = ""
510510
for i in 1:D
511511
for j in i:D
@@ -574,13 +574,13 @@ the specific functions above if possible), but is used as default generic implem
574574
Sr = tuple(Sa_keep..., Sb_keep...)
575575
Nr = length(Sr)
576576
Vstr = if Nr == 0
577-
"promote_type(Ta,Tb)"
577+
"Base.promote_op(*,Ta,Tb)"
578578
elseif Nr == 1
579-
"VectorValue{$(Sr[1]),promote_type(Ta,Tb)}"
579+
"VectorValue{$(Sr[1]),Base.promote_op(*,Ta,Tb)}"
580580
elseif Nr == 2
581-
"TensorValue{$(Sr[1]),$(Sr[2]),promote_type(Ta,Tb)}"
581+
"TensorValue{$(Sr[1]),$(Sr[2]),Base.promote_op(*,Ta,Tb)}"
582582
else
583-
"HighOrderTensorValue{$(Tuple{Sr...}),promote_type(Ta,Tb)}"
583+
"HighOrderTensorValue{$(Tuple{Sr...}),Base.promote_op(*,Ta,Tb)}"
584584
end
585585

586586
if (iszero(length(a)) || iszero(length(b)))

0 commit comments

Comments
 (0)