Mercurial > repos > public > sbplib_julia
annotate test/SbpOperators/volumeops/volume_operator_test.jl @ 1193:04dda6aa9673 tooling/benchmarks
Add some things to README.md
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Fri, 27 Jan 2023 22:06:12 +0100 |
| parents | 03c217c50d7c |
| children | 7d52c4835d15 |
| 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 |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 @testset "VolumeOperator" begin |
|
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 inner_stencil = CenteredStencil(1/4, 2/4, 1/4) |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
16 closure_stencils = (Stencil(1/2, 1/2; center=1), Stencil(2.,1.; center=2)) |
|
1109
69c635e1d346
Rename g_1D and remove nested testset
Jonatan Werpers <jonatan@werpers.com>
parents:
1105
diff
changeset
|
17 g = EquidistantGrid(11,0.,1.) |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
18 |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 @testset "Constructors" begin |
|
1099
05a25a5063bb
Try to remove volume_operator and boundary_operator methods
Jonatan Werpers <jonatan@werpers.com>
parents:
995
diff
changeset
|
20 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
|
21 @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
|
22 @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
|
23 end |
|
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 |
|
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 @testset "Sizes" begin |
|
1109
69c635e1d346
Rename g_1D and remove nested testset
Jonatan Werpers <jonatan@werpers.com>
parents:
1105
diff
changeset
|
26 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
|
27 @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
|
28 end |
|
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
30 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
31 op_even = VolumeOperator(g, inner_stencil, closure_stencils, even) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
32 op_odd = VolumeOperator(g, inner_stencil, closure_stencils, odd) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
33 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
34 N = size(g)[1] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
35 v = rand(N) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
36 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
37 r_even = copy(v) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
38 r_odd = copy(v) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
39 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
40 r_even[1] = (v[1] + v[2])/2 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
41 r_odd[1] = (v[1] + v[2])/2 |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
43 r_even[2] = 2v[1] + v[2] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
44 r_odd[2] = 2v[1] + v[2] |
|
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
|
45 |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
46 for i ∈ 3:N-2 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
47 r_even[i] = (v[i-1] + 2v[i] + v[i+1])/4 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
48 r_odd[i] = (v[i-1] + 2v[i] + v[i+1])/4 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
49 end |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
50 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
51 r_even[N-1] = v[N-1] + 2v[N] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
52 r_odd[N-1] = -v[N-1] - 2v[N] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
53 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
54 r_even[N] = (v[N-1] + v[N])/2 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
55 r_odd[N] = -(v[N-1] + v[N])/2 |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 |
|
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
58 @testset "Application" begin |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
59 @test op_even*v ≈ r_even |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
60 @test op_odd*v ≈ r_odd |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
62 @test (op_even*rand(ComplexF64,size(g)))[2] isa ComplexF64 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
63 end |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
65 @testset "Regions" begin |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
66 @test (op_even*v)[Index(1,Lower)] ≈ r_even[1] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
67 @test (op_even*v)[Index(2,Lower)] ≈ r_even[2] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
68 @test (op_even*v)[Index(6,Interior)] ≈ r_even[6] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
69 @test (op_even*v)[Index(10,Upper)] ≈ r_even[10] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
70 @test (op_even*v)[Index(11,Upper)] ≈ r_even[11] |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 |
|
1151
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
72 @test_throws BoundsError (op_even*v)[Index(3,Lower)] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
73 @test_throws BoundsError (op_even*v)[Index(9,Upper)] |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
74 end |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
75 |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
76 @testset "Inferred" begin |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
77 @inferred apply(op_even, v, 1) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
78 @inferred apply(op_even, v, Index(1,Lower)) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
79 @inferred apply(op_even, v, Index(6,Interior)) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
80 @inferred apply(op_even, v, Index(11,Upper)) |
|
56bc2c6a17fd
Fix tests after review comment
Jonatan Werpers <jonatan@werpers.com>
parents:
1109
diff
changeset
|
81 end |
|
728
45966c77cb20
Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 end |
