diff src/Grids/manifolds.jl @ 1934:1b012e2d5db1 feature/grids/manifolds

Add function for getting boundaries from CartesianAtlas
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 07 Feb 2025 11:11:54 +0100
parents ac63820222f8
children a7c9d04b57e0
line wrap: on
line diff
--- a/src/Grids/manifolds.jl	Fri Feb 07 09:22:50 2025 +0100
+++ b/src/Grids/manifolds.jl	Fri Feb 07 11:11:54 2025 +0100
@@ -86,6 +86,26 @@
     return c
 end
 
+function boundaries(a::CartesianAtlas)
+    c = MultiBlockBoundary[]
+
+    for d ∈ 1:ndims(charts(a))
+        Is = eachslice(CartesianIndices(charts(a)); dims=d)
+
+        for (i,b) ∈ ((1,LowerBoundary),(length(Is),UpperBoundary)) # For first and last slice
+            for jk ∈ eachindex(Is[i]) # For each block in slice
+                Iᵢⱼₖ = Tuple(Is[i][jk])
+                push!(c,
+                    MultiBlockBoundary{Iᵢⱼₖ,   CartesianBoundary{d,b}}(),
+                )
+            end
+        end
+    end
+
+    return c
+end
+
+
 struct UnstructuredAtlas <: Atlas
     charts::Vector{Chart}
     connections::Vector{Tuple{MultiBlockBoundary, MultiBlockBoundary}}