annotate test/SbpOperators/boundary_conditions/sat_test.jl @ 1871:b1eb33e62d1e refactor/grids/iterable_boundary_indices

Remove unneded type paramter name
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 27 Jan 2025 09:17:54 +0100
parents 471a948cd2b2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1217
ea2e8254820a Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
1 using Test
ea2e8254820a Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
2
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1603
diff changeset
3 using Diffinitive.Grids
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1603
diff changeset
4 using Diffinitive.LazyTensors
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1603
diff changeset
5 using Diffinitive.SbpOperators
1217
ea2e8254820a Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
6
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
7 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order = 4)
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
8
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
9 struct MockOp end
1217
ea2e8254820a Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10
1603
fca4a01d60c9 Remove module BoundaryConditions, moving its content to SbpOperators
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1602
diff changeset
11 function SbpOperators.sat_tensors(op::MockOp, g::Grid, bc::DirichletCondition; a = 1.)
1602
3e7438e2a033 Address review comments (1 left to be discussed)
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1597
diff changeset
12 e = boundary_restriction(g, stencil_set, boundary(bc))
3e7438e2a033 Address review comments (1 left to be discussed)
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1597
diff changeset
13 L = a*e
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
14 sat_op = e'
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
15 return sat_op, L
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
16 end
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
17
1603
fca4a01d60c9 Remove module BoundaryConditions, moving its content to SbpOperators
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1602
diff changeset
18 function SbpOperators.sat_tensors(op::MockOp, g::Grid, bc::NeumannCondition)
1602
3e7438e2a033 Address review comments (1 left to be discussed)
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1597
diff changeset
19 e = boundary_restriction(g, stencil_set, boundary(bc))
3e7438e2a033 Address review comments (1 left to be discussed)
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1597
diff changeset
20 d = normal_derivative(g, stencil_set, boundary(bc))
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
21 L = d
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
22 sat_op = e'
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
23 return sat_op, L
1217
ea2e8254820a Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
24 end
ea2e8254820a Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
26 @testset "sat" begin
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
27 op = MockOp()
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
28 @testset "1D" begin
1597
330c39505a94 Fix boundary condition tests
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1482
diff changeset
29 grid = equidistant_grid(0., 1., 11)
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
30 l, r = boundary_identifiers(grid)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
31 u = eval_on(grid, x-> 1. + 2x^2)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
32 dc = DirichletCondition(1.0, l)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
33 g_l = discretize_data(grid, dc)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
34 SAT_l = sat(op, grid, dc)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
35 @test SAT_l(u, g_l) ≈ zeros((size(grid))) atol = 1e-13
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
36
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
37 nc = NeumannCondition(4.0, r)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
38 g_r = discretize_data(grid, nc)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
39 SAT_r = sat(op, grid, nc)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
40 @test SAT_r(u, g_r) ≈ zeros((size(grid))) atol = 1e-13
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
41 end
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
42 @testset "2D" begin
1597
330c39505a94 Fix boundary condition tests
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1482
diff changeset
43 grid = equidistant_grid((0.,0.), (1.,1.), 11, 13)
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
44 W, E, S, N = boundary_identifiers(grid)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
45 u = eval_on(grid, (x,y) -> x+y^2)
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
46
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
47 dc_W = DirichletCondition(1.0, W)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
48 SAT_W = sat(op, grid, dc_W)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
49 g_W = discretize_data(grid, dc_W)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
50 r_W = zeros(size(grid))
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
51 r_W[1,:] .= map(y -> (y^2-1.), range(0., 1., length=13))
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
52 @test SAT_W(u, g_W) ≈ r_W atol = 1e-13
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
53
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
54 dc_E = DirichletCondition(2, E)
1602
3e7438e2a033 Address review comments (1 left to be discussed)
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1597
diff changeset
55 SAT_E = sat(op, grid, dc_E; a = 2.)
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
56 g_E = discretize_data(grid, dc_E)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
57 r_E = zeros(size(grid))
1602
3e7438e2a033 Address review comments (1 left to be discussed)
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1597
diff changeset
58 r_E[end,:] .= map(y -> (2*(1. + y^2)-2.), range(0., 1., length=13))
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
59 @test SAT_E(u, g_E) ≈ r_E atol = 1e-13
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
60
1482
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
61 nc_S = NeumannCondition(.0, S)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
62 SAT_S = sat(op, grid, nc_S)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
63 g_S = discretize_data(grid, nc_S)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
64 @test SAT_S(u, g_S) ≈ zeros(size(grid)) atol = 1e-13
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
65
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
66 nc_N = NeumannCondition(2.0, N)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
67 SAT_N = sat(op, grid, nc_N)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
68 g_N = discretize_data(grid, nc_N)
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
69 @test SAT_N(u, g_N) ≈ zeros(size(grid)) atol = 1e-13
329720b9ba0d Add test for 1D grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1479
diff changeset
70 end
1479
b96858a50e35 Add tests for SAT
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1395
diff changeset
71 end