comparison src/SbpOperators/volumeops/volume_operator.jl @ 960:e79debd10f7d feature/variable_derivatives

Merge feature/tensormapping_application_promotion
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 14 Mar 2022 10:14:38 +0100
parents b41180efb6c2 469ed954b493
children 3bb94ce74697
comparison
equal deleted inserted replaced
959:e9752c1e92f8 960:e79debd10f7d
41 closure_size(::VolumeOperator{T,N,M}) where {T,N,M} = M 41 closure_size(::VolumeOperator{T,N,M}) where {T,N,M} = M
42 42
43 LazyTensors.range_size(op::VolumeOperator) = op.size 43 LazyTensors.range_size(op::VolumeOperator) = op.size
44 LazyTensors.domain_size(op::VolumeOperator) = op.size 44 LazyTensors.domain_size(op::VolumeOperator) = op.size
45 45
46 function LazyTensors.apply(op::VolumeOperator{T}, v::AbstractVector{T}, i::Index{Lower}) where T 46 function LazyTensors.apply(op::VolumeOperator, v::AbstractVector, i::Index{Lower})
47 return @inbounds apply_stencil(op.closure_stencils[Int(i)], v, Int(i)) 47 return @inbounds apply_stencil(op.closure_stencils[Int(i)], v, Int(i))
48 end 48 end
49 49
50 function LazyTensors.apply(op::VolumeOperator{T}, v::AbstractVector{T}, i::Index{Interior}) where T 50 function LazyTensors.apply(op::VolumeOperator, v::AbstractVector, i::Index{Interior})
51 return apply_stencil(op.inner_stencil, v, Int(i)) 51 return apply_stencil(op.inner_stencil, v, Int(i))
52 end 52 end
53 53
54 function LazyTensors.apply(op::VolumeOperator{T}, v::AbstractVector{T}, i::Index{Upper}) where T 54 function LazyTensors.apply(op::VolumeOperator, v::AbstractVector, i::Index{Upper})
55 return @inbounds Int(op.parity)*apply_stencil_backwards(op.closure_stencils[op.size[1]-Int(i)+1], v, Int(i)) 55 return @inbounds Int(op.parity)*apply_stencil_backwards(op.closure_stencils[op.size[1]-Int(i)+1], v, Int(i))
56 end 56 end
57 57
58 function LazyTensors.apply(op::VolumeOperator{T}, v::AbstractVector{T}, i) where T 58 function LazyTensors.apply(op::VolumeOperator, v::AbstractVector, i)
59 return LazyTensors.apply_with_region(op, v, closure_size(op), op.size[1], i) 59 return LazyTensors.apply_with_region(op, v, closure_size(op), op.size[1], i)
60 end 60 end