changeset 1482:329720b9ba0d feature/boundary_conditions

Add test for 1D grid
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 25 Dec 2023 19:23:49 +0100
parents ee242c3fe4af
children abc5cc0aec94
files test/BoundaryConditions/sat_test.jl
diffstat 1 files changed, 44 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/test/BoundaryConditions/sat_test.jl	Mon Dec 25 19:23:09 2023 +0100
+++ b/test/BoundaryConditions/sat_test.jl	Mon Dec 25 19:23:49 2023 +0100
@@ -8,24 +8,23 @@
 
 stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order = 4)
 
-struct MockOp
-end
+struct MockOp end
 
-function BoundaryConditions.sat_tensors(op::MockOp, g::TensorGrid, bc::DirichletCondition)
+function BoundaryConditions.sat_tensors(op::MockOp, g::Grid, bc::DirichletCondition)
     e = boundary_restriction(g, stencil_set, id(bc))
     L = e
     sat_op = e'
     return sat_op, L
 end
 
-function BoundaryConditions.sat_tensors(op::MockOp, g::TensorGrid, bc::DirichletCondition, a)
+function BoundaryConditions.sat_tensors(op::MockOp, g::Grid, bc::DirichletCondition, a)
     e = boundary_restriction(g, stencil_set, id(bc))
     L = a*e
     sat_op = e'
     return sat_op, L
 end
 
-function BoundaryConditions.sat_tensors(op::MockOp, g::TensorGrid, bc::NeumannCondition)
+function BoundaryConditions.sat_tensors(op::MockOp, g::Grid, bc::NeumannCondition)
     e = boundary_restriction(g, stencil_set, id(bc))
     d = normal_derivative(g, stencil_set, id(bc))
     L = d
@@ -35,32 +34,47 @@
 
 @testset "sat" begin
     op = MockOp()
-    grid  = equidistant_grid((11,13), (0.,0.), (1.,1.))
-    W, E, S, N = boundary_identifiers(grid)
-    u = eval_on(grid, (x,y) -> x+y^2)
-
-    
-    dc_W = DirichletCondition(1.0, W)
-    SAT_W = sat(op, grid, dc_W)
-    g_W = discretize_data(grid, dc_W)
-    r_W = zeros(size(grid))
-    r_W[1,:] .= map(y -> (y^2-1.), range(0., 1., length=13))
-    @test SAT_W(u, g_W) ≈ r_W atol = 1e-13
+    @testset "1D" begin
+        grid  = equidistant_grid(11, 0., 1.)
+        l, r = boundary_identifiers(grid)
+        u = eval_on(grid, x-> 1. + 2x^2)
+        dc = DirichletCondition(1.0, l)
+        g_l = discretize_data(grid, dc)
+        SAT_l = sat(op, grid, dc)
+        @test SAT_l(u, g_l) ≈ zeros((size(grid))) atol = 1e-13
+        
+        nc = NeumannCondition(4.0, r)
+        g_r = discretize_data(grid, nc)
+        SAT_r = sat(op, grid, nc)
+        @test SAT_r(u, g_r) ≈ zeros((size(grid))) atol = 1e-13
+    end
+    @testset "2D" begin
+        grid  = equidistant_grid((11,13), (0.,0.), (1.,1.))
+        W, E, S, N = boundary_identifiers(grid)
+        u = eval_on(grid, (x,y) -> x+y^2)
 
-    dc_E = DirichletCondition(2, E)
-    SAT_E = sat(op, grid, dc_E, 2.)
-    g_E = discretize_data(grid, dc_E)
-    r_E = zeros(size(grid))
-    r_E[end,:] .= map(y -> (2*(1. + y^2)-2.), range(0., 1., length=13))
-    @test SAT_E(u, g_E) ≈ r_E atol = 1e-13
+        dc_W = DirichletCondition(1.0, W)
+        SAT_W = sat(op, grid, dc_W)
+        g_W = discretize_data(grid, dc_W)
+        r_W = zeros(size(grid))
+        r_W[1,:] .= map(y -> (y^2-1.), range(0., 1., length=13))
+        @test SAT_W(u, g_W) ≈ r_W atol = 1e-13
 
-    nc_S = NeumannCondition(.0, S)
-    SAT_S = sat(op, grid, nc_S)
-    g_S = discretize_data(grid, nc_S)
-    @test SAT_S(u, g_S) ≈ zeros(size(grid)) atol = 1e-13
+        dc_E = DirichletCondition(2, E)
+        SAT_E = sat(op, grid, dc_E, 2.)
+        g_E = discretize_data(grid, dc_E)
+        r_E = zeros(size(grid))
+        r_E[end,:] .= map(y -> (2*(1. + y^2)-2.), range(0., 1., length=13))
+        @test SAT_E(u, g_E) ≈ r_E atol = 1e-13
 
-    nc_N = NeumannCondition(2.0, N)
-    SAT_S = sat(op, grid, nc_N)
-    g_N = discretize_data(grid, nc_N)
-    @test SAT_S(u, g_N) ≈ zeros(size(grid)) atol = 1e-13
+        nc_S = NeumannCondition(.0, S)
+        SAT_S = sat(op, grid, nc_S)
+        g_S = discretize_data(grid, nc_S)
+        @test SAT_S(u, g_S) ≈ zeros(size(grid)) atol = 1e-13
+
+        nc_N = NeumannCondition(2.0, N)
+        SAT_N = sat(op, grid, nc_N)
+        g_N = discretize_data(grid, nc_N)
+        @test SAT_N(u, g_N) ≈ zeros(size(grid)) atol = 1e-13
+    end
 end