Mercurial > repos > public > sbplib_julia
comparison test/testSbpOperators.jl @ 385:6ef73611f4d9 refactor/sbp_operators_tests/collect_and_compare
Replace tolerance variables with actual values.
I think this reads clearer and also allows tweaking the tolerances per test.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 01 Oct 2020 06:20:30 +0200 |
parents | 3a779c31e59e |
children | 4686c3509b54 |
comparison
equal
deleted
inserted
replaced
384:3a779c31e59e | 385:6ef73611f4d9 |
---|---|
56 @test Dₓₓ' isa TensorMapping{T,1,1} where T | 56 @test Dₓₓ' isa TensorMapping{T,1,1} where T |
57 | 57 |
58 # TODO: Should perhaps set tolerance level for isapporx instead? | 58 # TODO: Should perhaps set tolerance level for isapporx instead? |
59 # Are these tolerance levels resonable or should tests be constructed | 59 # Are these tolerance levels resonable or should tests be constructed |
60 # differently? | 60 # differently? |
61 equalitytol = 0.5*1e-10 | |
62 accuracytol = 0.5*1e-3 | |
63 # 4th order interior stencil, 2nd order boundary stencil, | 61 # 4th order interior stencil, 2nd order boundary stencil, |
64 # implies that L*v should be exact for v - monomial up to order 3. | 62 # implies that L*v should be exact for v - monomial up to order 3. |
65 # Exact differentiation is measured point-wise. For other grid functions | 63 # Exact differentiation is measured point-wise. For other grid functions |
66 # the error is measured in the l2-norm. | 64 # the error is measured in the l2-norm. |
67 @test all(abs.(Dₓₓ*v0) .<= equalitytol) | 65 @test all(abs.(Dₓₓ*v0) .<= 5e-11) |
68 @test all(abs.(Dₓₓ*v1) .<= equalitytol) | 66 @test all(abs.(Dₓₓ*v1) .<= 5e-11) |
69 @test all(abs.((Dₓₓ*v2 - v0)) .<= equalitytol) | 67 @test all(abs.((Dₓₓ*v2 - v0)) .<= 5e-11) |
70 @test all(abs.((Dₓₓ*v3 - v1)) .<= equalitytol) | 68 @test all(abs.((Dₓₓ*v3 - v1)) .<= 5e-11) |
71 e4 = Dₓₓ*v4 - v2 | 69 e4 = Dₓₓ*v4 - v2 |
72 e5 = Dₓₓ*v5 + v5 | 70 e5 = Dₓₓ*v5 + v5 |
73 @test sqrt(h*sum(e4.^2)) <= accuracytol | 71 @test sqrt(h*sum(e4.^2)) <= 5e-4 |
74 @test sqrt(h*sum(e5.^2)) <= accuracytol | 72 @test sqrt(h*sum(e5.^2)) <= 5e-4 |
75 end | 73 end |
76 | 74 |
77 @testset "Laplace2D" begin | 75 @testset "Laplace2D" begin |
78 op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") | 76 op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") |
79 Lx = 1.5 | 77 Lx = 1.5 |
102 @test L' isa TensorMapping{T,2,2} where T | 100 @test L' isa TensorMapping{T,2,2} where T |
103 | 101 |
104 # TODO: Should perhaps set tolerance level for isapporx instead? | 102 # TODO: Should perhaps set tolerance level for isapporx instead? |
105 # Are these tolerance levels resonable or should tests be constructed | 103 # Are these tolerance levels resonable or should tests be constructed |
106 # differently? | 104 # differently? |
107 equalitytol = 5e-11 | |
108 accuracytol = 5e-4 | |
109 # 4th order interior stencil, 2nd order boundary stencil, | 105 # 4th order interior stencil, 2nd order boundary stencil, |
110 # implies that L*v should be exact for v - monomial up to order 3. | 106 # implies that L*v should be exact for v - monomial up to order 3. |
111 # Exact differentiation is measured point-wise. For other grid functions | 107 # Exact differentiation is measured point-wise. For other grid functions |
112 # the error is measured in the H-norm. | 108 # the error is measured in the H-norm. |
113 @test all(abs.(L*v0) .<= equalitytol) | 109 @test all(abs.(L*v0) .<= 5e-11) |
114 @test all(abs.(L*v1) .<= equalitytol) | 110 @test all(abs.(L*v1) .<= 5e-11) |
115 @test all(L*v2 .≈ v0) # Seems to be more accurate | 111 @test all(L*v2 .≈ v0) # Seems to be more accurate |
116 @test all(abs.((L*v3 - v1)) .<= equalitytol) | 112 @test all(abs.((L*v3 - v1)) .<= 5e-11) |
117 e4 = L*v4 - v2 | 113 e4 = L*v4 - v2 |
118 e5 = L*v5 - v5ₓₓ | 114 e5 = L*v5 - v5ₓₓ |
119 | 115 |
120 h = spacing(g) | 116 h = spacing(g) |
121 @test sqrt(prod(h)*sum(e4.^2)) <= accuracytol | 117 @test sqrt(prod(h)*sum(e4.^2)) <= 5e-4 |
122 @test sqrt(prod(h)*sum(e5.^2)) <= accuracytol | 118 @test sqrt(prod(h)*sum(e5.^2)) <= 5e-4 |
123 end | 119 end |
124 | 120 |
125 @testset "DiagonalInnerProduct" begin | 121 @testset "DiagonalInnerProduct" begin |
126 op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") | 122 op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") |
127 L = 2.3 | 123 L = 2.3 |