comparison src/Grids/grid.jl @ 1279:1157f889bf50 refactor/grids

Clear out some TBDs
author Jonatan Werpers <jonatan@werpers.com>
date Sun, 26 Feb 2023 21:20:52 +0100
parents dcd8654ca33b
children 7de1df0aad6a
comparison
equal deleted inserted replaced
1278:4a0570f325ce 1279:1157f889bf50
1 """ 1 """
2 Grid{T,D} 2 Grid{T,D}
3 3
4 The top level type for grids. 4 The top level type for grids.
5 5
6 TODO:
6 Should implement 7 Should implement
7 # TBD: 8 * interfaces for iteration and indexing
8 """ 9 """
9 #TBD: Should it be an AbstractArray? See notes in grid_refactor.md
10 # TODO: Document that grids should implement the interfaces for iteration and indexing.
11 abstract type Grid{T,D} end 10 abstract type Grid{T,D} end
12
13 11
14 Base.ndims(::Grid{T,D}) where {T,D} = D 12 Base.ndims(::Grid{T,D}) where {T,D} = D
15 Base.eltype(::Type{<:Grid{T}}) where T = T 13 Base.eltype(::Type{<:Grid{T}}) where T = T
16 target_manifold_dim(::Grid{T}) where T = _ncomponents(T) # TBD: Name of this function?! 14 target_manifold_dim(::Grid{T}) where T = _ncomponents(T) # TBD: Name of this function?!
17 15
43 dims(grid::Grid) 41 dims(grid::Grid)
44 42
45 Enumerate the dimensions of the grid. 43 Enumerate the dimensions of the grid.
46 """ 44 """
47 dims(grid::Grid) = 1:ndims(grid) 45 dims(grid::Grid) = 1:ndims(grid)
48 # TBD: Is this function needed? Where is it used? 46 # TBD: Is this function needed? Where is it used
49
50 # TBD: New file grid_functions.jl?
51 """ 47 """
52 TODO: 48 TODO:
53 49
54 * Mention map(f,g) if you want a concrete array 50 * Mention map(f,g) if you want a concrete array
55 """ 51 """
61 return LazyTensors.LazyFunctionArray((I...)->f(g[I...]...), size(g)) 57 return LazyTensors.LazyFunctionArray((I...)->f(g[I...]...), size(g))
62 end 58 end
63 end 59 end
64 60
65 61
66 # TODO: Explain how these are intended to be used 62 # TODO: Explain how and where these are intended to be used
67 _ncomponents(::Type{<:Number}) = 1 63 _ncomponents(::Type{<:Number}) = 1
68 _ncomponents(T::Type{<:SVector}) = length(T) 64 _ncomponents(T::Type{<:SVector}) = length(T)
69 65
70 _component_type(T::Type{<:Number}) = T 66 _component_type(T::Type{<:Number}) = T
71 _component_type(T::Type{<:SVector}) = eltype(T) 67 _component_type(T::Type{<:SVector}) = eltype(T)