diff src/Grids/manifolds.jl @ 1785:96f8cad255b4 feature/sbp_operators/laplace_curvilinear

Merge feature/grids/manifolds
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 16 Sep 2024 10:33:47 +0200
parents 614f731af685
children 1987347752ef
line wrap: on
line diff
--- a/src/Grids/manifolds.jl	Wed Sep 11 16:26:19 2024 +0200
+++ b/src/Grids/manifolds.jl	Mon Sep 16 10:33:47 2024 +0200
@@ -19,7 +19,21 @@
 """
 abstract type ParameterSpace{D} end
 Base.ndims(::ParameterSpace{D}) where D = D
-# TBD:  Should implement domain_dim?
+
+struct Interval{T} <: ParameterSpace{1}
+    a::T
+    b::T
+
+    function Interval(a,b)
+        a, b = promote(a, b)
+        new{typeof(a)}(a,b)
+    end
+end
+
+limits(i::Interval) = (i.a, i.b)
+
+unitinterval(T=Float64) = Interval(zero(T), one(T))
+
 
 struct HyperBox{T,D} <: ParameterSpace{D}
     a::SVector{D,T}
@@ -27,18 +41,17 @@
 end
 
 function HyperBox(a,b)
-    T = SVector{length(a)}
+    ET = promote_type(eltype(a),eltype(b))
+    T = SVector{length(a),ET}
     HyperBox(convert(T,a), convert(T,b))
 end
 
-Interval{T} = HyperBox{T,1}
 Rectangle{T} = HyperBox{T,2}
 Box{T} = HyperBox{T,3}
 
 limits(box::HyperBox, d) = (box.a[d], box.b[d])
 limits(box::HyperBox) = (box.a, box.b)
 
-unitinterval(T=Float64) = unithyperbox(T,1)
 unitsquare(T=Float64) = unithyperbox(T,2)
 unitcube(T=Float64) = unithyperbox(T,3)
 unithyperbox(T, D) = HyperBox((@SVector zeros(T,D)), (@SVector ones(T,D)))
@@ -49,7 +62,12 @@
     verticies::NTuple{NV,SVector{D,T}}
 end
 
-Simplex(verticies::Vararg{AbstractArray}) = Simplex(Tuple(SVector(v...) for v ∈ verticies))
+function Simplex(verticies::Vararg{AbstractArray})
+    ET = mapreduce(eltype,promote_type,verticies)
+    T = SVector{length(verticies[1]),ET}
+
+    return Simplex(Tuple(convert(T,v) for v ∈ verticies))
+end
 
 verticies(s::Simplex) = s.verticies
 
@@ -76,7 +94,7 @@
     parameterspace::PST
 end
 
-domain_dim(::Chart{D}) where D = D
+Base.ndims(::Chart{D}) where D = D
 (c::Chart)(ξ) = c.mapping(ξ)
 parameterspace(c::Chart) = c.parameterspace
 
@@ -131,6 +149,7 @@
 end
 
 charts(a::CartesianAtlas) = a.charts
+connections(a::CartesianAtlas) = nothing
 
 struct UnstructuredAtlas <: Atlas
     charts::Vector{Chart}
@@ -138,6 +157,7 @@
 end
 
 charts(a::UnstructuredAtlas) = a.charts
+connections(a::UnstructuredAtlas) = nothing
 
 
 ###