Mercurial > repos > public > sbplib_julia
comparison src/SbpOperators/laplace/secondderivative.jl @ 380:81053b1992b6
Remove parity field from Secondderivative
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 30 Sep 2020 21:35:10 +0200 |
parents | e73af120ad38 |
children | dacbcba33d7d |
comparison
equal
deleted
inserted
replaced
379:de4746d6d126 | 380:81053b1992b6 |
---|---|
6 | 6 |
7 struct SecondDerivative{T,N,M,K} <: TensorMapping{T,1,1} | 7 struct SecondDerivative{T,N,M,K} <: TensorMapping{T,1,1} |
8 h_inv::T # The grid spacing could be included in the stencil already. Preferable? | 8 h_inv::T # The grid spacing could be included in the stencil already. Preferable? |
9 innerStencil::Stencil{T,N} | 9 innerStencil::Stencil{T,N} |
10 closureStencils::NTuple{M,Stencil{T,K}} | 10 closureStencils::NTuple{M,Stencil{T,K}} |
11 parity::Parity | |
12 size::NTuple{1,Int} | 11 size::NTuple{1,Int} |
13 end | 12 end |
14 export SecondDerivative | 13 export SecondDerivative |
15 | 14 |
16 function SecondDerivative(grid::EquidistantGrid{1}, innerStencil, closureStencils) | 15 function SecondDerivative(grid::EquidistantGrid{1}, innerStencil, closureStencils) |
17 h_inv = grid.inverse_spacing[1] | 16 h_inv = grid.inverse_spacing[1] |
18 return SecondDerivative(h_inv, innerStencil, closureStencils, even, size(grid)) | 17 return SecondDerivative(h_inv, innerStencil, closureStencils, size(grid)) |
19 end | 18 end |
20 | 19 |
21 LazyTensors.range_size(D2::SecondDerivative) = D2.size | 20 LazyTensors.range_size(D2::SecondDerivative) = D2.size |
22 LazyTensors.domain_size(D2::SecondDerivative) = D2.size | 21 LazyTensors.domain_size(D2::SecondDerivative) = D2.size |
23 | 22 |
34 return @inbounds D2.h_inv*D2.h_inv*apply_stencil(D2.innerStencil, v, Int(I)) | 33 return @inbounds D2.h_inv*D2.h_inv*apply_stencil(D2.innerStencil, v, Int(I)) |
35 end | 34 end |
36 | 35 |
37 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 |
38 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)) |
39 return @inbounds D2.h_inv*D2.h_inv*Int(D2.parity)*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)) |
40 end | 39 end |
41 | 40 |
42 function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, index::Index{Unknown}) where T | 41 function LazyTensors.apply(D2::SecondDerivative{T}, v::AbstractVector{T}, index::Index{Unknown}) where T |
43 N = length(v) # TODO: Use domain_size here instead? | 42 N = length(v) # TODO: Use domain_size here instead? |
44 r = getregion(Int(index), closuresize(D2), N) | 43 r = getregion(Int(index), closuresize(D2), N) |