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 |