comparison test/SbpOperators/stencil_test.jl @ 1446:d744b01be520 bugfix/sbp_operators/stencil_return_type

Add broken tests for applying stencils to vectors of vectors
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 24 Nov 2023 21:49:07 +0100
parents 76a121ee7b80
children 6baed7b081f2
comparison
equal deleted inserted replaced
1445:76a121ee7b80 1446:d744b01be520
1 using Test 1 using Test
2 using Sbplib.SbpOperators 2 using Sbplib.SbpOperators
3 using StaticArrays
3 import Sbplib.SbpOperators.Stencil 4 import Sbplib.SbpOperators.Stencil
4 import Sbplib.SbpOperators.NestedStencil 5 import Sbplib.SbpOperators.NestedStencil
5 import Sbplib.SbpOperators.scale 6 import Sbplib.SbpOperators.scale
6 import Sbplib.SbpOperators: apply_stencil, apply_stencil_backwards 7 import Sbplib.SbpOperators: apply_stencil, apply_stencil_backwards
7 8
66 s = Stencil(1,2,3,4, center = 2) 67 s = Stencil(1,2,3,4, center = 2)
67 @test apply_stencil(s,v, 2) == v[1] + 2*v[2] + 3*v[3] + 4*v[4] 68 @test apply_stencil(s,v, 2) == v[1] + 2*v[2] + 3*v[3] + 4*v[4]
68 @test apply_stencil_backwards(s,v, 3) == 4*v[1] + 3*v[2] + 2*v[3] + 1*v[4] 69 @test apply_stencil_backwards(s,v, 3) == 4*v[1] + 3*v[2] + 2*v[3] + 1*v[4]
69 @test apply_stencil(s,v, 2) isa Float64 70 @test apply_stencil(s,v, 2) isa Float64
70 @test apply_stencil_backwards(s,v, 3) isa Float64 71 @test apply_stencil_backwards(s,v, 3) isa Float64
72
73 v = [@SVector[1, 2], @SVector[3, 4], @SVector[5, 6], @SVector[7, 8]]
74 s = Stencil(1,2, center = 1)
75 @test_broken apply_stencil(s,v,1) == @SVector[7, 10]
76 @test_broken apply_stencil_backwards(s,v,3) == @SVector[11, 14]
77 @test_broken apply_stencil(s,v,1) isa SVector{2, Int}
78 @test_broken apply_stencil_backwards(s,v,3) isa SVector{2, Int}
79
80 v = [@SVector[1., 2.], @SVector[3., 4.], @SVector[5., 6.], @SVector[7., 8.]]
81 s = Stencil(1,2, center = 1)
82 @test_broken apply_stencil(s,v,1) == @SVector[7., 10.]
83 @test_broken apply_stencil_backwards(s,v,3) == @SVector[11., 14.]
84 @test_broken apply_stencil(s,v,1) isa SVector{2, Float64}
85 @test_broken apply_stencil_backwards(s,v,3) isa SVector{2, Float64}
86
87 v = [@SVector[1, 2], @SVector[3, 4], @SVector[5, 6], @SVector[7, 8]]
88 s = Stencil(1.,2., center = 1)
89 @test_broken apply_stencil(s,v,1) == @SVector[7., 10.]
90 @test_broken apply_stencil_backwards(s,v,3) == @SVector[11., 14.]
91 @test_broken apply_stencil(s,v,1) isa SVector{2, Float64}
92 @test_broken apply_stencil_backwards(s,v,3) isa SVector{2, Float64}
71 end 93 end
72 94
73 @testset "type stability" begin 95 @testset "type stability" begin
74 s_int = CenteredStencil(1,2,3) 96 s_int = CenteredStencil(1,2,3)
75 s_float = CenteredStencil(1.,2.,3.) 97 s_float = CenteredStencil(1.,2.,3.)
191 213
192 @test SbpOperators.apply_stencil(ns, c, v, 4) isa Float64 214 @test SbpOperators.apply_stencil(ns, c, v, 4) isa Float64
193 @test SbpOperators.apply_stencil(ns, c, v, 4) == 193. 215 @test SbpOperators.apply_stencil(ns, c, v, 4) == 193.
194 @test SbpOperators.apply_stencil_backwards(ns, c, v, 4) isa Float64 216 @test SbpOperators.apply_stencil_backwards(ns, c, v, 4) isa Float64
195 @test SbpOperators.apply_stencil_backwards(ns, c, v, 4) == -158. 217 @test SbpOperators.apply_stencil_backwards(ns, c, v, 4) == -158.
218
219 # Arrays of vectors
220 ns = NestedStencil((-1.,1.,0.),(-1.,0.,1.),(0.,-2.,2.), center=2)
221 c = [ 1, 3, 6, 10]
222 v = [@SVector[1, 2], @SVector[3, 4], @SVector[5, 6], @SVector[7, 8]]
223 @test_broken SbpOperators.apply_stencil(ns, c, v, 2) isa SVector{2,Float64}
224 @test_broken SbpOperators.apply_stencil(ns, c, v, 2) == 2v[1] + 5v[2] + 6v[3]
225 @test_broken SbpOperators.apply_stencil_backwards(ns, c, v, 2) isa SVector{2,Float64}
226 @test_broken SbpOperators.apply_stencil_backwards(ns, c, v, 2) == -4v[1] - 5v[2] - 3v[3]
196 end 227 end
197 228
198 @testset "type stability" begin 229 @testset "type stability" begin
199 s_int = CenteredNestedStencil((1,2,3),(1,2,3),(1,2,3)) 230 s_int = CenteredNestedStencil((1,2,3),(1,2,3),(1,2,3))
200 s_float = CenteredNestedStencil((1.,2.,3.),(1.,2.,3.),(1.,2.,3.)) 231 s_float = CenteredNestedStencil((1.,2.,3.),(1.,2.,3.),(1.,2.,3.))