comparison src/Grids/manifolds.jl @ 1579:14d79b13b54f feature/grids/manifolds

Add tests, fix bugs, add exports, for Simplex and friends
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 25 Apr 2024 22:14:46 +0200
parents 56da785ab576
children fdee60ab8c4e
comparison
equal deleted inserted replaced
1578:56da785ab576 1579:14d79b13b54f
41 unitcube(T=Float64) = unithyperbox(T,3) 41 unitcube(T=Float64) = unithyperbox(T,3)
42 unithyperbox(T, D) = HyperBox((@SVector zeros(T,D)), (@SVector ones(T,D))) 42 unithyperbox(T, D) = HyperBox((@SVector zeros(T,D)), (@SVector ones(T,D)))
43 unithyperbox(D) = unithyperbox(Float64,D) 43 unithyperbox(D) = unithyperbox(Float64,D)
44 44
45 45
46 struct Simplex{T,D} <: ParameterSpace{D} 46 struct Simplex{T,D,NV} <: ParameterSpace{D}
47 verticies::NTuple{D,SVector{D,T}} 47 verticies::NTuple{NV,SVector{D,T}}
48 end 48 end
49 49
50 Simplex(verticies::Vararg{AbstractArray}) = Simplex(Tuple(SVector(v...) for v ∈ verticies)) 50 Simplex(verticies::Vararg{AbstractArray}) = Simplex(Tuple(SVector(v...) for v ∈ verticies))
51 51
52 verticies(s::Simplex) = s.verticies
53
52 Triangle{T} = Simplex{T,2} 54 Triangle{T} = Simplex{T,2}
53 Tetrahedron{T} = Simplex{T,3} 55 Tetrahedron{T} = Simplex{T,3}
54 56
55 unittriangle(T) = unitsimplex(T,2) 57 unittriangle(T=Float64) = unitsimplex(T,2)
56 unittetrahedron(T) = unitsimplex(T,3) 58 unittetrahedron(T=Float64) = unitsimplex(T,3)
57 function unitsimplex(T,D) 59 function unitsimplex(T,D)
58 z = @SVector zeros(T,D) 60 z = @SVector zeros(T,D)
59 unitelement = one(eltype(z)) 61 unitelement = one(eltype(z))
60 verticies = ntuple(i->setindex(z, unitelement, i), 4) 62 verticies = ntuple(i->setindex(z, unitelement, i), D)
61 return Simplex(verticies) 63 return Simplex((z,verticies...))
62 end 64 end
63 65 unitsimplex(D) = unitsimplex(Float64, D)
64 66
65 """ 67 """
66 68
67 A parametrized description of a manifold or part of a manifold. 69 A parametrized description of a manifold or part of a manifold.
68 70