Mercurial > repos > public > sbplib_julia
changeset 641:5e50e9815732 feature/volume_and_boundary_operators
Merge testsets Accuracy and Application for DiagonalQuadrature, and fix bugs
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Mon, 04 Jan 2021 17:16:04 +0100 |
parents | 0e20bfef5cee |
children | f4a16b403487 |
files | test/testSbpOperators.jl |
diffstat | 1 files changed, 39 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/test/testSbpOperators.jl Mon Jan 04 16:59:11 2021 +0100 +++ b/test/testSbpOperators.jl Mon Jan 04 17:16:04 2021 +0100 @@ -415,8 +415,8 @@ @testset "Constructors" begin @testset "1D" begin H = DiagonalQuadrature(g_1D,op.quadratureClosure) - inner_stencil = Stencil((spacing(g_1D)[1],),center=1) - H == Quadrature(g_1D,inner_stencil,op.quadratureClosure) + inner_stencil = Stencil((1.,),center=1) + @test H == Quadrature(g_1D,inner_stencil,op.quadratureClosure) @test H isa TensorMapping{T,1,1} where T end @testset "1D" begin @@ -441,45 +441,49 @@ end end - @testset "Application" begin - @testset "1D" begin - H = DiagonalQuadrature(g_1D,op.quadratureClosure) - a = 3.2 - v_1D = a*ones(Float64, size(g_1D)) - u_1D = evalOn(g_1D,x->sin(x)) - @test integral(H,v_1D) ≈ a*Lx rtol = 1e-13 - @test integral(H,u_1D) ≈ 1. rtol = 1e-8 - end + @testset "Accuracy" begin @testset "1D" begin - H = DiagonalQuadrature(g_2D,op.quadratureClosure) - b = 2.1 - v_2D = b*ones(Float64, size(g_2D)) - u_2D = evalOn(g_2D,(x,y)->sin(x)+cos(y)) - @test integral(H,v_2D) ≈ b*Lx*Ly rtol = 1e-13 - @test integral(H,u_2D) ≈ π rtol = 1e-8 - end - end + v = () + for i = 0:4 + f_i(x) = 1/factorial(i)*x^i + v = (v...,evalOn(g_1D,f_i)) + end + u = evalOn(g_1D,x->sin(x)) - @testset "Accuracy" begin - v = () - for i = 0:4 - f_i(x) = 1/factorial(i)*x^i - v = (v...,evalOn(g_1D,f_i)) - end + @testset "2nd order" begin + op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) + H = DiagonalQuadrature(g_1D,op.quadratureClosure) + for i = 1:2 + @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 + end + @test integral(H,u) ≈ 1. rtol = 1e-4 + end - @testset "2nd order" begin - op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) - H = DiagonalQuadrature(g_1D,op.quadratureClosure) - for i = 1:2 - @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 + @testset "4th order" begin + op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) + H = DiagonalQuadrature(g_1D,op.quadratureClosure) + for i = 1:4 + @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 + end + @test integral(H,u) ≈ 1. rtol = 1e-8 end end - @testset "4th order" begin - op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) - H = DiagonalQuadrature(g_1D,op.quadratureClosure) - for i = 1:4 - @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 + @testset "2D" begin + b = 2.1 + v = b*ones(Float64, size(g_2D)) + u = evalOn(g_2D,(x,y)->sin(x)+cos(y)) + @testset "2nd order" begin + op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) + H = DiagonalQuadrature(g_2D,op.quadratureClosure) + @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 + @test integral(H,u) ≈ π rtol = 1e-4 + end + @testset "4th order" begin + op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) + H = DiagonalQuadrature(g_2D,op.quadratureClosure) + @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 + @test integral(H,u) ≈ π rtol = 1e-8 end end end