Mercurial > repos > public > sbplib_julia
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 |