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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
3fb33f00dab2 Implement getindex
Jonatan Werpers <jonatan@werpers.com>
parents: 2023
diff changeset
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
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 """
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 MultiBlockBoundary{N, BID} <: BoundaryIdentifier
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 A boundary identifier for a multiblock grids. `N` Specifies which grid and
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 `BID` which boundary on that grid.
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 """
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 struct MultiBlockBoundary{N, BID} <: BoundaryIdentifier end
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 grid_id(::MultiBlockBoundary{N, BID}) where {N, BID} = N
e68669552ed8 Add MultiBlockBoundary
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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?