comparison test/testSbpOperators.jl @ 631:fb915bce2228 feature/volume_and_boundary_operators

Fix indentation
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 31 Dec 2020 08:28:06 +0100
parents 9f0f1ace5101
children bf8b66c596f7
comparison
equal deleted inserted replaced
630:9f0f1ace5101 631:fb915bce2228
519 @test range_size(op_s) == (11,) 519 @test range_size(op_s) == (11,)
520 @test range_size(op_n) == (11,) 520 @test range_size(op_n) == (11,)
521 end 521 end
522 end 522 end
523 523
524
525 @testset "Application" begin 524 @testset "Application" begin
526 @testset "1D" begin 525 @testset "1D" begin
527 v = evalOn(g_1D,x->1+x^2) 526 v = evalOn(g_1D,x->1+x^2)
528 u = fill(3.124) 527 u = fill(3.124)
529 @test (op_l*v)[] == 2*v[1] + v[2] + 3*v[3] 528 @test (op_l*v)[] == 2*v[1] + v[2] + 3*v[3]
540 @test op_e*v ≈ 2*v[end,:] + v[end-1,:] + 3*v[end-2,:] rtol = 1e-14 539 @test op_e*v ≈ 2*v[end,:] + v[end-1,:] + 3*v[end-2,:] rtol = 1e-14
541 @test op_s*v ≈ 2*v[:,1] + v[:,2] + 3*v[:,3] rtol = 1e-14 540 @test op_s*v ≈ 2*v[:,1] + v[:,2] + 3*v[:,3] rtol = 1e-14
542 @test op_n*v ≈ 2*v[:,end] + v[:,end-1] + 3*v[:,end-2] rtol = 1e-14 541 @test op_n*v ≈ 2*v[:,end] + v[:,end-1] + 3*v[:,end-2] rtol = 1e-14
543 542
544 543
545 g_x = rand(size(g_2D)[1]) 544 g_x = rand(size(g_2D)[1])
546 g_y = rand(size(g_2D)[2]) 545 g_y = rand(size(g_2D)[2])
547 546
548 G_w = zeros(Float64, size(g_2D)...) 547 G_w = zeros(Float64, size(g_2D)...)
549 G_w[1,:] = 2*g_y 548 G_w[1,:] = 2*g_y
550 G_w[2,:] = g_y 549 G_w[2,:] = g_y
551 G_w[3,:] = 3*g_y 550 G_w[3,:] = 3*g_y
552 551
553 G_e = zeros(Float64, size(g_2D)...) 552 G_e = zeros(Float64, size(g_2D)...)
554 G_e[end,:] = 2*g_y 553 G_e[end,:] = 2*g_y
555 G_e[end-1,:] = g_y 554 G_e[end-1,:] = g_y
556 G_e[end-2,:] = 3*g_y 555 G_e[end-2,:] = 3*g_y
557 556
558 G_s = zeros(Float64, size(g_2D)...) 557 G_s = zeros(Float64, size(g_2D)...)
559 G_s[:,1] = 2*g_x 558 G_s[:,1] = 2*g_x
560 G_s[:,2] = g_x 559 G_s[:,2] = g_x
561 G_s[:,3] = 3*g_x 560 G_s[:,3] = 3*g_x
562 561
563 G_n = zeros(Float64, size(g_2D)...) 562 G_n = zeros(Float64, size(g_2D)...)
564 G_n[:,end] = 2*g_x 563 G_n[:,end] = 2*g_x
565 G_n[:,end-1] = g_x 564 G_n[:,end-1] = g_x
566 G_n[:,end-2] = 3*g_x 565 G_n[:,end-2] = 3*g_x
567 566
568 @test op_w'*g_y == G_w 567 @test op_w'*g_y == G_w
569 @test op_e'*g_y == G_e 568 @test op_e'*g_y == G_e
570 @test op_s'*g_x == G_s 569 @test op_s'*g_x == G_s
571 @test op_n'*g_x == G_n 570 @test op_n'*g_x == G_n
572 end 571 end
573 572
574 @testset "Regions" begin 573 @testset "Regions" begin
575 u = fill(3.124) 574 u = fill(3.124)
576 @test (op_l'*u)[Index(1,Lower)] == 2*u[] 575 @test (op_l'*u)[Index(1,Lower)] == 2*u[]
577 @test (op_l'*u)[Index(2,Lower)] == u[] 576 @test (op_l'*u)[Index(2,Lower)] == u[]
578 @test (op_l'*u)[Index(6,Interior)] == 0 577 @test (op_l'*u)[Index(6,Interior)] == 0
579 @test (op_l'*u)[Index(10,Upper)] == 0 578 @test (op_l'*u)[Index(10,Upper)] == 0
580 @test (op_l'*u)[Index(11,Upper)] == 0 579 @test (op_l'*u)[Index(11,Upper)] == 0
581 580
582 @test (op_r'*u)[Index(1,Lower)] == 0 581 @test (op_r'*u)[Index(1,Lower)] == 0
583 @test (op_r'*u)[Index(2,Lower)] == 0 582 @test (op_r'*u)[Index(2,Lower)] == 0
584 @test (op_r'*u)[Index(6,Interior)] == 0 583 @test (op_r'*u)[Index(6,Interior)] == 0
585 @test (op_r'*u)[Index(10,Upper)] == u[] 584 @test (op_r'*u)[Index(10,Upper)] == u[]
586 @test (op_r'*u)[Index(11,Upper)] == 2*u[] 585 @test (op_r'*u)[Index(11,Upper)] == 2*u[]
587 end 586 end
588 end 587 end
589 588
590 @testset "Inferred" begin 589 @testset "Inferred" begin
591 v = ones(Float64, 11) 590 v = ones(Float64, 11)
614 @testset "BoundaryRestriction" begin 613 @testset "BoundaryRestriction" begin
615 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) 614 op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4)
616 g_1D = EquidistantGrid(11, 0.0, 1.0) 615 g_1D = EquidistantGrid(11, 0.0, 1.0)
617 g_2D = EquidistantGrid((11,15), (0.0, 0.0), (1.0,1.0)) 616 g_2D = EquidistantGrid((11,15), (0.0, 0.0), (1.0,1.0))
618 617
618 # TODO: These areant really constructors. Better name?
619 @testset "Constructors" begin 619 @testset "Constructors" begin
620 @testset "1D" begin 620 @testset "1D" begin
621 e_l = BoundaryRestriction(g_1D,op.eClosure,Lower()) 621 e_l = BoundaryRestriction(g_1D,op.eClosure,Lower())
622 @test e_l == BoundaryRestriction(g_1D,op.eClosure,CartesianBoundary{1,Lower}()) 622 @test e_l == BoundaryRestriction(g_1D,op.eClosure,CartesianBoundary{1,Lower}())
623 @test e_l == BoundaryOperator(g_1D,op.eClosure,Lower()) 623 @test e_l == BoundaryOperator(g_1D,op.eClosure,Lower())
666 @test e_e*v == v[end,:] 666 @test e_e*v == v[end,:]
667 @test e_s*v == v[:,1] 667 @test e_s*v == v[:,1]
668 @test e_n*v == v[:,end] 668 @test e_n*v == v[:,end]
669 669
670 670
671 g_x = rand(11) 671 g_x = rand(11)
672 g_y = rand(15) 672 g_y = rand(15)
673 673
674 G_w = zeros(Float64, (11,15)) 674 G_w = zeros(Float64, (11,15))
675 G_w[1,:] = g_y 675 G_w[1,:] = g_y
676 676
677 G_e = zeros(Float64, (11,15)) 677 G_e = zeros(Float64, (11,15))
678 G_e[end,:] = g_y 678 G_e[end,:] = g_y
679 679
680 G_s = zeros(Float64, (11,15)) 680 G_s = zeros(Float64, (11,15))
681 G_s[:,1] = g_x 681 G_s[:,1] = g_x
682 682
683 G_n = zeros(Float64, (11,15)) 683 G_n = zeros(Float64, (11,15))
684 G_n[:,end] = g_x 684 G_n[:,end] = g_x
685 685
686 @test e_w'*g_y == G_w 686 @test e_w'*g_y == G_w
687 @test e_e'*g_y == G_e 687 @test e_e'*g_y == G_e
688 @test e_s'*g_x == G_s 688 @test e_s'*g_x == G_s
689 @test e_n'*g_x == G_n 689 @test e_n'*g_x == G_n
690 end 690 end
691 end 691 end
692 end 692 end
693 693
694 @testset "NormalDerivative" begin 694 @testset "NormalDerivative" begin