comparison SbpOperators/src/laplace/secondderivative.jl @ 304:5645021683d3

Merge
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 09 Sep 2020 20:41:31 +0200
parents 27a0bca5e1f2
children f2d6ec89dfc5
comparison
equal deleted inserted replaced
303:d5475ad78b28 304:5645021683d3
16 even = 1 16 even = 1
17 end 17 end
18 18
19 LazyTensors.domain_size(D2::SecondDerivative, range_size::NTuple{1,Integer}) = range_size 19 LazyTensors.domain_size(D2::SecondDerivative, range_size::NTuple{1,Integer}) = range_size
20 20
21 function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, I::NTuple{1,Index}) where T 21 @inline function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, I::NTuple{1,Index}) where T
22 return apply(D2, v, I[1]) 22 return @inbounds apply(D2, v, I[1])
23 end 23 end
24
25 function LazyTensors.apply_transpose(D2::SecondDerivative{T}, v::AbstractVector{T}, I::NTuple{1,Index}) where T = LazyTensors.apply(D2, v, I)
24 26
25 # Apply for different regions Lower/Interior/Upper or Unknown region 27 # Apply for different regions Lower/Interior/Upper or Unknown region
26 @inline function LazyTensors.apply(D2::SecondDerivative, v::AbstractVector, i::Index{Lower}) 28 @inline function LazyTensors.apply(D2::SecondDerivative, v::AbstractVector, i::Index{Lower})
27 return @inbounds D2.h_inv*D2.h_inv*apply_stencil(D2.closureStencils[Int(i)], v, Int(i)) 29 return @inbounds D2.h_inv*D2.h_inv*apply_stencil(D2.closureStencils[Int(i)], v, Int(i))
28 end 30 end
41 r = getregion(Int(index), closuresize(L), N) 43 r = getregion(Int(index), closuresize(L), N)
42 i = Index(Int(index), r) 44 i = Index(Int(index), r)
43 return apply(D2, v, i) 45 return apply(D2, v, i)
44 end 46 end
45 47
46 function closuresize(D2::SecondDerivative{T<:Real,N,M,K}) where T,N,M,K 48 function closuresize(D2::SecondDerivative{T<:Real,N,M,K}) where {T,N,M,K}
47 return M 49 return M
48 end 50 end