Mercurial > repos > public > sbplib_julia
annotate src/Grids/multiblockgrids.jl @ 2028:06f4b2ab43e8 feature/grids/multiblock_grids
Implement boundary_grid
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Fri, 11 Apr 2025 15:58:17 +0200 |
| parents | 1b6f150d95c5 |
| children |
| rev | line source |
|---|---|
|
2018
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
1 struct MultiBlockGrid{T,D,GT, CT} <: Grid{T,D} |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
2 grids::GT |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
3 connections::CT |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
4 end |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
5 |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
6 function MultiBlockGrid(grids, connections) |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
7 T = eltype(valtype(grids)) |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
8 D = ndims(valtype(grids)) |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
9 |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
10 MultiBlockGrid{T,D,typeof(grids), typeof(connections)}(grids,connections) |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
11 end |
|
a3ffc3202813
Start implementation of MultiBlockGrid
Jonatan Werpers <jonatan@werpers.com>
parents:
2017
diff
changeset
|
12 |
|
2023
50e7090f5a95
Add accessor functions
Jonatan Werpers <jonatan@werpers.com>
parents:
2019
diff
changeset
|
13 grids(g::MultiBlockGrid) = g.grids |
|
50e7090f5a95
Add accessor functions
Jonatan Werpers <jonatan@werpers.com>
parents:
2019
diff
changeset
|
14 connections(g::MultiBlockGrid) = g.connections |
|
50e7090f5a95
Add accessor functions
Jonatan Werpers <jonatan@werpers.com>
parents:
2019
diff
changeset
|
15 |
| 2024 | 16 Base.getindex(g::MultiBlockGrid, I...) = g.grids[I...] |
|
2026
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
17 |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
18 min_spacing(g::MultiBlockGrid) = minimum(min_spacing, grids(g)) |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
19 |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
20 function refine(g::MultiBlockGrid, n) |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
21 gs = map(grids(g)) do gᵢ |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
22 refine(gᵢ,n) |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
23 end |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
24 |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
25 return MultiBlockGrid(gs, connections(g)) |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
26 end |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
27 |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
28 function coarsen(g::MultiBlockGrid, n) |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
29 gs = map(grids(g)) do gᵢ |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
30 coarsen(gᵢ,n) |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
31 end |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
32 |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
33 return MultiBlockGrid(gs, connections(g)) |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
34 end |
|
1b6f150d95c5
Implement min_spacing, coarsen, refine
Jonatan Werpers <jonatan@werpers.com>
parents:
2025
diff
changeset
|
35 |
|
2019
fb2dc185c197
Add stubs for functions and tests to be implemented
Jonatan Werpers <jonatan@werpers.com>
parents:
2018
diff
changeset
|
36 |
| 1912 | 37 """ |
| 38 MultiBlockBoundary{N, BID} <: BoundaryIdentifier | |
| 39 | |
| 40 A boundary identifier for a multiblock grids. `N` Specifies which grid and | |
| 41 `BID` which boundary on that grid. | |
| 42 """ | |
| 43 struct MultiBlockBoundary{N, BID} <: BoundaryIdentifier end | |
| 44 grid_id(::MultiBlockBoundary{N, BID}) where {N, BID} = N | |
| 45 boundary_id(::MultiBlockBoundary{N, BID}) where {N, BID} = BID() | |
|
2017
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
46 |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
47 |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
48 function connection(k1, b1::BoundaryIdentifier, k2, b2::BoundaryIdentifier) |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
49 return ( |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
50 MultiBlockBoundary{k1,typeof(b1)}(), |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
51 MultiBlockBoundary{k2,typeof(b2)}(), |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
52 ) |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
53 end |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
54 |
|
ea2a15454cf2
Add connectio(...) to simplify the creation of grid connection tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
1912
diff
changeset
|
55 connection(t::Tuple) = connection(t...) |
|
2025
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
56 |
|
2028
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
57 # function boundary_identifiers end # Requires function from manifolds? |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
58 |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
59 function boundary_grid(g::MultiBlockGrid, bId::MultiBlockBoundary) |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
60 return boundary_grid(grids(g)[grid_id(bId)], boundary_id(bId)) |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
61 end |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
62 |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
63 # function boundary_indices end # Need to figure out the grid functions first? |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
64 # function eval_on end # Need to figure out the grid functions first? |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
65 # function Base.map end # Need to figure out the grid functions first? Should only have to implement the iterator interface |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
66 |
|
06f4b2ab43e8
Implement boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
2026
diff
changeset
|
67 # Plotting recipes |
|
2025
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
68 |
|
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
69 |
|
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
70 # Nested indices?? |
|
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
71 # motsvarande eachindex |
|
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
72 # Kolla notebooks med experiment |
|
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
73 # IteratorSize |
|
d35a4cb170ff
Add some notes and comments
Jonatan Werpers <jonatan@werpers.com>
parents:
2024
diff
changeset
|
74 # nogot slags shape? |
