Mercurial > repos > public > sbplib_julia
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
diff -r 7f7207b9bd6c -r d6618d628515 test/Grids/multiblockgrids_test.jl --- 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
