comparison test/SbpOperators/volumeops/derivatives/dissipation_test.jl @ 1035:ceda69b8f27a feature/dissipation_operators

Add test for transpose equality and fix bugs found
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 22 Mar 2022 13:28:06 +0100
parents ed19c549c506
children c89c6b63c7f4
comparison
equal deleted inserted replaced
1034:ed19c549c506 1035:ceda69b8f27a
34 @test 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 h = only(spacing(g))
40 @testset "D_$p" for p ∈ [1,2,3,4] 40 @testset "D_$p" for p ∈ [1,2,3,4]
41 D,Dᵀ = undevided_dissipation(g, p) 41 D,Dᵀ = undevided_dissipation(g, p)
42 42
43 @testset "x^$k" for k ∈ 0:p 43 @testset "x^$k" for k ∈ 0:p
44 v = evalOn(g, x->monomial(x,k)) 44 v = evalOn(g, x->monomial(x,k))
45 vₚₓ = evalOn(g, x->monomial(x,k-p)) 45 vₚₓ = evalOn(g, x->monomial(x,k-p))
46 46
47 @test D*v == h^p * vₚₓ 47 @test D*v == h^p * vₚₓ
48 end 48 end
49 49 end
50 50 end
51 @testset "x^$k" for k ∈ 0:p 51
52 v = evalOn(g, x->monomial(x,k)) 52 @testset "tanspose equality" begin
53 vₚₓ = evalOn(g, x->monomial(x,k-p)) 53 function get_matrix(D)
54 54 N = only(range_size(D))
55 for i ∈ SbpOperators.lower_closure_size(Dᵀ)+1:N-SbpOperators.upper_closure_size(Dᵀ) 55 M = only(domain_size(D))
56 @test (Dᵀ*v)[i] == h^p * vₚₓ[i] 56
57 Dmat = zeros(N,M)
58 e = zeros(M)
59 for i ∈ 1:M
60 if i > 1
61 e[i-1] = 0.
57 end 62 end
63 e[i] = 1.
64 Dmat[:,i] = D*e
58 end 65 end
66
67 return Dmat
68 end
69
70 g = EquidistantGrid(11, 0., 1.)
71 @testset "D_$p" for p ∈ [1,2,3,4]
72 D,Dᵀ = undevided_dissipation(g, p)
73
74 D̄ = get_matrix(D)
75 D̄ᵀ = get_matrix(Dᵀ)
76
77 @test D̄ == D̄ᵀ'
59 end 78 end
60 end 79 end
61 end 80 end
62 81
63 @testset "dissipation_interior_weights" begin 82 @testset "dissipation_interior_weights" begin
66 @test dissipation_interior_weights(3) == (-1, 3,-3, 1) 85 @test dissipation_interior_weights(3) == (-1, 3,-3, 1)
67 @test dissipation_interior_weights(4) == (1, -4, 6, -4, 1) 86 @test dissipation_interior_weights(4) == (1, -4, 6, -4, 1)
68 end 87 end
69 88
70 @testset "dissipation_interior_stencil" begin 89 @testset "dissipation_interior_stencil" begin
71 @test dissipation_interior_stencil(dissipation_interior_weights(1)) == Stencil(-1,1, center=2) 90 @test dissipation_interior_stencil(dissipation_interior_weights(1)) == Stencil(-1, 1, center=2)
72 @test dissipation_interior_stencil(dissipation_interior_weights(2)) == Stencil(1,-2,1, center=2) 91 @test dissipation_interior_stencil(dissipation_interior_weights(2)) == Stencil( 1,-2, 1, center=2)
73 @test dissipation_interior_stencil(dissipation_interior_weights(3)) == Stencil(-1,3,-3,1, center=3) 92 @test dissipation_interior_stencil(dissipation_interior_weights(3)) == Stencil(-1, 3,-3, 1, center=3)
74 @test dissipation_interior_stencil(dissipation_interior_weights(4)) == Stencil(1, -4, 6, -4, 1, center=3) 93 @test dissipation_interior_stencil(dissipation_interior_weights(4)) == Stencil( 1,-4, 6,-4, 1, center=3)
75 end 94 end
76 95
77 @testset "dissipation_transpose_interior_stencil" begin 96 @testset "dissipation_transpose_interior_stencil" begin
78 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(1)) == Stencil(-1,1, center=1) 97 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(1)) == Stencil(1,-1, center=1)
79 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(2)) == Stencil(1,-2,1, center=2) 98 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(2)) == Stencil(1,-2, 1, center=2)
80 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(3)) == Stencil(-1,3,-3,1, center=2) 99 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(3)) == Stencil(1,-3, 3,-1, center=2)
81 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(4)) == Stencil(1, -4, 6, -4, 1, center=3) 100 @test dissipation_transpose_interior_stencil(dissipation_interior_weights(4)) == Stencil(1,-4, 6,-4, 1, center=3)
82 end 101 end
83 102
84 @testset "midpoint" begin 103 @testset "midpoint" begin
85 @test midpoint((1,1)) == 2 104 @test midpoint((1,1)) == 2
86 @test midpoint((1,1,1)) == 2 105 @test midpoint((1,1,1)) == 2