-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathcolumn.jl
54 lines (41 loc) · 1.26 KB
/
column.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""
ColumnIndex(ij,h)
An index into a column of a field. This can be used as an argument to `getindex`
of a `Field`, to return a field on that column.
# Example
```julia
colidx = ColumnIndex((1,1),1)
field[colidx]
```
"""
struct ColumnIndex{N}
ij::NTuple{N, Int}
h::Int
end
"""
ColumnViewGrid(
full_grid :: ExtrudedFiniteDifferenceGrid,
colidx :: ColumnIndex,
)
A view into a column of a `ExtrudedFiniteDifferenceGrid`. This can be used as an
"""
struct ColumnViewGrid{
G <: AbstractExtrudedFiniteDifferenceGrid,
C <: ColumnIndex,
} <: AbstractFiniteDifferenceGrid
full_grid::G
colidx::C
end
local_geometry_type(::Type{ColumnGrid{G, C}}) where {G, C} =
local_geometry_type(G)
column(grid::AbstractExtrudedFiniteDifferenceGrid, colidx::ColumnIndex) =
ColumnViewGrid(grid, colidx)
topology(colgrid::ColumnViewGrid) = vertical_topology(colgrid.full_grid)
vertical_topology(colgrid::ColumnViewGrid) =
vertical_topology(colgrid.full_grid)
local_geometry_data(colgrid::ColumnViewGrid, staggering::Staggering) = column(
local_geometry_data(colgrid.full_grid, staggering::Staggering),
colgrid.colidx.ij...,
colgrid.colidx.h,
)
global_geometry(colgrid::ColumnViewGrid) = global_geometry(colgrid.full_grid)