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)