view test/Grids/multiblockgrids_test.jl @ 2018:a3ffc3202813 feature/grids/multiblock_grids

Start implementation of MultiBlockGrid
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 12 Mar 2025 09:34:00 +0100
parents ea2a15454cf2
children fb2dc185c197
line wrap: on
line source

using Diffinitive.Grids

@testset "MultiBlockGrid" begin
    @test MultiBlockGrid <: Grid

    @testset "Constructors" begin
        g₁ = equidistant_grid(0,1,5)
        g₂ = equidistant_grid(0,1,5)
        g₃ = equidistant_grid(0,1,5)


        # Vector
        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}

        # Dictionary
        @test MultiBlockGrid(Dict(:a=>g₁, :b=>g₂), [connection(:a, UpperBoundary(), :b, LowerBoundary())]) isa MultiBlockGrid{Float64,1}
    end
end


@testset "MultiBlockBoundary" begin
    @test MultiBlockBoundary{1,UpperBoundary}() isa BoundaryIdentifier

    @test grid_id(MultiBlockBoundary{1,UpperBoundary}()) == 1

    @test boundary_id(MultiBlockBoundary{1,UpperBoundary}()) == UpperBoundary()
end

@testset "connection" begin
    @test connection(1, UpperBoundary(), 2, LowerBoundary()) == (MultiBlockBoundary{1,UpperBoundary}(), MultiBlockBoundary{2,LowerBoundary}())
    @test connection(:a, UpperBoundary(), :b, LowerBoundary()) == (MultiBlockBoundary{:a,UpperBoundary}(), MultiBlockBoundary{:b,LowerBoundary}())
    @test connection((1, UpperBoundary(), 2, LowerBoundary())) == (MultiBlockBoundary{1,UpperBoundary}(), MultiBlockBoundary{2,LowerBoundary}())

    @test_throws Exception connection(1, UpperBoundary, 2, LowerBoundary())
    @test_throws Exception connection(1, UpperBoundary(), 2, LowerBoundary)
end