comparison test/SbpOperators/volumeops/derivatives/first_derivative_test.jl @ 1594:d68d02dd882f feature/boundary_conditions

Merge with default
author Vidar Stiernström <vidar.stiernstrom@gmail.com>
date Sat, 25 May 2024 16:07:10 -0700
parents 43aaf710463e
children 8e28cadfefb3
comparison
equal deleted inserted replaced
1591:615eeb6e662e 1594:d68d02dd882f
22 22
23 @testset "first_derivative" begin 23 @testset "first_derivative" begin
24 @testset "Constructors" begin 24 @testset "Constructors" begin
25 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=2) 25 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=2)
26 26
27 g₁ = equidistant_grid(11, 0., 1.) 27 g₁ = equidistant_grid(0., 1., 11)
28 g₂ = equidistant_grid((11,14), (0.,1.), (1.,3.)) 28 g₂ = equidistant_grid((0.,1.), (1.,3.), 11, 14)
29 29
30 @test first_derivative(g₁, stencil_set) isa LazyTensor{Float64,1,1} 30 @test first_derivative(g₁, stencil_set) isa LazyTensor{Float64,1,1}
31 @test first_derivative(g₂, stencil_set, 2) isa LazyTensor{Float64,2,2} 31 @test first_derivative(g₂, stencil_set, 2) isa LazyTensor{Float64,2,2}
32 32
33 interior_stencil = CenteredStencil(-1,0,1) 33 interior_stencil = CenteredStencil(-1,0,1)
36 @test first_derivative(g₁, interior_stencil, closure_stencils) isa LazyTensor{Float64,1,1} 36 @test first_derivative(g₁, interior_stencil, closure_stencils) isa LazyTensor{Float64,1,1}
37 end 37 end
38 38
39 @testset "Accuracy conditions" begin 39 @testset "Accuracy conditions" begin
40 N = 20 40 N = 20
41 g = equidistant_grid(N, 0//1,2//1) 41 g = equidistant_grid(0//1, 2//1, N)
42 @testset for order ∈ [2,4] 42 @testset for order ∈ [2,4]
43 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order) 43 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order)
44 D₁ = first_derivative(g, stencil_set) 44 D₁ = first_derivative(g, stencil_set)
45 45
46 @testset "boundary x^$k" for k ∈ 0:order÷2 46 @testset "boundary x^$k" for k ∈ 0:order÷2
66 end 66 end
67 end 67 end
68 68
69 @testset "Accuracy on function" begin 69 @testset "Accuracy on function" begin
70 @testset "1D" begin 70 @testset "1D" begin
71 g = equidistant_grid(30, 0.,1.) 71 g = equidistant_grid(0., 1., 30)
72 v = eval_on(g, x->exp(x)) 72 v = eval_on(g, x->exp(x))
73 @testset for (order, tol) ∈ [(2, 6e-3),(4, 2e-4)] 73 @testset for (order, tol) ∈ [(2, 6e-3),(4, 2e-4)]
74 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order) 74 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order)
75 D₁ = first_derivative(g, stencil_set) 75 D₁ = first_derivative(g, stencil_set)
76 76
77 @test D₁*v ≈ v rtol=tol 77 @test D₁*v ≈ v rtol=tol
78 end 78 end
79 end 79 end
80 80
81 @testset "2D" begin 81 @testset "2D" begin
82 g = equidistant_grid((30,60), (0.,0.),(1.,2.)) 82 g = equidistant_grid((0.,0.),(1.,2.), 30, 60)
83 v = eval_on(g, (x,y)->exp(0.8x+1.2*y)) 83 v = eval_on(g, (x,y)->exp(0.8x+1.2*y))
84 @testset for (order, tol) ∈ [(2, 6e-3),(4, 3e-4)] 84 @testset for (order, tol) ∈ [(2, 6e-3),(4, 3e-4)]
85 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order) 85 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order)
86 Dx = first_derivative(g, stencil_set, 1) 86 Dx = first_derivative(g, stencil_set, 1)
87 Dy = first_derivative(g, stencil_set, 2) 87 Dy = first_derivative(g, stencil_set, 2)