annotate src/Grids/equidistant_grid.jl @ 1979:db3383581b9f feature/grids/geometry_functions

Remove dead code
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 26 Feb 2025 15:40:37 +0100
parents 04c251bccbd4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1247
2abec782cf5b Add todo for EquidistantGrid docs, improve equidistant_grid docs
Jonatan Werpers <jonatan@werpers.com>
parents: 1222
diff changeset
1 """
1331
ed3ea0630825 Add some docs for Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 1282
diff changeset
2 EquidistantGrid{T,R<:AbstractRange{T}} <: Grid{T,1}
ed3ea0630825 Add some docs for Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 1282
diff changeset
3
1335
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
4 A one-dimensional equidistant grid. Most users are expected to use
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
5 [`equidistant_grid`](@ref) for constructing equidistant grids.
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
6
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
7 See also: [`equidistant_grid`](@ref)
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
8
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
9
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
10 ## Note
cca45af5e724 Some docs for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1331
diff changeset
11 The type of range used for the points can likely impact performance.
1247
2abec782cf5b Add todo for EquidistantGrid docs, improve equidistant_grid docs
Jonatan Werpers <jonatan@werpers.com>
parents: 1222
diff changeset
12 """
1257
198ccda331a6 Remove range dim as a type paratmeter on Grid as it is already encoded in T if available
Jonatan Werpers <jonatan@werpers.com>
parents: 1255
diff changeset
13 struct EquidistantGrid{T,R<:AbstractRange{T}} <: Grid{T,1}
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
14 points::R
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
15 end
75
93c833019857 Make EquidistantGrid more concrete
Jonatan Werpers <jonatan@werpers.com>
parents: 74
diff changeset
16
1255
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
17 # Indexing interface
1764
d207e1abacc1 Fix ambiguity in getindex(::EquidistantGrid,...)
Jonatan Werpers <jonatan@werpers.com>
parents: 1713
diff changeset
18 Base.getindex(g::EquidistantGrid, i::Int) = g.points[i]
1344
760a4a1ec4b7 Add 2D tests for dissipation operators and fix bug
Jonatan Werpers <jonatan@werpers.com>
parents: 1335
diff changeset
19 Base.eachindex(g::EquidistantGrid) = eachindex(g.points)
1253
ff8f335c32d1 Fix indexing with begin and end for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1250
diff changeset
20 Base.firstindex(g::EquidistantGrid) = firstindex(g.points)
ff8f335c32d1 Fix indexing with begin and end for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1250
diff changeset
21 Base.lastindex(g::EquidistantGrid) = lastindex(g.points)
ff8f335c32d1 Fix indexing with begin and end for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1250
diff changeset
22
1399
adbdbf1c3480 Replace `firstindex` and `lastindex` with implementation of `axes`
Jonatan Werpers <jonatan@werpers.com>
parents: 1389
diff changeset
23 Base.axes(g::EquidistantGrid, d) = axes(g.points, d)
1389
d2219cc8316b Add `firstindex(g,d)` and `lastindex(g,d)` for `EquidistantGrid`
Jonatan Werpers <jonatan@werpers.com>
parents: 1365
diff changeset
24
1255
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
25 # Iteration interface
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
26 Base.iterate(g::EquidistantGrid) = iterate(g.points)
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
27 Base.iterate(g::EquidistantGrid, state) = iterate(g.points, state)
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
28
1262
5e28ae42caf2 Clean up IteratorSize and eltype for EquidistantGrid, Grid, and ZeroDimGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1259
diff changeset
29 Base.IteratorSize(::Type{<:EquidistantGrid}) = Base.HasShape{1}()
1255
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
30 Base.length(g::EquidistantGrid) = length(g.points)
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
31 Base.size(g::EquidistantGrid) = size(g.points)
1437
e3a80ef08d09 Implement size(g,d) for EquidistantGrid and TensorGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1399
diff changeset
32 Base.size(g::EquidistantGrid, d) = size(g.points)[d]
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
33
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
34
406
c377fc37c04b Clean up EquidistantGrid and tests after deciding that side lengths must be positive.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 405
diff changeset
35 """
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
36 spacing(grid::EquidistantGrid)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
37
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
38 The spacing between grid points.
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
39 """
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
40 spacing(g::EquidistantGrid) = step(g.points)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
41
51
614b56a017b9 Split grid.jl into AbstractGrid.jl and EquidistantGrid.jl
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
42
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
43 """
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
44 inverse_spacing(grid::EquidistantGrid)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
45
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
46 The reciprocal of the spacing between grid points.
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
47 """
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
48 inverse_spacing(g::EquidistantGrid) = 1/step(g.points)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
49
1646
5f348cc5598e Add min_spacing function for grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1604
diff changeset
50 min_spacing(g::EquidistantGrid) = spacing(g)
5f348cc5598e Add min_spacing function for grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1604
diff changeset
51
1672
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
52 """
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
53 LowerBoundary <: BoundaryIdentifier
1604
b459082533f7 Remove unnecessary white space changes to otherwise untouched files
Jonatan Werpers <jonatan@werpers.com>
parents: 1602
diff changeset
54
1710
f09d98874f12 Update docstrings
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1672
diff changeset
55 Boundary identifier for the the lower (left) boundary of a one-dimensional grid.
1672
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
56
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
57 See also: [`BoundaryIdentifier`](@ref)
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
58 """
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
59 struct LowerBoundary <: BoundaryIdentifier end
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
60
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
61 """
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
62 UpperBoundary <: BoundaryIdentifier
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
63
1710
f09d98874f12 Update docstrings
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1672
diff changeset
64 Boundary identifier for the the upper (right) boundary of a one-dimensional grid.
1672
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
65
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
66 See also: [`BoundaryIdentifier`](@ref)
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
67 """
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
68 struct UpperBoundary <: BoundaryIdentifier end
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
69
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
70
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
71 boundary_identifiers(::EquidistantGrid) = (LowerBoundary(), UpperBoundary())
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
72 boundary_grid(g::EquidistantGrid, id::LowerBoundary) = ZeroDimGrid(g[begin])
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1646
diff changeset
73 boundary_grid(g::EquidistantGrid, id::UpperBoundary) = ZeroDimGrid(g[end])
1830
805b9b7fcc39 Make tests pass for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1829
diff changeset
74 boundary_indices(g::EquidistantGrid, id::LowerBoundary) = firstindex(g)
805b9b7fcc39 Make tests pass for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1829
diff changeset
75 boundary_indices(g::EquidistantGrid, id::UpperBoundary) = lastindex(g)
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
76
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
77 """
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
78 refine(g::EquidistantGrid, r::Int)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
79
1347
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
80 The grid where `g` is refined by the factor `r`. The factor is applied to the number of
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
81 intervals, i.e., 1 less than the size of `g`.
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
82
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
83 See also: [`coarsen`](@ref)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
84 """
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
85 function refine(g::EquidistantGrid, r::Int)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
86 new_sz = (length(g) - 1)*r + 1
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
87 return EquidistantGrid(change_length(g.points, new_sz))
877
dd2ab001a7b6 Implement refine function, move exports to the top of the file, change location of constuctors.
Jonatan Werpers <jonatan@werpers.com>
parents: 688
diff changeset
88 end
680
1d3e29ffc6c6 Add support for 0-dimensional grid, and add method boundary_grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 661
diff changeset
89
909
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
90 """
1347
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
91 coarsen(g::EquidistantGrid, r::Int)
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
92
1347
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
93 The grid where `g` is coarsened by the factor `r`. The factor is applied to the number of
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
94 intervals, i.e., 1 less than the size of `g`. If the number of
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
95 intervals are not divisible by `r` an error is raised.
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
96
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
97 See also: [`refine`](@ref)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
98 """
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
99 function coarsen(g::EquidistantGrid, r::Int)
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
100 if (length(g)-1)%r != 0
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
101 throw(DomainError(r, "Size minus 1 must be divisible by the ratio."))
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
102 end
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
103
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
104 new_sz = (length(g) - 1)÷r + 1
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
105
1249
215f36712332 Fix typo
Jonatan Werpers <jonatan@werpers.com>
parents: 1248
diff changeset
106 return EquidistantGrid(change_length(g.points, new_sz))
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
107 end
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
108
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
109
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
110 """
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1513
diff changeset
111 equidistant_grid(limit_lower, limit_upper, dims...)
909
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
112
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
113 Construct an equidistant grid with corners at the coordinates `limit_lower` and
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
114 `limit_upper`.
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
115
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
116 The length of the domain sides are given by the components of
1247
2abec782cf5b Add todo for EquidistantGrid docs, improve equidistant_grid docs
Jonatan Werpers <jonatan@werpers.com>
parents: 1222
diff changeset
117 `limit_upper-limit_lower`. E.g for a 2D grid with `limit_lower=(-1,0)` and
2abec782cf5b Add todo for EquidistantGrid docs, improve equidistant_grid docs
Jonatan Werpers <jonatan@werpers.com>
parents: 1222
diff changeset
118 `limit_upper=(1,2)` the domain is defined as `(-1,1)x(0,2)`. The side lengths
2abec782cf5b Add todo for EquidistantGrid docs, improve equidistant_grid docs
Jonatan Werpers <jonatan@werpers.com>
parents: 1222
diff changeset
119 of the grid are not allowed to be negative.
909
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
120
1347
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
121 The number of equispaced points in each coordinate direction are given
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1513
diff changeset
122 by the tuple `dims`.
1247
2abec782cf5b Add todo for EquidistantGrid docs, improve equidistant_grid docs
Jonatan Werpers <jonatan@werpers.com>
parents: 1222
diff changeset
123
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1513
diff changeset
124 Note: If `limit_lower` and `limit_upper` are integers and `dims` would allow a
1247
2abec782cf5b Add todo for EquidistantGrid docs, improve equidistant_grid docs
Jonatan Werpers <jonatan@werpers.com>
parents: 1222
diff changeset
125 completely integer grid, `equidistant_grid` will still return a floating point
1513
d7bc11053951 Fix spelling mistakes
Jonatan Werpers <jonatan@werpers.com>
parents: 1464
diff changeset
126 grid. This simplifies the implementation and avoids certain surprise
d7bc11053951 Fix spelling mistakes
Jonatan Werpers <jonatan@werpers.com>
parents: 1464
diff changeset
127 behaviors.
909
b900fea1c057 Clean up the docs a bit
Jonatan Werpers <jonatan@werpers.com>
parents: 908
diff changeset
128 """
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1513
diff changeset
129 function equidistant_grid(limit_lower, limit_upper, dims::Vararg{Int})
1575
efe1fc4cb6b0 Improve error message when giving arguments of different length to equidistant_grid()
Jonatan Werpers <jonatan@werpers.com>
parents: 1529
diff changeset
130 if !(length(limit_lower) == length(limit_upper) == length(dims))
efe1fc4cb6b0 Improve error message when giving arguments of different length to equidistant_grid()
Jonatan Werpers <jonatan@werpers.com>
parents: 1529
diff changeset
131 throw(ArgumentError("All arguments must be of the same length"))
efe1fc4cb6b0 Improve error message when giving arguments of different length to equidistant_grid()
Jonatan Werpers <jonatan@werpers.com>
parents: 1529
diff changeset
132 end
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1513
diff changeset
133 gs = map(equidistant_grid, limit_lower, limit_upper, dims)
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
134 return TensorGrid(gs...)
352
a18bd337a280 Add function for getting a one dimensional grid for a given dimension from a equidistant grid
Jonatan Werpers <jonatan@werpers.com>
parents: 333
diff changeset
135 end
658
26b0eb83aea4 Add function for getting boundary identifiers from equidistant grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 406
diff changeset
136
1113
4e4c5011140d Add functions orthogonal_dims and boundary_size
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1111
diff changeset
137 """
1902
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
138 equidistant_grid(limit_lower::Number, limit_upper::Number, size::Int)
1113
4e4c5011140d Add functions orthogonal_dims and boundary_size
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1111
diff changeset
139
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
140 Constructs a 1D equidistant grid.
1113
4e4c5011140d Add functions orthogonal_dims and boundary_size
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1111
diff changeset
141 """
1701
74f051444e0e Make equidistant_grid() for 1D more restrictive in the types it accepts
Jonatan Werpers <jonatan@werpers.com>
parents: 1646
diff changeset
142 function equidistant_grid(limit_lower::Number, limit_upper::Number, size::Int)
1902
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
143 if size <= 0
1282
11b08b242e48 Make equdistant_grid return an EquidistantGrid for the 1d Case
Jonatan Werpers <jonatan@werpers.com>
parents: 1280
diff changeset
144 throw(DomainError("size must be postive"))
11b08b242e48 Make equdistant_grid return an EquidistantGrid for the 1d Case
Jonatan Werpers <jonatan@werpers.com>
parents: 1280
diff changeset
145 end
11b08b242e48 Make equdistant_grid return an EquidistantGrid for the 1d Case
Jonatan Werpers <jonatan@werpers.com>
parents: 1280
diff changeset
146
1902
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
147 if limit_upper-limit_lower <= 0
1282
11b08b242e48 Make equdistant_grid return an EquidistantGrid for the 1d Case
Jonatan Werpers <jonatan@werpers.com>
parents: 1280
diff changeset
148 throw(DomainError("side length must be postive"))
11b08b242e48 Make equdistant_grid return an EquidistantGrid for the 1d Case
Jonatan Werpers <jonatan@werpers.com>
parents: 1280
diff changeset
149 end
1902
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
150
1282
11b08b242e48 Make equdistant_grid return an EquidistantGrid for the 1d Case
Jonatan Werpers <jonatan@werpers.com>
parents: 1280
diff changeset
151 return EquidistantGrid(range(limit_lower, limit_upper, length=size)) # TBD: Should it use LinRange instead?
1113
4e4c5011140d Add functions orthogonal_dims and boundary_size
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1111
diff changeset
152 end
4e4c5011140d Add functions orthogonal_dims and boundary_size
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1111
diff changeset
153
1902
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
154 equidistant_grid(d::Interval, size::Int) = equidistant_grid(limits(d)..., size)
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
155 equidistant_grid(hb::HyperBox, dims::Vararg{Int}) = equidistant_grid(limits(hb)..., dims...)
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
156
1586
d4a6f9effcdd Remove mapped_grid(::Chart) and add equidistant_grid(::Chart)
Jonatan Werpers <jonatan@werpers.com>
parents: 1566
diff changeset
157 function equidistant_grid(c::Chart, dims::Vararg{Int})
1842
f2b32da29b73 Introduce mapped_grid for ParameterSpace and simplify implementation of equidistant_grid(::Chart)
Jonatan Werpers <jonatan@werpers.com>
parents: 1779
diff changeset
158 mapped_grid(c, ξ->jacobian(c,ξ), parameterspace(c), dims...)
1586
d4a6f9effcdd Remove mapped_grid(::Chart) and add equidistant_grid(::Chart)
Jonatan Werpers <jonatan@werpers.com>
parents: 1566
diff changeset
159 end
d4a6f9effcdd Remove mapped_grid(::Chart) and add equidistant_grid(::Chart)
Jonatan Werpers <jonatan@werpers.com>
parents: 1566
diff changeset
160
1902
f93ba5832146 Copy changes related to ParameterSpace from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents: 1863
diff changeset
161
1280
17d435c08773 Add missing exports and alias TensorGridBoundary to CartesianBoundary
Jonatan Werpers <jonatan@werpers.com>
parents: 1279
diff changeset
162 CartesianBoundary{D,BID} = TensorGridBoundary{D,BID} # TBD: What should we do about the naming of this boundary?
1111
5b3d4a8ec3ab Change to using filter for picking out orthogonal dimensions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 909
diff changeset
163
680
1d3e29ffc6c6 Add support for 0-dimensional grid, and add method boundary_grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 661
diff changeset
164
1d3e29ffc6c6 Add support for 0-dimensional grid, and add method boundary_grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 661
diff changeset
165 """
1347
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
166 change_length(r::AbstractRange, n)
680
1d3e29ffc6c6 Add support for 0-dimensional grid, and add method boundary_grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 661
diff changeset
167
1347
08f06bfacd5c Fix typos and formatting of documentation
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1344
diff changeset
168 Change the length of `r` to `n`, keeping the same start and stop.
877
dd2ab001a7b6 Implement refine function, move exports to the top of the file, change location of constuctors.
Jonatan Werpers <jonatan@werpers.com>
parents: 688
diff changeset
169 """
1250
40ca0af6e480 Add methods to change_length and fix incorrect function declaration
Jonatan Werpers <jonatan@werpers.com>
parents: 1249
diff changeset
170 function change_length end
908
bc71dd5b8311 More docs
Jonatan Werpers <jonatan@werpers.com>
parents: 907
diff changeset
171
1250
40ca0af6e480 Add methods to change_length and fix incorrect function declaration
Jonatan Werpers <jonatan@werpers.com>
parents: 1249
diff changeset
172 change_length(r::UnitRange, n) = StepRange{Int,Int}(range(r[begin], r[end], n))
40ca0af6e480 Add methods to change_length and fix incorrect function declaration
Jonatan Werpers <jonatan@werpers.com>
parents: 1249
diff changeset
173 change_length(r::StepRange, n) = StepRange{Int,Int}(range(r[begin], r[end], n))
40ca0af6e480 Add methods to change_length and fix incorrect function declaration
Jonatan Werpers <jonatan@werpers.com>
parents: 1249
diff changeset
174 change_length(r::StepRangeLen, n) = range(r[begin], r[end], n)
1222
5f677cd6f0b6 Start refactoring
Jonatan Werpers <jonatan@werpers.com>
parents: 1156
diff changeset
175 change_length(r::LinRange, n) = LinRange(r[begin], r[end], n)