comparison test/SbpOperators/volumeops/derivatives/dissipation_test.jl @ 1034:ed19c549c506 feature/dissipation_operators

Implement undevided dissipation operators
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 22 Mar 2022 12:33:58 +0100
parents 0cb4c6b15d8e
children ceda69b8f27a
comparison
equal deleted inserted replaced
1033:0cb4c6b15d8e 1034:ed19c549c506
24 return zero(x) 24 return zero(x)
25 end 25 end
26 x^k/factorial(k) 26 x^k/factorial(k)
27 end 27 end
28 28
29 @testset "dissipation" begin 29 @testset "undevided_dissipation" begin
30 g = EquidistantGrid(20, 0., 11.) 30 g = EquidistantGrid(20, 0., 11.)
31 D,Dᵀ = dissipation(g, 1) 31 D,Dᵀ = undevided_dissipation(g, 1)
32 32
33 @test_broken D isa LazyTensor{Float64,1,1} where T 33 @test D isa LazyTensor{Float64,1,1} where T
34 @test_broken Dᵀ isa LazyTensor{Float64,1,1} where T 34 @test Dᵀ isa LazyTensor{Float64,1,1} where T
35 35
36 @testset "Accuracy conditions" begin 36 @testset "Accuracy conditions" begin
37 N = 20 37 N = 20
38 g = EquidistantGrid(N, 0//1,2//1) 38 g = EquidistantGrid(N, 0//1,2//1)
39 h = spacing(g)[1]
39 @testset "D_$p" for p ∈ [1,2,3,4] 40 @testset "D_$p" for p ∈ [1,2,3,4]
40 D,Dᵀ = dissipation(g, p) 41 D,Dᵀ = undevided_dissipation(g, p)
41 42
42 @testset "x^$k" for k ∈ 0:1 43 @testset "x^$k" for k ∈ 0:p
43 v = evalOn(g, x->monomial(x,k)) 44 v = evalOn(g, x->monomial(x,k))
45 vₚₓ = evalOn(g, x->monomial(x,k-p))
44 46
45 x, = points(g)[10] 47 @test D*v == h^p * vₚₓ
46 @test_broken (D*v)[10] == monomial(x,k-1)
47 end 48 end
48 49
49 # Test Dᵀ works backwards and interior forwards 50
51 @testset "x^$k" for k ∈ 0:p
52 v = evalOn(g, x->monomial(x,k))
53 vₚₓ = evalOn(g, x->monomial(x,k-p))
54
55 for i ∈ SbpOperators.lower_closure_size(Dᵀ)+1:N-SbpOperators.upper_closure_size(Dᵀ)
56 @test (Dᵀ*v)[i] == h^p * vₚₓ[i]
57 end
58 end
50 end 59 end
51 end 60 end
52 end 61 end
53 62
54 @testset "dissipation_interior_weights" begin 63 @testset "dissipation_interior_weights" begin