Mercurial > repos > public > sbplib_julia
comparison src/Grids/manifolds.jl @ 1928:96b3e9c516fe feature/grids/manifolds
Make cartesian atlas work for any dimension
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Fri, 07 Feb 2025 09:12:41 +0100 |
| parents | fe18cdad2b27 |
| children | c5affb342e73 |
comparison
equal
deleted
inserted
replaced
| 1927:fe18cdad2b27 | 1928:96b3e9c516fe |
|---|---|
| 66 Base.size(a::CartesianAtlas) = size(a.charts) | 66 Base.size(a::CartesianAtlas) = size(a.charts) |
| 67 | 67 |
| 68 function connections(a::CartesianAtlas) | 68 function connections(a::CartesianAtlas) |
| 69 c = Tuple{MultiBlockBoundary, MultiBlockBoundary}[] | 69 c = Tuple{MultiBlockBoundary, MultiBlockBoundary}[] |
| 70 | 70 |
| 71 N,M = size(a.charts) | 71 for d ∈ 1:ndims(charts(a)) |
| 72 for j ∈ 1:M, i ∈ 1:N-1 | 72 Is = eachslice(CartesianIndices(charts(a)); dims=d) |
| 73 push!(c, | 73 for i ∈ 1:length(Is)-1 # For each interface between slices |
| 74 ( | 74 for jk ∈ eachindex(Is[i]) # For each block in slice |
| 75 MultiBlockBoundary{(i,j), CartesianBoundary{1,UpperBoundary}}(), | 75 Iᵢⱼₖ = Tuple(Is[i][jk]) |
| 76 MultiBlockBoundary{(i+1,j), CartesianBoundary{1,LowerBoundary}}(), | 76 Iᵢ₊₁ⱼₖ = Tuple(Is[i+1][jk]) |
| 77 ), | 77 push!(c, |
| 78 ) | 78 ( |
| 79 end | 79 MultiBlockBoundary{Iᵢⱼₖ, CartesianBoundary{d,UpperBoundary}}(), |
| 80 | 80 MultiBlockBoundary{Iᵢ₊₁ⱼₖ, CartesianBoundary{d,LowerBoundary}}(), |
| 81 for i ∈ 1:N, j ∈ 1:M-1 | 81 ) |
| 82 push!(c, | 82 ) |
| 83 ( | 83 end |
| 84 MultiBlockBoundary{(i,j), CartesianBoundary{2,UpperBoundary}}(), | 84 end |
| 85 MultiBlockBoundary{(i,j+1), CartesianBoundary{2,LowerBoundary}}(), | |
| 86 ), | |
| 87 ) | |
| 88 end | 85 end |
| 89 | 86 |
| 90 return c | 87 return c |
| 91 end | 88 end |
| 92 | 89 |
