Mercurial > repos > public > sbplib_julia
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 |
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 |