comparison src/Grids/grid.jl @ 1347:08f06bfacd5c refactor/grids

Fix typos and formatting of documentation
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 18 May 2023 22:53:31 +0200
parents 760a4a1ec4b7
children 4d628c83987e 86026367a9ff
comparison
equal deleted inserted replaced
1345:c2012db881cb 1347:08f06bfacd5c
12 indexing and iteration. 12 indexing and iteration.
13 13
14 ## Note 14 ## Note
15 15
16 Importantly a grid does not have to be an `AbstractArray`. The reason is to 16 Importantly a grid does not have to be an `AbstractArray`. The reason is to
17 allow flexible handling of special types of grids like multiblock-grids, or 17 allow flexible handling of special types of grids like multi-block grids, or
18 grids with special indexing. 18 grids with special indexing.
19 """ 19 """
20 abstract type Grid{T,D} end 20 abstract type Grid{T,D} end
21 21
22 Base.ndims(::Grid{T,D}) where {T,D} = D 22 Base.ndims(::Grid{T,D}) where {T,D} = D
23 Base.eltype(::Type{<:Grid{T}}) where T = T 23 Base.eltype(::Type{<:Grid{T}}) where T = T
24 24
25 """ 25 """
26 coordinate_size(grid) 26 coordinate_size(g)
27 27
28 The lenght of the coordinate vector for the given grid. 28 The lenght of the coordinate vector of `Grid` `g`.
29 """ 29 """
30 coordinate_size(::Type{<:Grid{T}}) where T = _ncomponents(T) 30 coordinate_size(::Type{<:Grid{T}}) where T = _ncomponents(T)
31 coordinate_size(g::Grid) = coordinate_size(typeof(g)) # TBD: Name of this function?! 31 coordinate_size(g::Grid) = coordinate_size(typeof(g)) # TBD: Name of this function?!
32 32
33 """ 33 """
34 component_type(grid) 34 component_type(g)
35 35
36 The type of the components of the coordinate vector. 36 The type of the components of the coordinate vector of `Grid` `g`.
37 """ 37 """
38 component_type(::Type{<:Grid{T}}) where T = eltype(T) 38 component_type(::Type{<:Grid{T}}) where T = eltype(T)
39 component_type(g::Grid) = component_type(typeof(g)) 39 component_type(g::Grid) = component_type(typeof(g))
40 40
41 """ 41 """
42 refine(g::Grid, r) 42 refine(g::Grid, r)
43 43
44 `g` refined by the factor `r`. 44 The grid where `g` is refined by the factor `r`.
45 45
46 See also: [`coarsen`](@ref). 46 See also: [`coarsen`](@ref).
47 """ 47 """
48 function refine end 48 function refine end
49 49
50 """ 50 """
51 coarsen(g::Grid, r) 51 coarsen(g::Grid, r)
52 52
53 `g` coarsened by the factor `r`. 53 The grid where `g` is coarsened by the factor `r`.
54 54
55 See also: [`refine`](@ref). 55 See also: [`refine`](@ref).
56 """ 56 """
57 function coarsen end 57 function coarsen end
58 58
62 Identifiers for all the boundaries of `g`. 62 Identifiers for all the boundaries of `g`.
63 """ 63 """
64 function boundary_identifiers end 64 function boundary_identifiers end
65 65
66 """ 66 """
67 boundary_grid(g::Grid, bid::BoundaryIdentifier) 67 boundary_grid(g::Grid, id::BoundaryIdentifier)
68 68
69 The grid for the specified boundary. 69 The grid for the boundary specified by `id`.
70 """ 70 """
71 function boundary_grid end 71 function boundary_grid end
72 # TBD: Can we implement a version here that accepts multiple ids and grouped boundaries? Maybe we need multiblock stuff? 72 # TBD: Can we implement a version here that accepts multiple ids and grouped boundaries? Maybe we need multiblock stuff?
73 73
74 """ 74 """
76 76
77 Lazy evaluation `f` on the grid. `f` can either be on the form `f(x,y,...)` 77 Lazy evaluation `f` on the grid. `f` can either be on the form `f(x,y,...)`
78 with each coordinate as an argument, or on the form `f(x̄)` taking a 78 with each coordinate as an argument, or on the form `f(x̄)` taking a
79 coordinate vector. 79 coordinate vector.
80 80
81 If the goal is a concrete array `map(f,g)` can be used instead. 81 For concrete array grid functions `map(f,g)` can be used instead.
82 """ 82 """
83 eval_on(g::Grid, f) = eval_on(g, f, Base.IteratorSize(g)) 83 eval_on(g::Grid, f) = eval_on(g, f, Base.IteratorSize(g))
84 function eval_on(g::Grid, f, ::Base.HasShape) 84 function eval_on(g::Grid, f, ::Base.HasShape)
85 if hasmethod(f, (Any,)) 85 if hasmethod(f, (Any,))
86 return LazyTensors.LazyFunctionArray((I...)->f(g[I...]), size(g)) 86 return LazyTensors.LazyFunctionArray((I...)->f(g[I...]), size(g))