comparison test/SbpOperators/boundaryops/normal_derivative_test.jl @ 961:775d5513da8f feature/laplace_opset

Review: Fix boundary operator tests according to review comments
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 14 Mar 2022 09:41:23 +0100
parents 97e9a8337a86
children 7bf3121c6864 1ba8a398af9c
comparison
equal deleted inserted replaced
952:6a8d7fbf55fc 961:775d5513da8f
38 v∂y = evalOn(g_2D, (x,y)-> 2*(y-1) + x) 38 v∂y = evalOn(g_2D, (x,y)-> 2*(y-1) + x)
39 # TODO: Test for higher order polynomials? 39 # TODO: Test for higher order polynomials?
40 @testset "2nd order" begin 40 @testset "2nd order" begin
41 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=2) 41 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=2)
42 d_closure = parse_stencil(stencil_set["d1"]["closure"]) 42 d_closure = parse_stencil(stencil_set["d1"]["closure"])
43 d_w, d_e, d_s, d_n = 43 d_w, d_e, d_s, d_n = normal_derivative.(Ref(g_2D), Ref(d_closure), boundary_identifiers(g_2D))
44 map(id -> normal_derivative(g_2D, d_closure, id), boundary_identifiers(g_2D))
45 # REVIEW: Would prefere to write this as
46 # d_w, d_e, d_s, d_n = normal_derivative.(Ref(g_2D), Ref(d_closure), boundary_identifiers(g_2D))
47 # to avoid the line break
48 44
49 @test d_w*v ≈ -v∂x[1,:] atol = 1e-13 45 @test d_w*v ≈ -v∂x[1,:] atol = 1e-13
50 @test d_e*v ≈ v∂x[end,:] atol = 1e-13 46 @test d_e*v ≈ v∂x[end,:] atol = 1e-13
51 @test d_s*v ≈ -v∂y[:,1] atol = 1e-13 47 @test d_s*v ≈ -v∂y[:,1] atol = 1e-13
52 @test d_n*v ≈ v∂y[:,end] atol = 1e-13 48 @test d_n*v ≈ v∂y[:,end] atol = 1e-13
53 end 49 end
54 50
55 @testset "4th order" begin 51 @testset "4th order" begin
56 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=4) 52 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=4)
57 d_closure = parse_stencil(stencil_set["d1"]["closure"]) 53 d_closure = parse_stencil(stencil_set["d1"]["closure"])
58 d_w, d_e, d_s, d_n = 54 d_w, d_e, d_s, d_n = normal_derivative.(Ref(g_2D), Ref(d_closure), boundary_identifiers(g_2D))
59 map(id -> normal_derivative(g_2D, d_closure, id), boundary_identifiers(g_2D)) 55
60 # REVIEW: Same as above
61 @test d_w*v ≈ -v∂x[1,:] atol = 1e-13 56 @test d_w*v ≈ -v∂x[1,:] atol = 1e-13
62 @test d_e*v ≈ v∂x[end,:] atol = 1e-13 57 @test d_e*v ≈ v∂x[end,:] atol = 1e-13
63 @test d_s*v ≈ -v∂y[:,1] atol = 1e-13 58 @test d_s*v ≈ -v∂y[:,1] atol = 1e-13
64 @test d_n*v ≈ v∂y[:,end] atol = 1e-13 59 @test d_n*v ≈ v∂y[:,end] atol = 1e-13
65 end 60 end