annotate test/Grids/curvilinear_grid_test.jl @ 1432:64b60b42d367 feature/grids/curvilinear

Implement indexing interface
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 28 Aug 2023 09:30:34 +0200
parents 6adf31ba6cfd
children af73340a8f0e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1426
9c689a627244 Add src and test file for curvilinear grid type
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 using Sbplib.Grids
9c689a627244 Add src and test file for curvilinear grid type
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 using Test
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
3 using StaticArrays
1426
9c689a627244 Add src and test file for curvilinear grid type
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
9c689a627244 Add src and test file for curvilinear grid type
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 @testset "CurvilinearGrid" begin
1432
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
6 lg = equidistant_grid((11,11), (0,0), (1,1))
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
7 x̄ = map(ξ̄ -> 2ξ̄, lg)
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
8 J = map(ξ̄ -> @SArray(fill(2., 2, 2)), lg)
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
9 cg = CurvilinearGrid(lg, x̄, J)
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
10
1432
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
11 @test cg isa Grid{SVector{2, Float64},2}
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
12
1431
6adf31ba6cfd Add `jacobian` and `logicalgrid`
Jonatan Werpers <jonatan@werpers.com>
parents: 1430
diff changeset
13 @test jacobian(cg) isa Array{<:AbstractMatrix}
6adf31ba6cfd Add `jacobian` and `logicalgrid`
Jonatan Werpers <jonatan@werpers.com>
parents: 1430
diff changeset
14 @test logicalgrid(cg) isa Grid
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
15
1432
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
16 @testset "Indexing Interface" begin
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
17 cg = CurvilinearGrid(lg, x̄, J)
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
18 @test cg[1,1] == [0.0, 0.0]
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
19 @test cg[4,2] == [0.6, 0.2]
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
20 @test cg[6,10] == [1., 1.8]
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
21
1432
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
22 @test cg[begin, begin] == [0.0, 0.0]
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
23 @test cg[end,end] == [2.0, 2.0]
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
24 @test cg[begin,end] == [0., 2.]
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
25
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
26 @test eachindex(cg) == CartesianIndices((11,11))
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
27
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
28 @testset "cartesian indexing" begin
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
29 cases = [
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
30 (1,1) ,
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
31 (3,5) ,
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
32 (10,6),
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
33 (1,1) ,
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
34 (3,2) ,
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
35 ]
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
36
1432
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
37 @testset "i = $is" for (lg, is) ∈ cases
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
38 @test cg[CartesianIndex(is...)] == cg[is...]
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
39 end
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
40 end
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
41
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
42 @testset "eachindex" begin
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
43 @test eachindex(cg) == CartesianIndices((11,11))
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
44 end
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
45
1432
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
46 @testset "firstindex" begin
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
47 @test firstindex(cg, 1) == 1
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
48 @test firstindex(cg, 2) == 1
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
49 end
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
50
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
51 @testset "lastindex" begin
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
52 @test lastindex(cg, 1) == 11
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
53 @test lastindex(cg, 2) == 11
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
54 end
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
55 end
1432
64b60b42d367 Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents: 1431
diff changeset
56 # TODO: Test with different types of logical grids
1430
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
57
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
58 @testset "Iterator interface" begin
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
59 # @test eltype(EquidistantGrid(0:10)) == Int
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
60 # @test eltype(EquidistantGrid(0:2:10)) == Int
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
61 # @test eltype(EquidistantGrid(0:0.1:10)) == Float64
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
62
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
63 # @test size(EquidistantGrid(0:10)) == (11,)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
64 # @test size(EquidistantGrid(0:0.1:10)) == (101,)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
65
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
66 # @test collect(EquidistantGrid(0:0.1:0.5)) == [0.0, 0.1, 0.2, 0.3, 0.4, 0.5]
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
67
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
68 # @test Base.IteratorSize(EquidistantGrid{Float64, StepRange{Float64}}) == Base.HasShape{1}()
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
69 end
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
70
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
71 @testset "Base" begin
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
72 # @test ndims(EquidistantGrid(0:10)) == 1
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
73 end
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
74
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
75 @testset "boundary_identifiers" begin
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
76 # g = EquidistantGrid(0:0.1:10)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
77 # @test boundary_identifiers(g) == (Lower(), Upper())
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
78 # @inferred boundary_identifiers(g)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
79 end
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
80
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
81 @testset "boundary_grid" begin
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
82 # g = EquidistantGrid(0:0.1:1)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
83 # @test boundary_grid(g, Lower()) == ZeroDimGrid(0.0)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
84 # @test boundary_grid(g, Upper()) == ZeroDimGrid(1.0)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
85 end
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
86
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
87 @testset "refine" begin
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
88 # g = EquidistantGrid(0:0.1:1)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
89 # @test refine(g, 1) == g
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
90 # @test refine(g, 2) == EquidistantGrid(0:0.05:1)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
91 # @test refine(g, 3) == EquidistantGrid(0:(0.1/3):1)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
92 end
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
93
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
94 @testset "coarsen" begin
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
95 # g = EquidistantGrid(0:1:10)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
96 # @test coarsen(g, 1) == g
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
97 # @test coarsen(g, 2) == EquidistantGrid(0:2:10)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
98
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
99 # g = EquidistantGrid(0:0.1:1)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
100 # @test coarsen(g, 1) == g
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
101 # @test coarsen(g, 2) == EquidistantGrid(0:0.2:1)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
102
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
103 # g = EquidistantGrid(0:10)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
104 # @test coarsen(g, 1) == EquidistantGrid(0:1:10)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
105 # @test coarsen(g, 2) == EquidistantGrid(0:2:10)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
106
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
107 # @test_throws DomainError(3, "Size minus 1 must be divisible by the ratio.") coarsen(g, 3)
9fc3c1af33e5 Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents: 1426
diff changeset
108 end
1426
9c689a627244 Add src and test file for curvilinear grid type
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109 end