diff src/Grids/manifolds.jl @ 1920:ae83c91286a2 feature/grids/manifolds

Implement connections for CartesianAtlas
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 05 Feb 2025 16:17:29 +0100
parents 71d218593cac
children 297e3d74f697
line wrap: on
line diff
--- a/src/Grids/manifolds.jl	Wed Feb 05 09:05:46 2025 +0100
+++ b/src/Grids/manifolds.jl	Wed Feb 05 16:17:29 2025 +0100
@@ -63,9 +63,32 @@
 end
 
 charts(a::CartesianAtlas) = a.charts
-connections(a::CartesianAtlas) = nothing
 Base.size(a::CartesianAtlas) = size(a.charts)
 
+function connections(a::CartesianAtlas)
+    c = Tuple{MultiBlockBoundary, MultiBlockBoundary}[]
+
+    N,M = size(a.charts)
+    for j ∈ 1:M, i ∈ 1:N-1
+        push!(c,
+            (
+                MultiBlockBoundary{(i,j), CartesianBoundary{1,UpperBoundary}}(),
+                MultiBlockBoundary{(i+1,j), CartesianBoundary{1,LowerBoundary}}(),
+            ),
+        )
+    end
+
+    for i ∈ 1:N, j ∈ 1:M-1
+        push!(c,
+            (
+                MultiBlockBoundary{(i,j), CartesianBoundary{2,UpperBoundary}}(),
+                MultiBlockBoundary{(i,j+1), CartesianBoundary{2,LowerBoundary}}(),
+            ),
+        )
+    end
+
+    return c
+end
 
 struct UnstructuredAtlas <: Atlas
     charts::Vector{Chart}