Mercurial > repos > public > sbplib_julia
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} |