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) |
