Mercurial > repos > public > sbplib_julia
annotate test/SbpOperators/volumeops/volume_operator_test.jl @ 1109:69c635e1d346 refactor/sbpoperators/inflation
Rename g_1D and remove nested testset
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 09 Jun 2022 07:33:27 +0200 |
parents | 0ba4609605d4 |
children | 56bc2c6a17fd |
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)) |
1109
69c635e1d346
Rename g_1D and remove nested testset
Jonatan Werpers <jonatan@werpers.com>
parents:
1105
diff
changeset
|
19 g = EquidistantGrid(11,0.,1.) |
728
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) |
1109
69c635e1d346
Rename g_1D and remove nested testset
Jonatan Werpers <jonatan@werpers.com>
parents:
1105
diff
changeset
|
22 @test op == VolumeOperator(g,inner_stencil,closure_stencils,even) |
1099
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 |
1109
69c635e1d346
Rename g_1D and remove nested testset
Jonatan Werpers <jonatan@werpers.com>
parents:
1105
diff
changeset
|
27 op = VolumeOperator(g,inner_stencil,closure_stencils,even) |
69c635e1d346
Rename g_1D and remove nested testset
Jonatan Werpers <jonatan@werpers.com>
parents:
1105
diff
changeset
|
28 @test range_size(op) == domain_size(op) == size(g) |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 end |
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 |
1099
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
31 # 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
|
32 # 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
|
33 # v = zeros(size(g_2D)) |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
34 # Nx = size(g_2D)[1] |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
35 # Ny = size(g_2D)[2] |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
36 # for i = 1:Nx |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
37 # v[i,:] .= i |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
38 # end |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
39 # rx = copy(v) |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
40 # rx[1,:] .= 1.5 |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
41 # 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
|
42 # ry = copy(v) |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
43 # 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
|
44 |
1099
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
45 # @testset "Application" begin |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
46 # @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
|
47 # @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
|
48 |
1099
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
49 # @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
|
50 # end |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 |
1099
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
52 # @testset "Regions" begin |
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(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
|
54 # @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
|
55 # @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
|
56 # @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
|
57 # @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
|
58 |
1099
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(3,Lower),Index(3,Interior)] |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
60 # @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
|
61 |
1099
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(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
|
63 # @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
|
64 # @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
|
65 # @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
|
66 # @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
|
67 |
1099
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(10,Upper)] |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
69 # @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
|
70 # end |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 |
1099
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
72 # @testset "Inferred" begin |
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
73 # @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
|
74 # @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
|
75 # @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
|
76 # @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
|
77 # @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
|
78 # @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
|
79 # @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
|
80 # @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
|
81 # end |
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 end |