Mercurial > repos > public > sbplib_julia
changeset 582:aa44edea36fc feature/boundary_ops
Merge
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 01 Dec 2020 19:41:16 +0100 |
parents | ea4176a5dfc5 (diff) 0779713f95a2 (current diff) |
children | 6db96ef13a29 |
files | src/SbpOperators/boundaryops/boundary_restriction.jl |
diffstat | 1 files changed, 9 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/SbpOperators/boundaryops/boundary_restriction.jl Tue Dec 01 17:47:14 2020 +0100 +++ b/src/SbpOperators/boundaryops/boundary_restriction.jl Tue Dec 01 19:41:16 2020 +0100 @@ -3,21 +3,17 @@ Creates a BoundaryRestriction operator for the specified boundary """ -function boundary_restriction(grid::EquidistantGrid{1}, closureStencil::Stencil, boundary::CartesianBoundary{1}) - return e = BoundaryRestriction(grid, closureStencil, region(boundary)) +function boundary_restriction(grid::EquidistantGrid{D,T}, closureStencil::Stencil{T,M}, boundary::CartesianBoundary) where {D,T,M} + r = region(boundary) + d = dim(boundary) + e = BoundaryRestriction(restrict(grid, d), closureStencil, r) + + one_d_grids = restrict.(Ref(grid), tuple(1:D)) + Is = IdentityMapping{T}.(size.(one_d_grids)) + parts = Base.setindex(Is, e, d) + return foldl(⊗, parts) end -function boundary_restriction(grid::EquidistantGrid{2,T}, closureStencil::Stencil{T}, boundary::CartesianBoundary{1}) where T - e = BoundaryRestriction(restrict(grid, 1), closureStencil, region(boundary)) - I = IdentityMapping{T}(size(restrict(grid,2))) - return e⊗I -end - -function boundary_restriction(grid::EquidistantGrid{2,T}, closureStencil::Stencil{T}, boundary::CartesianBoundary{2}) where T - e = BoundaryRestriction(restrict(grid, 2), closureStencil, region(boundary)) - I = IdentityMapping{T}(size(restrict(grid,1))) - return I⊗e -end export boundary_restriction """