comparison TensorMappings.jl @ 161:ea01b5550ff6 boundary_conditions

Add some missing methods in TensorMappings.jl
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 10 May 2019 21:48:28 +0200
parents d33b13d2d92b
children be50c5e40121
comparison
equal deleted inserted replaced
160:d33b13d2d92b 161:ea01b5550ff6
29 Base.adjoint(t::TensorMappingTranspose) = t.tm 29 Base.adjoint(t::TensorMappingTranspose) = t.tm
30 30
31 apply(tm::TensorMappingTranspose{T,R,D}, v::AbstractArray{T,R}, I::Vararg) where {T,R,D} = apply_transpose(tm.tm, v, I...) 31 apply(tm::TensorMappingTranspose{T,R,D}, v::AbstractArray{T,R}, I::Vararg) where {T,R,D} = apply_transpose(tm.tm, v, I...)
32 apply_transpose(tm::TensorMappingTranspose{T,R,D}, v::AbstractArray{T,D}, I::Vararg) where {T,R,D} = apply(tm.tm, v, I...) 32 apply_transpose(tm::TensorMappingTranspose{T,R,D}, v::AbstractArray{T,D}, I::Vararg) where {T,R,D} = apply(tm.tm, v, I...)
33 33
34 # range_size(::TensorMappingTranspose{T,R,D}, domain_size::NTuple{}) = range_size_of_transpose??? 34 range_size(tmt::TensorMappingTranspose{T,R,D}, domain_size::NTuple{D,Integer}) = domain_size(tmt.tm, domain_size)
35 domain_size(tmt::TensorMappingTranspose{T,R,D}, range_size::NTuple{D,Integer}) = range_size(tmt.tm, range_size)
35 36
36 37
37 38
38 struct TensorApplication{T,R,D} <: AbstractArray{T,R} 39 struct TensorApplication{T,R,D} <: AbstractArray{T,R}
39 t::TensorMapping{R,D} 40 t::TensorMapping{R,D}
62 end 63 end
63 64
64 import Base.∘ 65 import Base.∘
65 ∘(s::TensorMapping{T,R,K}, t::TensorMapping{T,K,D}) where {T,R,K,D} = TensorMappingComposition(s,t) 66 ∘(s::TensorMapping{T,R,K}, t::TensorMapping{T,K,D}) where {T,R,K,D} = TensorMappingComposition(s,t)
66 67
68 function range_size(tm::TensorMappingComposition{T,R,K,D}, domain_size::NTuple{D,Integer}) where {T,R,D}
69 range_size(tm.t1, domain_size(tm.t2, domain_size))
70 end
71
72 function domain_size(tm::TensorMappingComposition{T,R,K,D}, range_size::NTuple{R,Integer}) where {T,R,D}
73 domain_size(tm.t1, domain_size(tm.t2, range_size))
74 end
75
67 function apply(c::TensorMappingComposition{T,R,K,D}, v::AbstractArray{T,D}, I::Vararg) where {T,R,K,D} 76 function apply(c::TensorMappingComposition{T,R,K,D}, v::AbstractArray{T,D}, I::Vararg) where {T,R,K,D}
68 apply(c.t1, TensorApplication(c.t2,v), I...) 77 apply(c.t1, TensorApplication(c.t2,v), I...)
69 end 78 end
70 79
71 function apply_transpose(c::TensorMappingComposition{T,R,K,D}, v::AbstractArray{T,D}, I::Vararg) where {T,R,K,D} 80 function apply_transpose(c::TensorMappingComposition{T,R,K,D}, v::AbstractArray{T,D}, I::Vararg) where {T,R,K,D}