Mercurial > repos > public > sbplib_julia
comparison test/testSbpOperators.jl @ 694:6ab473e0ea80 refactor/operator_naming
Merging in default
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Sat, 13 Feb 2021 16:07:46 +0100 |
parents | 1accc3e051d0 04149e80e25c |
children | 1b3b8f82349e |
comparison
equal
deleted
inserted
replaced
690:1accc3e051d0 | 694:6ab473e0ea80 |
---|---|
391 @test L*v ≈ Δv rtol = 5e-4 norm = l2 | 391 @test L*v ≈ Δv rtol = 5e-4 norm = l2 |
392 end | 392 end |
393 end | 393 end |
394 end | 394 end |
395 | 395 |
396 @testset "DiagonalQuadrature" begin | 396 @testset "Quadrature diagonal" begin |
397 Lx = π/2. | 397 Lx = π/2. |
398 Ly = Float64(π) | 398 Ly = Float64(π) |
399 Lz = 1. | |
399 g_1D = EquidistantGrid(77, 0.0, Lx) | 400 g_1D = EquidistantGrid(77, 0.0, Lx) |
400 g_2D = EquidistantGrid((77,66), (0.0, 0.0), (Lx,Ly)) | 401 g_2D = EquidistantGrid((77,66), (0.0, 0.0), (Lx,Ly)) |
402 g_3D = EquidistantGrid((10,10, 10), (0.0, 0.0, 0.0), (Lx,Ly,Lz)) | |
401 integral(H,v) = sum(H*v) | 403 integral(H,v) = sum(H*v) |
402 @testset "Constructors" begin | 404 @testset "quadrature" begin |
403 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 405 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
404 @testset "1D" begin | 406 @testset "0D" begin |
405 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 407 H = quadrature(EquidistantGrid{Float64}(),op.quadratureClosure) |
408 @test H == IdentityMapping{Float64}() | |
409 @test H isa TensorMapping{T,0,0} where T | |
410 end | |
411 @testset "1D" begin | |
412 H = quadrature(g_1D,op.quadratureClosure) | |
406 inner_stencil = CenteredStencil(1.) | 413 inner_stencil = CenteredStencil(1.) |
407 @test H == Quadrature(g_1D,inner_stencil,op.quadratureClosure) | 414 @test H == quadrature(g_1D,op.quadratureClosure,inner_stencil) |
408 @test H isa TensorMapping{T,1,1} where T | 415 @test H isa TensorMapping{T,1,1} where T |
409 end | 416 end |
410 @testset "1D" begin | 417 @testset "2D" begin |
411 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 418 H = quadrature(g_2D,op.quadratureClosure) |
412 H_x = DiagonalQuadrature(restrict(g_2D,1),op.quadratureClosure) | 419 H_x = quadrature(restrict(g_2D,1),op.quadratureClosure) |
413 H_y = DiagonalQuadrature(restrict(g_2D,2),op.quadratureClosure) | 420 H_y = quadrature(restrict(g_2D,2),op.quadratureClosure) |
414 @test H == H_x⊗H_y | 421 @test H == H_x⊗H_y |
415 @test H isa TensorMapping{T,2,2} where T | 422 @test H isa TensorMapping{T,2,2} where T |
416 end | 423 end |
417 end | 424 end |
418 | 425 |
419 @testset "Sizes" begin | 426 @testset "Sizes" begin |
420 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 427 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
421 @testset "1D" begin | 428 @testset "1D" begin |
422 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 429 H = quadrature(g_1D,op.quadratureClosure) |
423 @test domain_size(H) == size(g_1D) | 430 @test domain_size(H) == size(g_1D) |
424 @test range_size(H) == size(g_1D) | 431 @test range_size(H) == size(g_1D) |
425 end | 432 end |
426 @testset "2D" begin | 433 @testset "2D" begin |
427 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 434 H = quadrature(g_2D,op.quadratureClosure) |
428 @test domain_size(H) == size(g_2D) | 435 @test domain_size(H) == size(g_2D) |
429 @test range_size(H) == size(g_2D) | 436 @test range_size(H) == size(g_2D) |
430 end | 437 end |
431 end | 438 end |
432 | 439 |
439 end | 446 end |
440 u = evalOn(g_1D,x->sin(x)) | 447 u = evalOn(g_1D,x->sin(x)) |
441 | 448 |
442 @testset "2nd order" begin | 449 @testset "2nd order" begin |
443 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) | 450 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) |
444 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 451 H = quadrature(g_1D,op.quadratureClosure) |
445 for i = 1:2 | 452 for i = 1:2 |
446 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 | 453 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 |
447 end | 454 end |
448 @test integral(H,u) ≈ 1. rtol = 1e-4 | 455 @test integral(H,u) ≈ 1. rtol = 1e-4 |
449 end | 456 end |
450 | 457 |
451 @testset "4th order" begin | 458 @testset "4th order" begin |
452 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 459 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
453 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 460 H = quadrature(g_1D,op.quadratureClosure) |
454 for i = 1:4 | 461 for i = 1:4 |
455 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 | 462 @test integral(H,v[i]) ≈ v[i+1][end] - v[i+1][1] rtol = 1e-14 |
456 end | 463 end |
457 @test integral(H,u) ≈ 1. rtol = 1e-8 | 464 @test integral(H,u) ≈ 1. rtol = 1e-8 |
458 end | 465 end |
462 b = 2.1 | 469 b = 2.1 |
463 v = b*ones(Float64, size(g_2D)) | 470 v = b*ones(Float64, size(g_2D)) |
464 u = evalOn(g_2D,(x,y)->sin(x)+cos(y)) | 471 u = evalOn(g_2D,(x,y)->sin(x)+cos(y)) |
465 @testset "2nd order" begin | 472 @testset "2nd order" begin |
466 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) | 473 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) |
467 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 474 H = quadrature(g_2D,op.quadratureClosure) |
468 @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 | 475 @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 |
469 @test integral(H,u) ≈ π rtol = 1e-4 | 476 @test integral(H,u) ≈ π rtol = 1e-4 |
470 end | 477 end |
471 @testset "4th order" begin | 478 @testset "4th order" begin |
472 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 479 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
473 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 480 H = quadrature(g_2D,op.quadratureClosure) |
474 @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 | 481 @test integral(H,v) ≈ b*Lx*Ly rtol = 1e-13 |
475 @test integral(H,u) ≈ π rtol = 1e-8 | 482 @test integral(H,u) ≈ π rtol = 1e-8 |
476 end | 483 end |
477 end | 484 end |
478 end | 485 end |
522 @testset "1D" begin | 529 @testset "1D" begin |
523 v = evalOn(g_1D,x->sin(x)) | 530 v = evalOn(g_1D,x->sin(x)) |
524 u = evalOn(g_1D,x->x^3-x^2+1) | 531 u = evalOn(g_1D,x->x^3-x^2+1) |
525 @testset "2nd order" begin | 532 @testset "2nd order" begin |
526 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) | 533 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) |
527 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 534 H = quadrature(g_1D,op.quadratureClosure) |
528 Hi = InverseDiagonalQuadrature(g_1D,op.quadratureClosure) | 535 Hi = InverseDiagonalQuadrature(g_1D,op.quadratureClosure) |
529 @test Hi*H*v ≈ v rtol = 1e-15 | 536 @test Hi*H*v ≈ v rtol = 1e-15 |
530 @test Hi*H*u ≈ u rtol = 1e-15 | 537 @test Hi*H*u ≈ u rtol = 1e-15 |
531 end | 538 end |
532 @testset "4th order" begin | 539 @testset "4th order" begin |
533 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 540 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
534 H = DiagonalQuadrature(g_1D,op.quadratureClosure) | 541 H = quadrature(g_1D,op.quadratureClosure) |
535 Hi = InverseDiagonalQuadrature(g_1D,op.quadratureClosure) | 542 Hi = InverseDiagonalQuadrature(g_1D,op.quadratureClosure) |
536 @test Hi*H*v ≈ v rtol = 1e-15 | 543 @test Hi*H*v ≈ v rtol = 1e-15 |
537 @test Hi*H*u ≈ u rtol = 1e-15 | 544 @test Hi*H*u ≈ u rtol = 1e-15 |
538 end | 545 end |
539 end | 546 end |
540 @testset "2D" begin | 547 @testset "2D" begin |
541 v = evalOn(g_2D,(x,y)->sin(x)+cos(y)) | 548 v = evalOn(g_2D,(x,y)->sin(x)+cos(y)) |
542 u = evalOn(g_2D,(x,y)->x*y + x^5 - sqrt(y)) | 549 u = evalOn(g_2D,(x,y)->x*y + x^5 - sqrt(y)) |
543 @testset "2nd order" begin | 550 @testset "2nd order" begin |
544 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) | 551 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) |
545 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 552 H = quadrature(g_2D,op.quadratureClosure) |
546 Hi = InverseDiagonalQuadrature(g_2D,op.quadratureClosure) | 553 Hi = InverseDiagonalQuadrature(g_2D,op.quadratureClosure) |
547 @test Hi*H*v ≈ v rtol = 1e-15 | 554 @test Hi*H*v ≈ v rtol = 1e-15 |
548 @test Hi*H*u ≈ u rtol = 1e-15 | 555 @test Hi*H*u ≈ u rtol = 1e-15 |
549 end | 556 end |
550 @testset "4th order" begin | 557 @testset "4th order" begin |
551 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) | 558 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) |
552 H = DiagonalQuadrature(g_2D,op.quadratureClosure) | 559 H = quadrature(g_2D,op.quadratureClosure) |
553 Hi = InverseDiagonalQuadrature(g_2D,op.quadratureClosure) | 560 Hi = InverseDiagonalQuadrature(g_2D,op.quadratureClosure) |
554 @test Hi*H*v ≈ v rtol = 1e-15 | 561 @test Hi*H*v ≈ v rtol = 1e-15 |
555 @test Hi*H*u ≈ u rtol = 1e-15 | 562 @test Hi*H*u ≈ u rtol = 1e-15 |
556 end | 563 end |
557 end | 564 end |