@@ -20,9 +20,9 @@ struct MultiRegionGrid{FT, TX, TY, TZ, CZ, P, C, G, D, Arch} <: AbstractUnderlyi
2020 new {FT, TX, TY, TZ, CZ, P, C, G, D, A} (arch, partition, connectivity, region_grids, devices)
2121end
2222
23- const ImmersedMultiRegionGrid = ImmersedBoundaryGrid{<: Any , <: Any , <: Any , <: Any , <: MultiRegionGrid }
23+ const ImmersedMultiRegionGrid{FT, TX, TY, TZ} = ImmersedBoundaryGrid{FT, TX, TY, TZ , <: MultiRegionGrid }
2424
25- const MultiRegionGrids = Union{MultiRegionGrid, ImmersedMultiRegionGrid}
25+ const MultiRegionGrids{FT, TX, TY, TZ} = Union{MultiRegionGrid{FT, TX, TY, TZ}, ImmersedMultiRegionGrid{FT, TX, TY, TZ} }
2626
2727@inline isregional (mrg:: MultiRegionGrids ) = true
2828@inline getdevice (mrg:: MultiRegionGrid , i) = getdevice (mrg. region_grids, i)
@@ -194,8 +194,15 @@ reconstruct_global_immersed_boundary(g::GridFittedBottom{<:Field}) = GridFit
194194reconstruct_global_immersed_boundary (g:: PartialCellBottom{<:Field} ) = PartialCellBottom (reconstruct_global_field (g. bottom_height), g. minimum_fractional_cell_height)
195195reconstruct_global_immersed_boundary (g:: GridFittedBoundary{<:Field} ) = GridFittedBoundary (reconstruct_global_field (g. mask))
196196
197- @inline getregion (mrg:: ImmersedMultiRegionGrid{FT, TX, TY, TZ} , r) where {FT, TX, TY, TZ} = ImmersedBoundaryGrid {TX, TY, TZ} (_getregion (mrg. underlying_grid, r), _getregion (mrg. immersed_boundary, r))
198- @inline _getregion (mrg:: ImmersedMultiRegionGrid{FT, TX, TY, TZ} , r) where {FT, TX, TY, TZ} = ImmersedBoundaryGrid {TX, TY, TZ} ( getregion (mrg. underlying_grid, r), getregion (mrg. immersed_boundary, r))
197+ @inline getregion (mrg:: ImmersedMultiRegionGrid{FT, TX, TY, TZ} , r) where {FT, TX, TY, TZ} = ImmersedBoundaryGrid {TX, TY, TZ} (_getregion (mrg. underlying_grid, r),
198+ _getregion (mrg. immersed_boundary, r),
199+ _getregion (mrg. interior_active_cells, r),
200+ _getregion (mrg. active_z_columns, r))
201+
202+ @inline _getregion (mrg:: ImmersedMultiRegionGrid{FT, TX, TY, TZ} , r) where {FT, TX, TY, TZ} = ImmersedBoundaryGrid {TX, TY, TZ} (getregion (mrg. underlying_grid, r),
203+ getregion (mrg. immersed_boundary, r),
204+ getregion (mrg. interior_active_cells, r),
205+ getregion (mrg. active_z_columns, r))
199206
200207"""
201208 multi_region_object_from_array(a::AbstractArray, mrg::MultiRegionGrid)
@@ -238,10 +245,10 @@ function on_architecture(::CPU, mrg::MultiRegionGrid{FT, TX, TY, TZ, CZ}) where
238245 return MultiRegionGrid {FT, TX, TY, TZ, CZ} (CPU (), mrg. partition, mrg. connectivity, new_grids, devices)
239246end
240247
241- Base. summary (mrg:: MultiRegionGrid {FT, TX, TY, TZ} ) where {FT, TX, TY, TZ} =
248+ Base. summary (mrg:: MultiRegionGrids {FT, TX, TY, TZ} ) where {FT, TX, TY, TZ} =
242249 " MultiRegionGrid{$FT , $TX , $TY , $TZ } with $(summary (mrg. partition)) on $(string (typeof (mrg. region_grids[1 ]). name. wrapper)) "
243250
244- Base. show (io:: IO , mrg:: MultiRegionGrid {FT, TX, TY, TZ} ) where {FT, TX, TY, TZ} =
251+ Base. show (io:: IO , mrg:: MultiRegionGrids {FT, TX, TY, TZ} ) where {FT, TX, TY, TZ} =
245252 print (io, " $(grid_name (mrg)) {$FT , $TX , $TY , $TZ } partitioned on $(architecture (mrg)) : \n " ,
246253 " ├── grids: $(summary (mrg. region_grids[1 ])) \n " ,
247254 " ├── partitioning: $(summary (mrg. partition)) \n " ,
0 commit comments