Mercurial > repos > public > sbplib_julia
changeset 787:961c36f5c60f refactor/inner_product_recursive
Remove default value for inner stencil in inverse_inner_product()
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 19 Jul 2021 22:16:58 +0200 |
parents | 937e19326795 |
children | 55981fb54e46 |
files | src/SbpOperators/volumeops/inner_products/inverse_inner_product.jl test/SbpOperators/volumeops/inner_products/inverse_inner_product_test.jl |
diffstat | 2 files changed, 14 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/SbpOperators/volumeops/inner_products/inverse_inner_product.jl Mon Jul 19 22:05:09 2021 +0200 +++ b/src/SbpOperators/volumeops/inner_products/inverse_inner_product.jl Mon Jul 19 22:16:58 2021 +0200 @@ -21,7 +21,7 @@ `SbpOperators.volume_operator(...)` for more details. On a 0-dimensional `grid`, `H⁻¹` is a 0-dimensional `IdentityMapping`. """ -function inverse_inner_product(grid::EquidistantGrid, inv_closure_stencils, inv_inner_stencil = CenteredStencil(one(eltype(grid)))) +function inverse_inner_product(grid::EquidistantGrid, inv_closure_stencils, inv_inner_stencil) H⁻¹s = () for i ∈ 1:dimension(grid) @@ -31,13 +31,13 @@ return foldl(⊗, H⁻¹s) end -function inverse_inner_product(grid::EquidistantGrid{1}, inv_closure_stencils, inv_inner_stencil = CenteredStencil(one(eltype(grid)))) +function inverse_inner_product(grid::EquidistantGrid{1}, inv_closure_stencils, inv_inner_stencil) h⁻¹ = inverse_spacing(grid) H⁻¹ = SbpOperators.volume_operator(grid, scale(inv_inner_stencil, h⁻¹[1]), scale.(inv_closure_stencils, h⁻¹[1]),even,1) return H⁻¹ end export inverse_inner_product -inverse_inner_product(grid::EquidistantGrid{0}, inv_closure_stencils, inv_inner_stencil = CenteredStencil(one(eltype(grid)))) = IdentityMapping{eltype(grid)}() +inverse_inner_product(grid::EquidistantGrid{0}, inv_closure_stencils, inv_inner_stencil) = IdentityMapping{eltype(grid)}() reciprocal_stencil(s::Stencil{T}) where T = Stencil(s.range,one(T)./s.weights)
--- a/test/SbpOperators/volumeops/inner_products/inverse_inner_product_test.jl Mon Jul 19 22:05:09 2021 +0200 +++ b/test/SbpOperators/volumeops/inner_products/inverse_inner_product_test.jl Mon Jul 19 22:16:58 2021 +0200 @@ -14,18 +14,18 @@ @testset "inverse_inner_product" begin op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) @testset "0D" begin - Hi = inverse_inner_product(EquidistantGrid{Float64}(),SbpOperators.reciprocal_stencil.(op.quadratureClosure)) + Hi = inverse_inner_product(EquidistantGrid{Float64}(),SbpOperators.reciprocal_stencil.(op.quadratureClosure), CenteredStencil(1.)) @test Hi == IdentityMapping{Float64}() @test Hi isa TensorMapping{T,0,0} where T end @testset "1D" begin - Hi = inverse_inner_product(g_1D, SbpOperators.reciprocal_stencil.(op.quadratureClosure)); + Hi = inverse_inner_product(g_1D, SbpOperators.reciprocal_stencil.(op.quadratureClosure), CenteredStencil(1.)); @test Hi isa TensorMapping{T,1,1} where T end @testset "2D" begin - Hi = inverse_inner_product(g_2D,op.quadratureClosure) - Hi_x = inverse_inner_product(restrict(g_2D,1),op.quadratureClosure) - Hi_y = inverse_inner_product(restrict(g_2D,2),op.quadratureClosure) + Hi = inverse_inner_product(g_2D,op.quadratureClosure, CenteredStencil(1.)) + Hi_x = inverse_inner_product(restrict(g_2D,1),op.quadratureClosure, CenteredStencil(1.)) + Hi_y = inverse_inner_product(restrict(g_2D,2),op.quadratureClosure, CenteredStencil(1.)) @test Hi == Hi_x⊗Hi_y @test Hi isa TensorMapping{T,2,2} where T end @@ -34,12 +34,12 @@ @testset "Sizes" begin op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) @testset "1D" begin - Hi = inverse_inner_product(g_1D,op.quadratureClosure) + Hi = inverse_inner_product(g_1D,op.quadratureClosure, CenteredStencil(1.)) @test domain_size(Hi) == size(g_1D) @test range_size(Hi) == size(g_1D) end @testset "2D" begin - Hi = inverse_inner_product(g_2D,op.quadratureClosure) + Hi = inverse_inner_product(g_2D,op.quadratureClosure, CenteredStencil(1.)) @test domain_size(Hi) == size(g_2D) @test range_size(Hi) == size(g_2D) end @@ -52,14 +52,14 @@ @testset "2nd order" begin op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) H = inner_product(g_1D, op.quadratureClosure, CenteredStencil(1.)) - Hi = inverse_inner_product(g_1D,SbpOperators.reciprocal_stencil.(op.quadratureClosure)) + Hi = inverse_inner_product(g_1D,SbpOperators.reciprocal_stencil.(op.quadratureClosure), CenteredStencil(1.)) @test Hi*H*v ≈ v rtol = 1e-15 @test Hi*H*u ≈ u rtol = 1e-15 end @testset "4th order" begin op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) H = inner_product(g_1D, op.quadratureClosure, CenteredStencil(1.)) - Hi = inverse_inner_product(g_1D,SbpOperators.reciprocal_stencil.(op.quadratureClosure)) + Hi = inverse_inner_product(g_1D,SbpOperators.reciprocal_stencil.(op.quadratureClosure), CenteredStencil(1.)) @test Hi*H*v ≈ v rtol = 1e-15 @test Hi*H*u ≈ u rtol = 1e-15 end @@ -70,14 +70,14 @@ @testset "2nd order" begin op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=2) H = inner_product(g_2D, op.quadratureClosure, CenteredStencil(1.)) - Hi = inverse_inner_product(g_2D,SbpOperators.reciprocal_stencil.(op.quadratureClosure)) + Hi = inverse_inner_product(g_2D,SbpOperators.reciprocal_stencil.(op.quadratureClosure), CenteredStencil(1.)) @test Hi*H*v ≈ v rtol = 1e-15 @test Hi*H*u ≈ u rtol = 1e-15 end @testset "4th order" begin op = read_D2_operator(sbp_operators_path()*"standard_diagonal.toml"; order=4) H = inner_product(g_2D, op.quadratureClosure, CenteredStencil(1.)) - Hi = inverse_inner_product(g_2D,SbpOperators.reciprocal_stencil.(op.quadratureClosure)) + Hi = inverse_inner_product(g_2D,SbpOperators.reciprocal_stencil.(op.quadratureClosure), CenteredStencil(1.)) @test Hi*H*v ≈ v rtol = 1e-15 @test Hi*H*u ≈ u rtol = 1e-15 end