Mercurial > repos > public > sbplib_julia
changeset 1151:56bc2c6a17fd refactor/sbpoperators/inflation
Fix tests after review comment
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 21 Oct 2022 23:07:30 +0200 |
parents | 58cb7cb02d9a |
children | f1bb1b6d85dd |
files | test/SbpOperators/volumeops/volume_operator_test.jl |
diffstat | 1 files changed, 47 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/test/SbpOperators/volumeops/volume_operator_test.jl Fri Oct 21 22:11:04 2022 +0200 +++ b/test/SbpOperators/volumeops/volume_operator_test.jl Fri Oct 21 23:07:30 2022 +0200 @@ -10,13 +10,12 @@ import Sbplib.SbpOperators.odd import Sbplib.SbpOperators.even -# REVIEW: Remove the commented tests for 2D (it is tested in the user code), but -# change testset Regions and testset Inferred, to test the 1D operators. @testset "VolumeOperator" begin inner_stencil = CenteredStencil(1/4, 2/4, 1/4) - closure_stencils = (Stencil(1/2, 1/2; center=1), Stencil(0.,1.; center=2)) + closure_stencils = (Stencil(1/2, 1/2; center=1), Stencil(2.,1.; center=2)) g = EquidistantGrid(11,0.,1.) + @testset "Constructors" begin op = VolumeOperator(inner_stencil,closure_stencils,(11,),even) @test op == VolumeOperator(g,inner_stencil,closure_stencils,even) @@ -28,55 +27,56 @@ @test range_size(op) == domain_size(op) == size(g) end - # op_x = volume_operator(g_2D,inner_stencil,closure_stencils,even,1) - # op_y = volume_operator(g_2D,inner_stencil,closure_stencils,odd,2) - # v = zeros(size(g_2D)) - # Nx = size(g_2D)[1] - # Ny = size(g_2D)[2] - # for i = 1:Nx - # v[i,:] .= i - # end - # rx = copy(v) - # rx[1,:] .= 1.5 - # rx[Nx,:] .= (2*Nx-1)/2 - # ry = copy(v) - # ry[:,Ny-1:Ny] = -v[:,Ny-1:Ny] + + op_even = VolumeOperator(g, inner_stencil, closure_stencils, even) + op_odd = VolumeOperator(g, inner_stencil, closure_stencils, odd) + + N = size(g)[1] + v = rand(N) + + r_even = copy(v) + r_odd = copy(v) + + r_even[1] = (v[1] + v[2])/2 + r_odd[1] = (v[1] + v[2])/2 - # @testset "Application" begin - # @test op_x*v ≈ rx rtol = 1e-14 - # @test op_y*v ≈ ry rtol = 1e-14 + r_even[2] = 2v[1] + v[2] + r_odd[2] = 2v[1] + v[2] - # @test (op_x*rand(ComplexF64,size(g_2D)))[2,2] isa ComplexF64 - # end + for i ∈ 3:N-2 + r_even[i] = (v[i-1] + 2v[i] + v[i+1])/4 + r_odd[i] = (v[i-1] + 2v[i] + v[i+1])/4 + end + + r_even[N-1] = v[N-1] + 2v[N] + r_odd[N-1] = -v[N-1] - 2v[N] + + r_even[N] = (v[N-1] + v[N])/2 + r_odd[N] = -(v[N-1] + v[N])/2 - # @testset "Regions" begin - # @test (op_x*v)[Index(1,Lower),Index(3,Interior)] ≈ rx[1,3] rtol = 1e-14 - # @test (op_x*v)[Index(2,Lower),Index(3,Interior)] ≈ rx[2,3] rtol = 1e-14 - # @test (op_x*v)[Index(6,Interior),Index(3,Interior)] ≈ rx[6,3] rtol = 1e-14 - # @test (op_x*v)[Index(10,Upper),Index(3,Interior)] ≈ rx[10,3] rtol = 1e-14 - # @test (op_x*v)[Index(11,Upper),Index(3,Interior)] ≈ rx[11,3] rtol = 1e-14 - # @test_throws BoundsError (op_x*v)[Index(3,Lower),Index(3,Interior)] - # @test_throws BoundsError (op_x*v)[Index(9,Upper),Index(3,Interior)] + @testset "Application" begin + @test op_even*v ≈ r_even + @test op_odd*v ≈ r_odd - # @test (op_y*v)[Index(3,Interior),Index(1,Lower)] ≈ ry[3,1] rtol = 1e-14 - # @test (op_y*v)[Index(3,Interior),Index(2,Lower)] ≈ ry[3,2] rtol = 1e-14 - # @test (op_y*v)[Index(3,Interior),Index(6,Interior)] ≈ ry[3,6] rtol = 1e-14 - # @test (op_y*v)[Index(3,Interior),Index(11,Upper)] ≈ ry[3,11] rtol = 1e-14 - # @test (op_y*v)[Index(3,Interior),Index(12,Upper)] ≈ ry[3,12] rtol = 1e-14 + @test (op_even*rand(ComplexF64,size(g)))[2] isa ComplexF64 + end - # @test_throws BoundsError (op_y*v)[Index(3,Interior),Index(10,Upper)] - # @test_throws BoundsError (op_y*v)[Index(3,Interior),Index(3,Lower)] - # end + @testset "Regions" begin + @test (op_even*v)[Index(1,Lower)] ≈ r_even[1] + @test (op_even*v)[Index(2,Lower)] ≈ r_even[2] + @test (op_even*v)[Index(6,Interior)] ≈ r_even[6] + @test (op_even*v)[Index(10,Upper)] ≈ r_even[10] + @test (op_even*v)[Index(11,Upper)] ≈ r_even[11] - # @testset "Inferred" begin - # @test_skip @inferred apply(op_x, v,1,1) - # @inferred apply(op_x, v, Index(1,Lower),Index(1,Lower)) - # @inferred apply(op_x, v, Index(6,Interior),Index(1,Lower)) - # @inferred apply(op_x, v, Index(11,Upper),Index(1,Lower)) - # @test_skip @inferred apply(op_y, v,1,1) - # @inferred apply(op_y, v, Index(1,Lower),Index(1,Lower)) - # @inferred apply(op_y, v, Index(1,Lower),Index(6,Interior)) - # @inferred apply(op_y, v, Index(1,Lower),Index(11,Upper)) - # end + @test_throws BoundsError (op_even*v)[Index(3,Lower)] + @test_throws BoundsError (op_even*v)[Index(9,Upper)] + end + + @testset "Inferred" begin + @inferred apply(op_even, v, 1) + @inferred apply(op_even, v, Index(1,Lower)) + @inferred apply(op_even, v, Index(6,Interior)) + @inferred apply(op_even, v, Index(11,Upper)) + end end