Mercurial > repos > public > sbplib_julia
changeset 827:beae513ef8b3 operator_storage_array_of_table
Fix bug in boundary_restriction when grids and stencil does not have matching type
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 12 Jan 2022 07:45:38 +0100 |
parents | 4433be383840 |
children | ca182cbb8f49 |
files | src/SbpOperators/boundaryops/boundary_restriction.jl test/SbpOperators/boundaryops/boundary_restriction_test.jl |
diffstat | 2 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/SbpOperators/boundaryops/boundary_restriction.jl Tue Dec 21 16:30:16 2021 +0100 +++ b/src/SbpOperators/boundaryops/boundary_restriction.jl Wed Jan 12 07:45:38 2022 +0100 @@ -9,7 +9,10 @@ On a one-dimensional `grid`, `e` is a `BoundaryOperator`. On a multi-dimensional `grid`, `e` is the inflation of a `BoundaryOperator`. Also see the documentation of `SbpOperators.boundary_operator(...)` for more details. """ -boundary_restriction(grid::EquidistantGrid, closure_stencil, boundary::CartesianBoundary) = SbpOperators.boundary_operator(grid, closure_stencil, boundary) +function boundary_restriction(grid::EquidistantGrid, closure_stencil, boundary::CartesianBoundary) + converted_stencil = convert(Stencil{eltype(grid)}, closure_stencil) + return SbpOperators.boundary_operator(grid, converted_stencil, boundary) +end boundary_restriction(grid::EquidistantGrid{1}, closure_stencil, region::Region) = boundary_restriction(grid, closure_stencil, CartesianBoundary{1,typeof(region)}()) export boundary_restriction
--- a/test/SbpOperators/boundaryops/boundary_restriction_test.jl Tue Dec 21 16:30:16 2021 +0100 +++ b/test/SbpOperators/boundaryops/boundary_restriction_test.jl Wed Jan 12 07:45:38 2022 +0100 @@ -17,13 +17,13 @@ @testset "1D" begin e_l = boundary_restriction(g_1D,e_closure,Lower()) @test e_l == boundary_restriction(g_1D,e_closure,CartesianBoundary{1,Lower}()) - @test e_l == BoundaryOperator(g_1D,e_closure,Lower()) + @test e_l == BoundaryOperator(g_1D,Stencil{Float64}(e_closure),Lower()) @test e_l isa BoundaryOperator{T,Lower} where T @test e_l isa TensorMapping{T,0,1} where T e_r = boundary_restriction(g_1D,e_closure,Upper()) @test e_r == boundary_restriction(g_1D,e_closure,CartesianBoundary{1,Upper}()) - @test e_r == BoundaryOperator(g_1D,e_closure,Upper()) + @test e_r == BoundaryOperator(g_1D,Stencil{Float64}(e_closure),Upper()) @test e_r isa BoundaryOperator{T,Upper} where T @test e_r isa TensorMapping{T,0,1} where T end