Mercurial > repos > public > sbplib_julia
diff DiffOps/test/runtests.jl @ 262:f1e90a92ad74 boundary_conditions
Add Quadrature and InverseQuadrature for Laplace as TensorMappings. Implement and test the 2D case. Fix implementation of apply_transpose for BoundaryQuadrature and add tests.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 26 Nov 2019 08:28:26 -0800 |
parents | 5571d2c5bf0f |
children | ce6a2f3f732a |
line wrap: on
line diff
--- a/DiffOps/test/runtests.jl Tue Nov 26 08:19:22 2019 -0800 +++ b/DiffOps/test/runtests.jl Tue Nov 26 08:28:26 2019 -0800 @@ -5,6 +5,35 @@ using RegionIndices using LazyTensors +@testset "Quadrature" begin + op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") + Lx = 2.3 + Ly = 5.2 + g = EquidistantGrid((77,66), (0.0, 0.0), (Lx,Ly)) + H = Quadrature(op,g) + v = ones(Float64, size(g)) + + @test H isa TensorMapping{T,2,2} where T + @test H' isa TensorMapping{T,2,2} where T + @test sum(collect(H*v)) ≈ (Lx*Ly) + @test collect(H*v) == collect(H'*v) +end + +@testset "InverseQuadrature" begin + op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") + Lx = 7.3 + Ly = 8.2 + g = EquidistantGrid((77,66), (0.0, 0.0), (Lx,Ly)) + H = Quadrature(op,g) + Hinv = InverseQuadrature(op,g) + v = evalOn(g, (x,y)-> x^2 + (y-1)^2 + x*y) + + @test Hinv isa TensorMapping{T,2,2} where T + @test Hinv' isa TensorMapping{T,2,2} where T + @test collect(Hinv*H*v) ≈ v + @test collect(Hinv*v) == collect(Hinv'*v) +end + @testset "BoundaryValue" begin op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") g = EquidistantGrid((4,5), (0.0, 0.0), (1.0,1.0)) @@ -184,4 +213,9 @@ @test collect(H_e*v_e) ≈ q_y.*v_e @test collect(H_s*v_s) ≈ q_x.*v_s @test collect(H_n*v_n) ≈ q_x.*v_n + + @test collect(H_w'*v_w) == collect(H_w'*v_w) + @test collect(H_e'*v_e) == collect(H_e'*v_e) + @test collect(H_s'*v_s) == collect(H_s'*v_s) + @test collect(H_n'*v_n) == collect(H_n'*v_n) end