changeset 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 7fb713570965
files src/Grids/manifolds.jl test/Grids/manifolds_test.jl
diffstat 2 files changed, 29 insertions(+), 6 deletions(-) [+]
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}
--- a/test/Grids/manifolds_test.jl	Wed Feb 05 09:05:46 2025 +0100
+++ b/test/Grids/manifolds_test.jl	Wed Feb 05 16:17:29 2025 +0100
@@ -33,11 +33,11 @@
     south = CartesianBoundary{2,LowerBoundary}
     north = CartesianBoundary{2,UpperBoundary}
 
-    @test_broken Set(connections(a)) == Set([
-        (MultiBlockBoundary{(1,1), east}, MultiBlockBoundary{(2,1), west}),
-        (MultiBlockBoundary{(1,2), east}, MultiBlockBoundary{(2,2), west}),
-        (MultiBlockBoundary{(1,1), north}, MultiBlockBoundary{(1,2), south}),
-        (MultiBlockBoundary{(1,2), north}, MultiBlockBoundary{(2,2), south}),
+    @test Set(connections(a)) == Set([
+        (MultiBlockBoundary{(1,1), east}(), MultiBlockBoundary{(2,1), west}()),
+        (MultiBlockBoundary{(1,2), east}(), MultiBlockBoundary{(2,2), west}()),
+        (MultiBlockBoundary{(1,1), north}(), MultiBlockBoundary{(1,2), south}()),
+        (MultiBlockBoundary{(2,1), north}(), MultiBlockBoundary{(2,2), south}()),
     ])
 end