Mercurial > repos > public > sbplib_julia
annotate 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 |
rev | line source |
---|---|
212
aa17d4d9d09e
Export some functions from AbstractGrid and move documentation to docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
211
diff
changeset
|
1 """ |
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:
1256
diff
changeset
|
2 Grid{T,D} |
1222 | 3 |
4 The top level type for grids. | |
212
aa17d4d9d09e
Export some functions from AbstractGrid and move documentation to docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
211
diff
changeset
|
5 |
1279 | 6 TODO: |
212
aa17d4d9d09e
Export some functions from AbstractGrid and move documentation to docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
211
diff
changeset
|
7 Should implement |
1279 | 8 * interfaces for iteration and indexing |
1222 | 9 """ |
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:
1256
diff
changeset
|
10 abstract type Grid{T,D} end |
1222 | 11 |
1262
5e28ae42caf2
Clean up IteratorSize and eltype for EquidistantGrid, Grid, and ZeroDimGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
1257
diff
changeset
|
12 Base.ndims(::Grid{T,D}) where {T,D} = D |
5e28ae42caf2
Clean up IteratorSize and eltype for EquidistantGrid, Grid, and ZeroDimGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
1257
diff
changeset
|
13 Base.eltype(::Type{<:Grid{T}}) where T = T |
1272
3637daad71e8
Add function target_manifold_dim for Grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1270
diff
changeset
|
14 target_manifold_dim(::Grid{T}) where T = _ncomponents(T) # TBD: Name of this function?! |
1222 | 15 |
1264
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
16 """ |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
17 # TODO |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
18 """ |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
19 function refine end |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
20 |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
21 """ |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
22 # TODO |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
23 """ |
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
24 function coarsen end |
1222 | 25 |
212
aa17d4d9d09e
Export some functions from AbstractGrid and move documentation to docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
211
diff
changeset
|
26 """ |
1222 | 27 # TODO |
28 """ | |
1233
3924c1f6ec6d
Fix empty function defs
Jonatan Werpers <jonatan@werpers.com>
parents:
1222
diff
changeset
|
29 function boundary_identifiers end |
1264
7a67935d3f3a
grid.jl: Fix function defs and add todos for documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
1262
diff
changeset
|
30 |
1222 | 31 """ |
32 # TODO | |
33 """ | |
1233
3924c1f6ec6d
Fix empty function defs
Jonatan Werpers <jonatan@werpers.com>
parents:
1222
diff
changeset
|
34 function boundary_grid end |
1266
a4ddae8b5d49
Add tests for TensorGrid and make them pass
Jonatan Werpers <jonatan@werpers.com>
parents:
1264
diff
changeset
|
35 # TBD Can we implement a version here that accepts multiple ids and grouped boundaries? Maybe we need multiblock stuff? |
1222 | 36 |
37 | |
38 # TODO: Make sure that all grids implement all of the above. | |
51
614b56a017b9
Split grid.jl into AbstractGrid.jl and EquidistantGrid.jl
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
39 |
212
aa17d4d9d09e
Export some functions from AbstractGrid and move documentation to docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
211
diff
changeset
|
40 """ |
1117
aeeffca46b94
Minor renamings
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1116
diff
changeset
|
41 dims(grid::Grid) |
1116
c2d7e940639e
Rename AbstractGrid to Grid and clean up Grids module
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1115
diff
changeset
|
42 |
1222 | 43 Enumerate the dimensions of the grid. |
1116
c2d7e940639e
Rename AbstractGrid to Grid and clean up Grids module
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1115
diff
changeset
|
44 """ |
1128
dfbd62c7eb09
Rename dim to ndims in Grids.jl
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1117
diff
changeset
|
45 dims(grid::Grid) = 1:ndims(grid) |
1279 | 46 # TBD: Is this function needed? Where is it used |
1269
20f42cf0800c
Add test for Grid and make them pass. Start implementing eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1266
diff
changeset
|
47 """ |
20f42cf0800c
Add test for Grid and make them pass. Start implementing eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1266
diff
changeset
|
48 TODO: |
1222 | 49 |
1269
20f42cf0800c
Add test for Grid and make them pass. Start implementing eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1266
diff
changeset
|
50 * Mention map(f,g) if you want a concrete array |
20f42cf0800c
Add test for Grid and make them pass. Start implementing eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1266
diff
changeset
|
51 """ |
20f42cf0800c
Add test for Grid and make them pass. Start implementing eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1266
diff
changeset
|
52 eval_on(g::Grid, f) = eval_on(g, f, Base.IteratorSize(g)) # TBD: Borde f vara först som i alla map, sum, och dylikt |
1273
7fab13c07412
Allow multi-argument functions in eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1272
diff
changeset
|
53 function eval_on(g::Grid, f, ::Base.HasShape) |
7fab13c07412
Allow multi-argument functions in eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1272
diff
changeset
|
54 if hasmethod(f, (Any,)) |
7fab13c07412
Allow multi-argument functions in eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1272
diff
changeset
|
55 return LazyTensors.LazyFunctionArray((I...)->f(g[I...]), size(g)) |
7fab13c07412
Allow multi-argument functions in eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1272
diff
changeset
|
56 else |
7fab13c07412
Allow multi-argument functions in eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1272
diff
changeset
|
57 return LazyTensors.LazyFunctionArray((I...)->f(g[I...]...), size(g)) |
7fab13c07412
Allow multi-argument functions in eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1272
diff
changeset
|
58 end |
7fab13c07412
Allow multi-argument functions in eval_on
Jonatan Werpers <jonatan@werpers.com>
parents:
1272
diff
changeset
|
59 end |
1222 | 60 |
1270
dcbac783e4c1
Factor out functions for getting the type and number of components in a type
Jonatan Werpers <jonatan@werpers.com>
parents:
1269
diff
changeset
|
61 |
1279 | 62 # TODO: Explain how and where these are intended to be used |
1270
dcbac783e4c1
Factor out functions for getting the type and number of components in a type
Jonatan Werpers <jonatan@werpers.com>
parents:
1269
diff
changeset
|
63 _ncomponents(::Type{<:Number}) = 1 |
dcbac783e4c1
Factor out functions for getting the type and number of components in a type
Jonatan Werpers <jonatan@werpers.com>
parents:
1269
diff
changeset
|
64 _ncomponents(T::Type{<:SVector}) = length(T) |
dcbac783e4c1
Factor out functions for getting the type and number of components in a type
Jonatan Werpers <jonatan@werpers.com>
parents:
1269
diff
changeset
|
65 |
dcbac783e4c1
Factor out functions for getting the type and number of components in a type
Jonatan Werpers <jonatan@werpers.com>
parents:
1269
diff
changeset
|
66 _component_type(T::Type{<:Number}) = T |
dcbac783e4c1
Factor out functions for getting the type and number of components in a type
Jonatan Werpers <jonatan@werpers.com>
parents:
1269
diff
changeset
|
67 _component_type(T::Type{<:SVector}) = eltype(T) |