Mercurial > repos > public > sbplib_julia
comparison test/SbpOperators/boundaryops/normal_derivative_test.jl @ 934:af670581b464 feature/laplace_opset
Add tests for constructing boundary operators from stencil sets
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 25 Feb 2022 16:35:16 +0100 |
parents | d360fc2d9620 |
children | 7168d28b03e3 |
comparison
equal
deleted
inserted
replaced
933:d83f685f1031 | 934:af670581b464 |
---|---|
1 using Test | 1 using Test |
2 | 2 |
3 using Sbplib.SbpOperators | 3 using Sbplib.SbpOperators |
4 using Sbplib.Grids | 4 using Sbplib.Grids |
5 using Sbplib.LazyTensors | 5 using Sbplib.LazyTensors |
6 | 6 using Sbplib.RegionIndices |
7 import Sbplib.SbpOperators.BoundaryOperator | 7 import Sbplib.SbpOperators.BoundaryOperator |
8 | 8 |
9 @testset "normal_derivative" begin | 9 @testset "normal_derivative" begin |
10 g_1D = EquidistantGrid(11, 0.0, 1.0) | 10 g_1D = EquidistantGrid(11, 0.0, 1.0) |
11 g_2D = EquidistantGrid((11,12), (0.0, 0.0), (1.0,1.0)) | 11 g_2D = EquidistantGrid((11,12), (0.0, 0.0), (1.0,1.0)) |
12 @testset "normal_derivative" begin | 12 @testset "normal_derivative" begin |
13 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 13 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
14 d_closure = parse_stencil(stencil_set["d1"]["closure"]) | 14 d_closure = parse_stencil(stencil_set["d1"]["closure"]) |
15 @testset "1D" begin | 15 @testset "1D" begin |
16 d_l = normal_derivative(g_1D, d_closure, CartesianBoundary{1,Lower}()) | 16 d_l = normal_derivative(g_1D, d_closure, CartesianBoundary{1,Lower}()) |
17 @test d_l == normal_derivative(g_1D, stencil_set, CartesianBoundary{1,Lower}()) | |
17 @test d_l isa BoundaryOperator{T,Lower} where T | 18 @test d_l isa BoundaryOperator{T,Lower} where T |
18 @test d_l isa TensorMapping{T,0,1} where T | 19 @test d_l isa TensorMapping{T,0,1} where T |
19 end | 20 end |
20 @testset "2D" begin | 21 @testset "2D" begin |
21 d_w = normal_derivative(g_2D, d_closure, CartesianBoundary{1,Lower}()) | 22 d_w = normal_derivative(g_2D, d_closure, CartesianBoundary{1,Lower}()) |
22 d_n = normal_derivative(g_2D, d_closure, CartesianBoundary{2,Upper}()) | 23 d_n = normal_derivative(g_2D, d_closure, CartesianBoundary{2,Upper}()) |
23 Ix = IdentityMapping{Float64}((size(g_2D)[1],)) | 24 Ix = IdentityMapping{Float64}((size(g_2D)[1],)) |
24 Iy = IdentityMapping{Float64}((size(g_2D)[2],)) | 25 Iy = IdentityMapping{Float64}((size(g_2D)[2],)) |
25 d_l = normal_derivative(restrict(g_2D,1),d_closure,CartesianBoundary{1,Lower}()) | 26 d_l = normal_derivative(restrict(g_2D,1),d_closure,CartesianBoundary{1,Lower}()) |
26 d_r = normal_derivative(restrict(g_2D,2),d_closure,CartesianBoundary{1,Upper}()) | 27 d_r = normal_derivative(restrict(g_2D,2),d_closure,CartesianBoundary{1,Upper}()) |
28 @test d_w == normal_derivative(g_2D, stencil_set, CartesianBoundary{1,Lower}()) | |
27 @test d_w == d_l⊗Iy | 29 @test d_w == d_l⊗Iy |
28 @test d_n == Ix⊗d_r | 30 @test d_n == Ix⊗d_r |
29 @test d_w isa TensorMapping{T,1,2} where T | 31 @test d_w isa TensorMapping{T,1,2} where T |
30 @test d_n isa TensorMapping{T,1,2} where T | 32 @test d_n isa TensorMapping{T,1,2} where T |
31 end | 33 end |