comparison src/Grids/equidistant_grid.jl @ 1247:2abec782cf5b refactor/grids

Add todo for EquidistantGrid docs, improve equidistant_grid docs
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 22 Feb 2023 12:41:14 +0100
parents 5f677cd6f0b6
children a5f2372d0e87
comparison
equal deleted inserted replaced
1246:476b889f0ffa 1247:2abec782cf5b
1 """
2 # TODO:
3 """
4 #TODO: Document recomendations for type of range. (LinRange is faster?)
1 struct EquidistantGrid{T,R<:AbstractRange{T}} <: Grid{T,1,1} 5 struct EquidistantGrid{T,R<:AbstractRange{T}} <: Grid{T,1,1}
2 points::R 6 points::R
3 end 7 end
4 8
5 Base.eltype(g::EquidistantGrid{T}) where T = T 9 Base.eltype(g::EquidistantGrid{T}) where T = T
75 79
76 Construct an equidistant grid with corners at the coordinates `limit_lower` and 80 Construct an equidistant grid with corners at the coordinates `limit_lower` and
77 `limit_upper`. 81 `limit_upper`.
78 82
79 The length of the domain sides are given by the components of 83 The length of the domain sides are given by the components of
80 `limit_upper-limit_lower`. E.g for a 2D grid with `limit_lower=(-1,0)` and `limit_upper=(1,2)` the domain is defined 84 `limit_upper-limit_lower`. E.g for a 2D grid with `limit_lower=(-1,0)` and
81 as `(-1,1)x(0,2)`. The side lengths of the grid are not allowed to be negative. 85 `limit_upper=(1,2)` the domain is defined as `(-1,1)x(0,2)`. The side lengths
86 of the grid are not allowed to be negative.
82 87
83 The number of equidistantly spaced points in each coordinate direction are given 88 The number of equidistantly spaced points in each coordinate direction are given
84 by the tuple `size`. 89 by the tuple `size`.
90
91 Note: If `limit_lower` and `limit_upper` are integers and `size` would allow a
92 completely integer grid, `equidistant_grid` will still return a floating point
93 grid. This simlifies the implementation and avoids certain surprise
94 behaviours.
85 """ 95 """
86 function equidistant_grid(size::Dims, limit_lower, limit_upper) 96 function equidistant_grid(size::Dims, limit_lower, limit_upper)
87 gs = map(size, limit_lower, limit_upper) do s,l,u 97 gs = map(size, limit_lower, limit_upper) do s,l,u
88 EquidistantGrid(range(l, u, length=s)) # TBD: Should it use LinRange instead? 98 EquidistantGrid(range(l, u, length=s)) # TBD: Should it use LinRange instead?
89 end 99 end