Mercurial > repos > public > sbplib_julia
comparison test/SbpOperators/volumeops/derivatives/dissipation_test.jl @ 1021:ee5a641a8277 feature/dissipation_operators
Add some tests and start implementing dissipation()
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 18 Mar 2022 15:44:03 +0100 |
parents | 3f5137ce3aa1 |
children | e74c41c4b60e |
comparison
equal
deleted
inserted
replaced
1020:3f5137ce3aa1 | 1021:ee5a641a8277 |
---|---|
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 |
7 using Sbplib.SbpOperators: Stencil | 7 using Sbplib.SbpOperators: Stencil |
8 | 8 |
9 using Sbplib.SbpOperators: dissipation_interior_weights | 9 using Sbplib.SbpOperators: dissipation_interior_weights |
10 using Sbplib.SbpOperators: dissipation_interior_stencil, dissipation_transpose_interior_stencil | 10 using Sbplib.SbpOperators: dissipation_interior_stencil, dissipation_transpose_interior_stencil |
11 using Sbplib.SbpOperators: midpoint, midpoint_transpose | 11 using Sbplib.SbpOperators: midpoint, midpoint_transpose |
12 using Sbplib.SbpOperators: dissipation_lower_closure_size, dissipation_upper_closure_size | 12 using Sbplib.SbpOperators: dissipation_lower_closure_size, dissipation_upper_closure_size |
13 using Sbplib.SbpOperators: dissipation_lower_closure_stencils,dissipation_upper_closure_stencils | 13 using Sbplib.SbpOperators: dissipation_lower_closure_stencils,dissipation_upper_closure_stencils |
14 using Sbplib.SbpOperators: dissipation_transpose_lower_closure_stencils, dissipation_transpose_upper_closure_stencils | 14 using Sbplib.SbpOperators: dissipation_transpose_lower_closure_stencils, dissipation_transpose_upper_closure_stencils |
15 | |
16 """ | |
17 monomial(x,k) | |
18 | |
19 Evaluates ``x^k/k!` with the convetion that it is ``0`` for all ``k<0``. | |
20 Has the property that ``d/dx monomial(x,k) = monomial(x,k-1)`` | |
21 """ | |
22 function monomial(x,k) | |
23 if k < 0 | |
24 return zero(x) | |
25 end | |
26 x^k/factorial(k) | |
27 end | |
28 | |
29 @testset "dissipation" begin | |
30 g = EquidistantGrid(20, 0., 11.) | |
31 D,Dᵀ = dissipation(g, 1) | |
32 | |
33 @test D isa TensorMapping{Float64,1,1} where T | |
34 @test Dᵀ isa TensorMapping{Float64,1,1} where T | |
35 | |
36 @testset "Accuracy conditions" begin | |
37 N = 20 | |
38 g = EquidistantGrid(N, 0//1,2//1) | |
39 @testset "D_$p" for p ∈ [1,2,3,4] | |
40 D,Dᵀ = dissipation(g, p) | |
41 | |
42 @testset "x^$k" for k ∈ 0:1 | |
43 v = evalOn(g, x->monomial(x,k)) | |
44 | |
45 x, = points(g)[10] | |
46 @test (D*v)[10] == monomial(x,k-1) | |
47 end | |
48 | |
49 # Test Dᵀ works backwards and interior forwards | |
50 end | |
51 end | |
52 end | |
15 | 53 |
16 @testset "dissipation_interior_weights" begin | 54 @testset "dissipation_interior_weights" begin |
17 @test dissipation_interior_weights(1) == (-1, 1) | 55 @test dissipation_interior_weights(1) == (-1, 1) |
18 @test dissipation_interior_weights(2) == (1,-2, 1) | 56 @test dissipation_interior_weights(2) == (1,-2, 1) |
19 @test dissipation_interior_weights(3) == (-1, 3,-3, 1) | 57 @test dissipation_interior_weights(3) == (-1, 3,-3, 1) |