annotate src/Grids/multiblockgrids.jl @ 2026:1b6f150d95c5 feature/grids/multiblock_grids

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