Mercurial > repos > public > sbplib_julia
diff test/BoundaryConditions/sat_test.jl @ 1217:ea2e8254820a feature/boundary_conditions
Update docstrings and start implementing tests
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 07 Feb 2023 21:55:07 +0100 |
parents | |
children | bdcdbd4ea9cd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/BoundaryConditions/sat_test.jl Tue Feb 07 21:55:07 2023 +0100 @@ -0,0 +1,40 @@ +using Test + + +using Sbplib.BoundaryConditions +using Sbplib.Grids +using Sbplib.RegionIndices +using Sbplib.LazyTensors + +grid = EquidistantGrid(11, 0.0, 1.0) +(id_l,id_r) = boundary_identifiers(grid) +struct MockOp +end + +function BoundaryConditions.sat_tensors(op::MockOp, grid, bc::DirichletCondition) + sz = size(grid) + m = sz[1] + ind = (region(bc.id) == Lower()) ? 1 : m + e = zeros(m); + e[ind] = 1. + eᵀ = ones(Float64,m,0); + e[ind] = 1. + c_tensor = LazyTensors.DiagonalTensor(e) + p_tensor = DenseTensor(eᵀ, (1,), (2,)) + closure(u) = c_tensor*u + function penalty(g) + @show g + return p_tensor*g + end + return closure, penalty +end + + +@testset "sat" begin + g = ConstantBoundaryData(2.0) + dc = DirichletCondition(g,id_l) + op = MockOp() + f = sat(op, grid, dc) + u = evalOn(grid, x-> -1/2 + x^2) + @show f(0.,u) +end