annotate test/SbpOperators/boundaryops/normal_derivative_test.jl @ 877:dd2ab001a7b6 feature/equidistant_grid/refine

Implement refine function, move exports to the top of the file, change location of constuctors. The constructors were changed have only one inner constructor and simpler outer constructors.
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 14 Feb 2022 09:39:58 +0100
parents bea2feebbeca
children 35be8253de89 47425442bbc5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 using Test
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 using Sbplib.SbpOperators
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 using Sbplib.Grids
732
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
5 using Sbplib.RegionIndices
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
6 using Sbplib.LazyTensors
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
7
6114274447f5 Add missing using and imports in test files
Jonatan Werpers <jonatan@werpers.com>
parents: 728
diff changeset
8 import Sbplib.SbpOperators.BoundaryOperator
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 @testset "normal_derivative" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 g_1D = EquidistantGrid(11, 0.0, 1.0)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 g_2D = EquidistantGrid((11,12), (0.0, 0.0), (1.0,1.0))
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 @testset "normal_derivative" begin
772
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
14 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=4)
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
15 d_closure = parse_stencil(stencil_set["d1"]["closure"])
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 @testset "1D" begin
772
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
17 d_l = normal_derivative(g_1D, d_closure, Lower())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
18 @test d_l == normal_derivative(g_1D, d_closure, CartesianBoundary{1,Lower}())
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 @test d_l isa BoundaryOperator{T,Lower} where T
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 @test d_l isa TensorMapping{T,0,1} where T
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 @testset "2D" begin
772
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
23 d_w = normal_derivative(g_2D, d_closure, CartesianBoundary{1,Lower}())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
24 d_n = normal_derivative(g_2D, d_closure, CartesianBoundary{2,Upper}())
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 Ix = IdentityMapping{Float64}((size(g_2D)[1],))
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 Iy = IdentityMapping{Float64}((size(g_2D)[2],))
772
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
27 d_l = normal_derivative(restrict(g_2D,1),d_closure,Lower())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
28 d_r = normal_derivative(restrict(g_2D,2),d_closure,Upper())
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 @test d_w == d_l⊗Iy
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 @test d_n == Ix⊗d_r
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 @test d_w isa TensorMapping{T,1,2} where T
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 @test d_n isa TensorMapping{T,1,2} where T
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 @testset "Accuracy" begin
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 v = evalOn(g_2D, (x,y)-> x^2 + (y-1)^2 + x*y)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 v∂x = evalOn(g_2D, (x,y)-> 2*x + y)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 v∂y = evalOn(g_2D, (x,y)-> 2*(y-1) + x)
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 # TODO: Test for higher order polynomials?
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 @testset "2nd order" begin
772
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
41 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=2)
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
42 d_closure = parse_stencil(stencil_set["d1"]["closure"])
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
43 d_w = normal_derivative(g_2D, d_closure, CartesianBoundary{1,Lower}())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
44 d_e = normal_derivative(g_2D, d_closure, CartesianBoundary{1,Upper}())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
45 d_s = normal_derivative(g_2D, d_closure, CartesianBoundary{2,Lower}())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
46 d_n = normal_derivative(g_2D, d_closure, CartesianBoundary{2,Upper}())
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 @test d_w*v ≈ v∂x[1,:] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 @test d_e*v ≈ -v∂x[end,:] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 @test d_s*v ≈ v∂y[:,1] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 @test d_n*v ≈ -v∂y[:,end] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 @testset "4th order" begin
772
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
55 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=2)
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
56 d_closure = parse_stencil(stencil_set["d1"]["closure"])
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
57 d_w = normal_derivative(g_2D, d_closure, CartesianBoundary{1,Lower}())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
58 d_e = normal_derivative(g_2D, d_closure, CartesianBoundary{1,Upper}())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
59 d_s = normal_derivative(g_2D, d_closure, CartesianBoundary{2,Lower}())
bea2feebbeca Fix boundaryops tests
Jonatan Werpers <jonatan@werpers.com>
parents: 732
diff changeset
60 d_n = normal_derivative(g_2D, d_closure, CartesianBoundary{2,Upper}())
728
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 @test d_w*v ≈ v∂x[1,:] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 @test d_e*v ≈ -v∂x[end,:] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 @test d_s*v ≈ v∂y[:,1] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 @test d_n*v ≈ -v∂y[:,end] atol = 1e-13
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 end
45966c77cb20 Split tests for SbpOperators over several files
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 end