comparison src/SbpOperators/laplace/secondderivative.jl @ 542:011ca1639153 refactor/tensor_index_coupling

Remove Index{Unknown} and replace with general Any implementations
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 27 Nov 2020 11:27:37 +0100
parents dacbcba33d7d
children 1a53eb83ed24
comparison
equal deleted inserted replaced
541:62d96e2cd165 542:011ca1639153
36 function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, I::Index{Upper}) where T 36 function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, I::Index{Upper}) where T
37 N = length(v) # TODO: Use domain_size here instead? N = domain_size(D2,size(v)) 37 N = length(v) # TODO: Use domain_size here instead? N = domain_size(D2,size(v))
38 return @inbounds D2.h_inv*D2.h_inv*apply_stencil_backwards(D2.closureStencils[N-Int(I)+1], v, Int(I)) 38 return @inbounds D2.h_inv*D2.h_inv*apply_stencil_backwards(D2.closureStencils[N-Int(I)+1], v, Int(I))
39 end 39 end
40 40
41 function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, index::Index{Unknown}) where T 41 function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, i) where T
42 N = length(v) # TODO: Use domain_size here instead? 42 N = length(v) # TODO: Use domain_size here instead?
43 r = getregion(Int(index), closuresize(D2), N) 43 r = getregion(i, closuresize(D2), N)
44 I = Index(Int(index), r) 44 I = Index(i, r)
45 return LazyTensors.apply(D2, v, I) 45 return LazyTensors.apply(D2, v, I)
46 end 46 end
47 47
48 closuresize(D2::SecondDerivative{T,N,M,K}) where {T<:Real,N,M,K} = M 48 closuresize(D2::SecondDerivative{T,N,M,K}) where {T<:Real,N,M,K} = M