Mercurial > repos > public > sbplib_julia
comparison test/testSbpOperators.jl @ 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 | 08b2c7a2d063 |
children | f4a16b403487 |
comparison
equal
deleted
inserted
replaced
640:0e20bfef5cee | 641:5e50e9815732 |
---|---|
413 g_2D = EquidistantGrid((77,66), (0.0, 0.0), (Lx,Ly)) | 413 g_2D = EquidistantGrid((77,66), (0.0, 0.0), (Lx,Ly)) |
414 integral(H,v) = sum(H*v) | 414 integral(H,v) = sum(H*v) |
415 @testset "Constructors" begin | 415 @testset "Constructors" begin |
416 @testset "1D" begin | 416 @testset "1D" begin |
417 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 417 H = DiagonalQuadrature(g_1D,op.quadratureClosure) |
418 inner_stencil = Stencil((spacing(g_1D)[1],),center=1) | 418 inner_stencil = Stencil((1.,),center=1) |
419 H == Quadrature(g_1D,inner_stencil,op.quadratureClosure) | 419 @test H == Quadrature(g_1D,inner_stencil,op.quadratureClosure) |
420 @test H isa TensorMapping{T,1,1} where T | 420 @test H isa TensorMapping{T,1,1} where T |
421 end | 421 end |
422 @testset "1D" begin | 422 @testset "1D" begin |
423 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 423 H = DiagonalQuadrature(g_2D,op.quadratureClosure) |
424 H_x = DiagonalQuadrature(restrict(g_2D,1),op.quadratureClosure) | 424 H_x = DiagonalQuadrature(restrict(g_2D,1),op.quadratureClosure) |
439 @test domain_size(H) == size(g_2D) | 439 @test domain_size(H) == size(g_2D) |
440 @test range_size(H) == size(g_2D) | 440 @test range_size(H) == size(g_2D) |
441 end | 441 end |
442 end | 442 end |
443 | 443 |
444 @testset "Application" begin | 444 @testset "Accuracy" begin |
445 @testset "1D" begin | 445 @testset "1D" begin |
446 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 446 v = () |
447 a = 3.2 | 447 for i = 0:4 |
448 v_1D = a*ones(Float64, size(g_1D)) | 448 f_i(x) = 1/factorial(i)*x^i |
449 u_1D = evalOn(g_1D,x->sin(x)) | 449 v = (v...,evalOn(g_1D,f_i)) |
450 @test integral(H,v_1D) ≈ a*Lx rtol = 1e-13 | 450 end |
451 @test integral(H,u_1D) ≈ 1. rtol = 1e-8 | 451 u = evalOn(g_1D,x->sin(x)) |
452 end | 452 |
453 @testset "1D" begin | 453 @testset "2nd order" begin |
454 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 454 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) |
455 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | |
456 for i = 1:2 | |
457 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 | |
458 end | |
459 @test integral(H,u) ≈ 1. rtol = 1e-4 | |
460 end | |
461 | |
462 @testset "4th order" begin | |
463 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | |
464 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | |
465 for i = 1:4 | |
466 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 | |
467 end | |
468 @test integral(H,u) ≈ 1. rtol = 1e-8 | |
469 end | |
470 end | |
471 | |
472 @testset "2D" begin | |
455 b = 2.1 | 473 b = 2.1 |
456 v_2D = b*ones(Float64, size(g_2D)) | 474 v = b*ones(Float64, size(g_2D)) |
457 u_2D = evalOn(g_2D,(x,y)->sin(x)+cos(y)) | 475 u = evalOn(g_2D,(x,y)->sin(x)+cos(y)) |
458 @test integral(H,v_2D) ≈ b*Lx*Ly rtol = 1e-13 | 476 @testset "2nd order" begin |
459 @test integral(H,u_2D) ≈ π rtol = 1e-8 | 477 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) |
460 end | 478 H = DiagonalQuadrature(g_2D,op.quadratureClosure) |
461 end | 479 @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 |
462 | 480 @test integral(H,u) ≈ π rtol = 1e-4 |
463 @testset "Accuracy" begin | |
464 v = () | |
465 for i = 0:4 | |
466 f_i(x) = 1/factorial(i)*x^i | |
467 v = (v...,evalOn(g_1D,f_i)) | |
468 end | |
469 | |
470 @testset "2nd order" begin | |
471 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) | |
472 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | |
473 for i = 1:2 | |
474 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 | |
475 end | 481 end |
476 end | 482 @testset "4th order" begin |
477 | 483 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
478 @testset "4th order" begin | 484 H = DiagonalQuadrature(g_2D,op.quadratureClosure) |
479 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 485 @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 |
480 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 486 @test integral(H,u) ≈ π rtol = 1e-8 |
481 for i = 1:4 | |
482 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 | |
483 end | 487 end |
484 end | 488 end |
485 end | 489 end |
486 end | 490 end |
487 | 491 |