Mercurial > repos > public > sbplib_julia
comparison test/SbpOperators/volumeops/derivatives/first_derivative_test.jl @ 974:ba023fc09961 feature/first_derivative
Add stencil_set method and accuracy tests
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 15 Mar 2022 07:29:41 +0100 |
parents | 803f60f461c1 |
children | 1a05009e731b |
comparison
equal
deleted
inserted
replaced
973:4c17a7d6ae5e | 974:ba023fc09961 |
---|---|
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 | 5 |
6 using Sbplib.SbpOperators: closure_size | |
7 | |
8 """ | |
9 monomial(x,k) | |
10 | |
11 Evaluates ``x^k/k!` with the convetion that it is ``0`` for all ``k<0``. | |
12 Has the property that ``d/dx monomial(x,k) = monomial(x,k-1)`` | |
13 """ | |
14 function monomial(x,k) | |
15 if k < 0 | |
16 return zero(x) | |
17 end | |
18 x^k/factorial(k) | |
19 end | |
20 | |
21 @testset "first_derivative" begin | |
22 @testset "accuracy" begin | |
23 N = 20 | |
24 g = EquidistantGrid(N, 0//1,2//1) | |
25 @testset for order ∈ [2,4] | |
26 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order) | |
27 D₁ = first_derivative(g, stencil_set, 1) | |
28 | |
29 @testset "boundary accuracy $k" for k ∈ 0:order÷2 | |
30 v = evalOn(g, x->monomial(x,k)) | |
31 | |
32 @testset for i ∈ 1:closure_size(D₁) | |
33 x, = points(g)[i] | |
34 @test (D₁*v)[i] == monomial(x,k-1) | |
35 end | |
36 | |
37 @testset for i ∈ (N-closure_size(D₁)+1):N | |
38 x, = points(g)[i] | |
39 @test (D₁*v)[i] == monomial(x,k-1) | |
40 end | |
41 end | |
42 | |
43 @testset "interior accuracy $k" for k ∈ 0:order | |
44 v = evalOn(g, x->monomial(x,k)) | |
45 | |
46 x, = points(g)[10] | |
47 @test (D₁*v)[10] == monomial(x,k-1) | |
48 end | |
49 end | |
50 end | |
51 end | |
52 |