diff --git a/src/MultiRegion/multi_region_field.jl b/src/MultiRegion/multi_region_field.jl index b425df8220..09040ec9f5 100644 --- a/src/MultiRegion/multi_region_field.jl +++ b/src/MultiRegion/multi_region_field.jl @@ -1,17 +1,17 @@ +using Oceananigans.AbstractOperations: AbstractOperation, compute_computed_field! using Oceananigans.BoundaryConditions: default_auxiliary_bc using Oceananigans.Fields: FunctionField, data_summary, AbstractField, instantiated_location -using Oceananigans.AbstractOperations: AbstractOperation, compute_computed_field! using Oceananigans.Operators: assumed_field_location using Oceananigans.OutputWriters: output_indices using Base: @propagate_inbounds -import Oceananigans.DistributedComputations: reconstruct_global_field, CommunicationBuffers import Oceananigans.BoundaryConditions: regularize_field_boundary_conditions -import Oceananigans.Grids: xnodes, ynodes -import Oceananigans.Fields: set!, compute!, compute_at!, interior, validate_field_data, validate_boundary_conditions -import Oceananigans.Fields: validate_indices, communication_buffers import Oceananigans.Diagnostics: hasnan +import Oceananigans.DistributedComputations: reconstruct_global_field, CommunicationBuffers +import Oceananigans.Fields: set!, compute!, compute_at!, interior, communication_buffers, + validate_field_data, validate_boundary_conditions, validate_indices +import Oceananigans.Grids: xnodes, ynodes import Base: fill!, axes @@ -193,9 +193,6 @@ function inject_regional_bcs(grid, connectivity, loc, indices; return FieldBoundaryConditions(indices, west, east, south, north, bottom, top, immersed) end -FieldBoundaryConditions(mrg::MultiRegionGrids, loc, indices; kwargs...) = - construct_regionally(inject_regional_bcs, mrg, mrg.connectivity, Reference(loc), indices; kwargs...) - function Base.show(io::IO, field::MultiRegionField) bcs = getregion(field, 1).boundary_conditions diff --git a/src/MultiRegion/multi_region_grid.jl b/src/MultiRegion/multi_region_grid.jl index 6473cdb485..265af142c4 100644 --- a/src/MultiRegion/multi_region_grid.jl +++ b/src/MultiRegion/multi_region_grid.jl @@ -1,12 +1,12 @@ using Oceananigans.Grids: metrics_precomputed, on_architecture, pop_flat_elements, grid_name using Oceananigans.ImmersedBoundaries: GridFittedBottom, PartialCellBottom, GridFittedBoundary -import Oceananigans.Grids: architecture, size, new_data, halo_size -import Oceananigans.Grids: with_halo, on_architecture -import Oceananigans.Grids: destantiate -import Oceananigans.Grids: minimum_xspacing, minimum_yspacing, minimum_zspacing -import Oceananigans.Models.HydrostaticFreeSurfaceModels: default_free_surface +import Oceananigans.BoundaryConditions: FieldBoundaryConditions import Oceananigans.DistributedComputations: reconstruct_global_grid +import Oceananigans.Grids: architecture, size, new_data, halo_size, + with_halo, on_architecture, destantiate, + minimum_xspacing, minimum_yspacing, minimum_zspacing +import Oceananigans.Models.HydrostaticFreeSurfaceModels: default_free_surface struct MultiRegionGrid{FT, TX, TY, TZ, CZ, P, C, G, Arch} <: AbstractUnderlyingGrid{FT, TX, TY, TZ, CZ, Arch} architecture :: Arch @@ -60,6 +60,9 @@ minimum_zspacing(grid::MultiRegionGrid, ℓx, ℓy, ℓz) = default_free_surface(grid::MultiRegionGrid; gravitational_acceleration=Oceananigans.defaults.gravitational_acceleration) = SplitExplicitFreeSurface(; substeps=50, gravitational_acceleration) +FieldBoundaryConditions(mrg::MultiRegionGrids, loc, indices; kwargs...) = + construct_regionally(inject_regional_bcs, mrg, mrg.connectivity, Reference(loc), indices; kwargs...) + """ MultiRegionGrid(global_grid; partition = XPartition(2))