comparison src/SbpOperators/quadrature/inverse_quadrature.jl @ 556:37a81dad36b9

Merge refactor/tensor_index_coupling
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Sun, 29 Nov 2020 21:18:45 +0100
parents 011ca1639153
children
comparison
equal deleted inserted replaced
540:013ca4892540 556:37a81dad36b9
23 LazyTensors.range_size(Hi::InverseQuadrature) = getindex.(range_size.(Hi.Hi),1) 23 LazyTensors.range_size(Hi::InverseQuadrature) = getindex.(range_size.(Hi.Hi),1)
24 LazyTensors.domain_size(Hi::InverseQuadrature) = getindex.(domain_size.(Hi.Hi),1) 24 LazyTensors.domain_size(Hi::InverseQuadrature) = getindex.(domain_size.(Hi.Hi),1)
25 25
26 LazyTensors.domain_size(Qi::InverseQuadrature{Dim}, range_size::NTuple{Dim,Integer}) where Dim = range_size 26 LazyTensors.domain_size(Qi::InverseQuadrature{Dim}, range_size::NTuple{Dim,Integer}) where Dim = range_size
27 27
28 function LazyTensors.apply(Qi::InverseQuadrature{Dim,T}, v::AbstractArray{T,Dim}, I::Vararg{Index,Dim}) where {T,Dim} 28 function LazyTensors.apply(Qi::InverseQuadrature{Dim,T}, v::AbstractArray{T,Dim}, I::Vararg{Any,Dim}) where {T,Dim}
29 error("not implemented") 29 error("not implemented")
30 end 30 end
31 31
32 @inline function LazyTensors.apply(Qi::InverseQuadrature{1,T}, v::AbstractVector{T}, I::Index) where T 32 @inline function LazyTensors.apply(Qi::InverseQuadrature{1,T}, v::AbstractVector{T}, i) where T
33 @inbounds q = apply(Qi.Hi[1], v , I) 33 @inbounds q = apply(Qi.Hi[1], v , i)
34 return q 34 return q
35 end 35 end
36 36
37 @inline function LazyTensors.apply(Qi::InverseQuadrature{2,T}, v::AbstractArray{T,2}, I::Index, J::Index) where T 37 @inline function LazyTensors.apply(Qi::InverseQuadrature{2,T}, v::AbstractArray{T,2}, i,j) where T
38 # InverseQuadrature in x direction 38 # InverseQuadrature in x direction
39 @inbounds vx = view(v, :, Int(J)) 39 @inbounds vx = view(v, :, Int(j))
40 @inbounds qx_inv = apply(Qi.Hi[1], vx , I) 40 @inbounds qx_inv = apply(Qi.Hi[1], vx , i)
41 # InverseQuadrature in y-direction 41 # InverseQuadrature in y-direction
42 @inbounds vy = view(v, Int(I), :) 42 @inbounds vy = view(v, Int(i), :)
43 @inbounds qy_inv = apply(Qi.Hi[2], vy, J) 43 @inbounds qy_inv = apply(Qi.Hi[2], vy, j)
44 return qx_inv*qy_inv 44 return qx_inv*qy_inv
45 end 45 end
46 46
47 LazyTensors.apply_transpose(Qi::InverseQuadrature{Dim,T}, v::AbstractArray{T,Dim}, I::Vararg{Index,Dim}) where {Dim,T} = LazyTensors.apply(Qi,v,I...) 47 LazyTensors.apply_transpose(Qi::InverseQuadrature{Dim,T}, v::AbstractArray{T,Dim}, I::Vararg{Any,Dim}) where {Dim,T} = LazyTensors.apply(Qi,v,I...)