annotate test/SbpOperators/volumeops/volume_operator_test.jl @ 1105:0ba4609605d4 refactor/sbpoperators/inflation

REVIEW: Suggest changes to tests
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 20 May 2022 11:31:20 +0200
parents 05a25a5063bb
children 69c635e1d346
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 using Test
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 using Sbplib.SbpOperators
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 using Sbplib.Grids
732
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
5 using Sbplib.RegionIndices
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
6 using Sbplib.LazyTensors
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 import Sbplib.SbpOperators.Stencil
732
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
9 import Sbplib.SbpOperators.VolumeOperator
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 import Sbplib.SbpOperators.odd
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 import Sbplib.SbpOperators.even
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
1105
0ba4609605d4 REVIEW: Suggest changes to tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1099
diff changeset
13 # REVIEW: Remove the commented tests for 2D (it is tested in the user code), but
0ba4609605d4 REVIEW: Suggest changes to tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1099
diff changeset
14 # change testset Regions and testset Inferred, to test the 1D operators.
0ba4609605d4 REVIEW: Suggest changes to tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1099
diff changeset
15
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 @testset "VolumeOperator" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 inner_stencil = CenteredStencil(1/4, 2/4, 1/4)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 closure_stencils = (Stencil(1/2, 1/2; center=1), Stencil(0.,1.; center=2))
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 g_1D = EquidistantGrid(11,0.,1.)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 @testset "Constructors" begin
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
21 op = VolumeOperator(inner_stencil,closure_stencils,(11,),even)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
22 @test op == VolumeOperator(g_1D,inner_stencil,closure_stencils,even)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
23 @test op isa LazyTensor{T,1,1} where T
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 @testset "Sizes" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 @testset "1D" begin
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
28 op = VolumeOperator(g_1D,inner_stencil,closure_stencils,even)
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 @test range_size(op) == domain_size(op) == size(g_1D)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
33 # op_x = volume_operator(g_2D,inner_stencil,closure_stencils,even,1)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
34 # op_y = volume_operator(g_2D,inner_stencil,closure_stencils,odd,2)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
35 # v = zeros(size(g_2D))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
36 # Nx = size(g_2D)[1]
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
37 # Ny = size(g_2D)[2]
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
38 # for i = 1:Nx
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
39 # v[i,:] .= i
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
40 # end
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
41 # rx = copy(v)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
42 # rx[1,:] .= 1.5
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
43 # rx[Nx,:] .= (2*Nx-1)/2
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
44 # ry = copy(v)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
45 # ry[:,Ny-1:Ny] = -v[:,Ny-1:Ny]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
47 # @testset "Application" begin
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
48 # @test op_x*v ≈ rx rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
49 # @test op_y*v ≈ ry rtol = 1e-14
946
469ed954b493 Allow volume_operator, boundary_operator, and constant_interior_scaling_operator to act on arbitrary arrays
Jonatan Werpers <jonatan@werpers.com>
parents: 759
diff changeset
50
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
51 # @test (op_x*rand(ComplexF64,size(g_2D)))[2,2] isa ComplexF64
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
52 # end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
54 # @testset "Regions" begin
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
55 # @test (op_x*v)[Index(1,Lower),Index(3,Interior)] ≈ rx[1,3] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
56 # @test (op_x*v)[Index(2,Lower),Index(3,Interior)] ≈ rx[2,3] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
57 # @test (op_x*v)[Index(6,Interior),Index(3,Interior)] ≈ rx[6,3] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
58 # @test (op_x*v)[Index(10,Upper),Index(3,Interior)] ≈ rx[10,3] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
59 # @test (op_x*v)[Index(11,Upper),Index(3,Interior)] ≈ rx[11,3] rtol = 1e-14
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
61 # @test_throws BoundsError (op_x*v)[Index(3,Lower),Index(3,Interior)]
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
62 # @test_throws BoundsError (op_x*v)[Index(9,Upper),Index(3,Interior)]
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
64 # @test (op_y*v)[Index(3,Interior),Index(1,Lower)] ≈ ry[3,1] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
65 # @test (op_y*v)[Index(3,Interior),Index(2,Lower)] ≈ ry[3,2] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
66 # @test (op_y*v)[Index(3,Interior),Index(6,Interior)] ≈ ry[3,6] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
67 # @test (op_y*v)[Index(3,Interior),Index(11,Upper)] ≈ ry[3,11] rtol = 1e-14
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
68 # @test (op_y*v)[Index(3,Interior),Index(12,Upper)] ≈ ry[3,12] rtol = 1e-14
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
70 # @test_throws BoundsError (op_y*v)[Index(3,Interior),Index(10,Upper)]
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
71 # @test_throws BoundsError (op_y*v)[Index(3,Interior),Index(3,Lower)]
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
72 # end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
74 # @testset "Inferred" begin
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
75 # @test_skip @inferred apply(op_x, v,1,1)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
76 # @inferred apply(op_x, v, Index(1,Lower),Index(1,Lower))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
77 # @inferred apply(op_x, v, Index(6,Interior),Index(1,Lower))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
78 # @inferred apply(op_x, v, Index(11,Upper),Index(1,Lower))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
79 # @test_skip @inferred apply(op_y, v,1,1)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
80 # @inferred apply(op_y, v, Index(1,Lower),Index(1,Lower))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
81 # @inferred apply(op_y, v, Index(1,Lower),Index(6,Interior))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
82 # @inferred apply(op_y, v, Index(1,Lower),Index(11,Upper))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
83 # end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84 end