annotate test/SbpOperators/volumeops/volume_operator_test.jl @ 1099:05a25a5063bb refactor/sbpoperators/inflation

Try to remove volume_operator and boundary_operator methods
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 21 Mar 2022 12:51:39 +0100
parents 1ba8a398af9c
children 0ba4609605d4
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
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 @testset "VolumeOperator" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 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
15 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
16 g_1D = EquidistantGrid(11,0.,1.)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 @testset "Constructors" begin
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
18 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
19 @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
20 @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
21 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 @testset "Sizes" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 @testset "1D" begin
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
25 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
26 @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
27 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
30 # 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
31 # 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
32 # v = zeros(size(g_2D))
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
33 # Nx = size(g_2D)[1]
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
34 # Ny = size(g_2D)[2]
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
35 # for i = 1:Nx
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
36 # v[i,:] .= i
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
37 # end
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
38 # rx = copy(v)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
39 # rx[1,:] .= 1.5
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
40 # 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
41 # ry = copy(v)
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
42 # 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
43
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
44 # @testset "Application" begin
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
45 # @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
46 # @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
47
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
48 # @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
49 # end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
51 # @testset "Regions" begin
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
52 # @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
53 # @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
54 # @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
55 # @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
56 # @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
57
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
58 # @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
59 # @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
60
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
61 # @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
62 # @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
63 # @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
64 # @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
65 # @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
66
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
67 # @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
68 # @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
69 # end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70
1099
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
71 # @testset "Inferred" begin
05a25a5063bb Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents: 995
diff changeset
72 # @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
73 # @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
74 # @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
75 # @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
76 # @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
77 # @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
78 # @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
79 # @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
80 # end
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81 end