Mercurial > repos > public > sbplib_julia
annotate test/SbpOperators/boundary_conditions/sat_test.jl @ 2015:5c2448d6a201 feature/grids/geometry_functions tip
Structure tests a bit more
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 09 May 2025 15:57:38 +0200 |
parents | 471a948cd2b2 |
children |
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 |