changeset 2021:d6618d628515 feature/grids/multiblock_grids

Factor out functions for creating different types of multiblock grids in the tests
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 12 Mar 2025 10:54:47 +0100
parents 7f7207b9bd6c
children 7f04753ead30
files test/Grids/multiblockgrids_test.jl
diffstat 1 files changed, 59 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/test/Grids/multiblockgrids_test.jl	Wed Mar 12 10:48:58 2025 +0100
+++ b/test/Grids/multiblockgrids_test.jl	Wed Mar 12 10:54:47 2025 +0100
@@ -1,55 +1,69 @@
 using Diffinitive.Grids
 using StaticArrays
 
+
+function multiblockgrid1d()
+    g₁ = equidistant_grid(0,1,5)
+    g₂ = equidistant_grid(0,1,5)
+    g₃ = equidistant_grid(0,1,5)
+
+    C = connection.([
+        (1, UpperBoundary(), 2, LowerBoundary()),
+        (2, UpperBoundary(), 3, LowerBoundary()),
+    ])
+
+    return MultiBlockGrid([g₁,g₂,g₃], C)
+end
+
+function multiblockgrid2d()
+    g₁₁ = equidistant_grid((0,0),(1,1),5,5)
+    g₁₂ = equidistant_grid((0,0),(1,1),5,5)
+    g₂₁ = equidistant_grid((0,0),(1,1),5,5)
+    g₂₂ = equidistant_grid((0,0),(1,1),5,5)
+
+    C = map(((i1,d1,b1,i2,d2,b2),)->connection(i1,CartesianBoundary{d1,b1}(), i2, CartesianBoundary{d2,b2}()),[
+        (1, 1, UpperBoundary, 2, 1, LowerBoundary),
+        (3, 1, UpperBoundary, 4, 1, LowerBoundary),
+        (1, 2, UpperBoundary, 3, 2, LowerBoundary),
+        (2, 2, UpperBoundary, 4, 2, LowerBoundary),
+    ])
+
+    return MultiBlockGrid([g₁₁, g₁₂, g₂₁, g₂₂], C)
+end
+
+function multiblockgrid_matrix()
+    g₁₁ = equidistant_grid((0,0),(1,1),5,5)
+    g₁₂ = equidistant_grid((0,0),(1,1),5,5)
+    g₂₁ = equidistant_grid((0,0),(1,1),5,5)
+    g₂₂ = equidistant_grid((0,0),(1,1),5,5)
+
+    C = map(((i1,d1,b1,i2,d2,b2),)->connection(CartesianIndex(i1),CartesianBoundary{d1,b1}(), CartesianIndex(i2), CartesianBoundary{d2,b2}()),[
+        ((1,1), 1, UpperBoundary, (1,2), 1, LowerBoundary),
+        ((2,1), 1, UpperBoundary, (2,2), 1, LowerBoundary),
+        ((1,1), 2, UpperBoundary, (1,2), 2, LowerBoundary),
+        ((2,1), 2, UpperBoundary, (2,2), 2, LowerBoundary),
+    ])
+
+    return MultiBlockGrid([g₁₁ g₁₂; g₂₁ g₂₂], C)
+end
+
+function multiblockgrid_dict()
+    g₁ = equidistant_grid(0,1,5)
+    g₂ = equidistant_grid(0,1,5)
+
+    C = [connection(:a, UpperBoundary(), :b, LowerBoundary())]
+    MultiBlockGrid(Dict(:a=>g₁, :b=>g₂), C)
+end
+
 @testset "MultiBlockGrid" begin
     @test MultiBlockGrid <: Grid
 
     @testset "Constructors" begin
-        # Vector
-        g₁ = equidistant_grid(0,1,5)
-        g₂ = equidistant_grid(0,1,5)
-        g₃ = equidistant_grid(0,1,5)
-
-        C = connection.([
-            (1, UpperBoundary(), 2, LowerBoundary()),
-            (2, UpperBoundary(), 3, LowerBoundary()),
-        ])
-
-        @test MultiBlockGrid([g₁,g₂,g₃], C) isa Grid{Float64,1}
-        @test MultiBlockGrid([g₁,g₂,g₃], C) isa MultiBlockGrid{Float64,1}
-
-
-        g₁₁ = equidistant_grid((0,0),(1,1),5,5)
-        g₁₂ = equidistant_grid((0,0),(1,1),5,5)
-        g₂₁ = equidistant_grid((0,0),(1,1),5,5)
-        g₂₂ = equidistant_grid((0,0),(1,1),5,5)
-
-        C = map(((i1,d1,b1,i2,d2,b2),)->connection(i1,CartesianBoundary{d1,b1}(), i2, CartesianBoundary{d2,b2}()),[
-            (1, 1, UpperBoundary, 2, 1, LowerBoundary),
-            (3, 1, UpperBoundary, 4, 1, LowerBoundary),
-            (1, 2, UpperBoundary, 3, 2, LowerBoundary),
-            (2, 2, UpperBoundary, 4, 2, LowerBoundary),
-        ])
-
-        @test MultiBlockGrid([g₁₁, g₁₂, g₂₁, g₂₂], C) isa MultiBlockGrid{SVector{2,Float64},2}
-
-        # Matrix
-        g₁₁ = equidistant_grid((0,0),(1,1),5,5)
-        g₁₂ = equidistant_grid((0,0),(1,1),5,5)
-        g₂₁ = equidistant_grid((0,0),(1,1),5,5)
-        g₂₂ = equidistant_grid((0,0),(1,1),5,5)
-
-        C = map(((i1,d1,b1,i2,d2,b2),)->connection(CartesianIndex(i1),CartesianBoundary{d1,b1}(), CartesianIndex(i2), CartesianBoundary{d2,b2}()),[
-            ((1,1), 1, UpperBoundary, (1,2), 1, LowerBoundary),
-            ((2,1), 1, UpperBoundary, (2,2), 1, LowerBoundary),
-            ((1,1), 2, UpperBoundary, (1,2), 2, LowerBoundary),
-            ((2,1), 2, UpperBoundary, (2,2), 2, LowerBoundary),
-        ])
-
-        @test MultiBlockGrid([g₁₁ g₁₂; g₂₁ g₂₂], C) isa MultiBlockGrid{SVector{2,Float64},2}
-
-        # Dictionary
-        @test MultiBlockGrid(Dict(:a=>g₁, :b=>g₂), [connection(:a, UpperBoundary(), :b, LowerBoundary())]) isa MultiBlockGrid{Float64,1}
+        @test multiblockgrid1d() isa Grid{Float64,1}
+        @test multiblockgrid1d() isa MultiBlockGrid{Float64,1}
+        @test multiblockgrid2d() isa MultiBlockGrid{SVector{2,Float64},2}
+        @test multiblockgrid_matrix() isa MultiBlockGrid{SVector{2,Float64},2}
+        @test multiblockgrid_dict() isa MultiBlockGrid{Float64,1}
     end
 
     @testset "Base.getindex" begin