Mercurial > repos > public > sbplib_julia
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) |