Mercurial > repos > public > sbplib_julia
comparison SbpOperators/src/laplace/secondderivative.jl @ 299:27a0bca5e1f2
Add apply_transpose and fix minor issues
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 23 Jun 2020 17:31:50 +0200 |
parents | f63232aeb1c6 |
children | f2d6ec89dfc5 |
comparison
equal
deleted
inserted
replaced
298:a0ec3cb6a65b | 299:27a0bca5e1f2 |
---|---|
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 |