Mercurial > repos > public > sbplib_julia
comparison src/Grids/equidistant_grid.jl @ 1829:871f3f1decea refactor/grids/iterable_boundary_indices
Merge default
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Sun, 20 Oct 2024 21:38:09 +0200 |
parents | b0c019acb50b 863385aae454 |
children | 805b9b7fcc39 |
comparison
equal
deleted
inserted
replaced
1828:8adecef380b4 | 1829:871f3f1decea |
---|---|
45 | 45 |
46 The reciprocal of the spacing between grid points. | 46 The reciprocal of the spacing between grid points. |
47 """ | 47 """ |
48 inverse_spacing(g::EquidistantGrid) = 1/step(g.points) | 48 inverse_spacing(g::EquidistantGrid) = 1/step(g.points) |
49 | 49 |
50 min_spacing(g::EquidistantGrid) = spacing(g) | |
50 | 51 |
51 boundary_identifiers(::EquidistantGrid) = (Lower(), Upper()) | 52 """ |
52 boundary_grid(g::EquidistantGrid, id::Lower) = ZeroDimGrid(g[begin]) | 53 LowerBoundary <: BoundaryIdentifier |
53 boundary_grid(g::EquidistantGrid, id::Upper) = ZeroDimGrid(g[end]) | 54 |
54 boundary_indices(g::EquidistantGrid, id::Lower) = 1 | 55 Boundary identifier for the the lower (left) boundary of a one-dimensional grid. |
55 boundary_indices(g::EquidistantGrid, id::Upper) = length(g) | 56 |
57 See also: [`BoundaryIdentifier`](@ref) | |
58 """ | |
59 struct LowerBoundary <: BoundaryIdentifier end | |
60 | |
61 """ | |
62 UpperBoundary <: BoundaryIdentifier | |
63 | |
64 Boundary identifier for the the upper (right) boundary of a one-dimensional grid. | |
65 | |
66 See also: [`BoundaryIdentifier`](@ref) | |
67 """ | |
68 struct UpperBoundary <: BoundaryIdentifier end | |
69 | |
70 | |
71 boundary_identifiers(::EquidistantGrid) = (LowerBoundary(), UpperBoundary()) | |
72 boundary_grid(g::EquidistantGrid, id::LowerBoundary) = ZeroDimGrid(g[begin]) | |
73 boundary_grid(g::EquidistantGrid, id::UpperBoundary) = ZeroDimGrid(g[end]) | |
74 boundary_indices(g::EquidistantGrid, id::LowerBoundary) = (firstindex(g),) | |
75 boundary_indices(g::EquidistantGrid, id::UpperBoundary) = (lastindex(g),) | |
56 | 76 |
57 """ | 77 """ |
58 refine(g::EquidistantGrid, r::Int) | 78 refine(g::EquidistantGrid, r::Int) |
59 | 79 |
60 The grid where `g` is refined by the factor `r`. The factor is applied to the number of | 80 The grid where `g` is refined by the factor `r`. The factor is applied to the number of |
117 """ | 137 """ |
118 equidistant_grid(limit_lower::T, limit_upper::T, size::Int) | 138 equidistant_grid(limit_lower::T, limit_upper::T, size::Int) |
119 | 139 |
120 Constructs a 1D equidistant grid. | 140 Constructs a 1D equidistant grid. |
121 """ | 141 """ |
122 function equidistant_grid(limit_lower::T, limit_upper::T, size::Int) where T | 142 function equidistant_grid(limit_lower::Number, limit_upper::Number, size::Int) |
123 if any(size .<= 0) | 143 if any(size .<= 0) |
124 throw(DomainError("size must be postive")) | 144 throw(DomainError("size must be postive")) |
125 end | 145 end |
126 | 146 |
127 if any(limit_upper.-limit_lower .<= 0) | 147 if any(limit_upper.-limit_lower .<= 0) |