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