@@ -2,8 +2,9 @@ using Oceananigans.Architectures: architecture
2
2
using Oceananigans. Grids: AbstractGrid
3
3
using Oceananigans. OrthogonalSphericalShellGrids
4
4
using Oceananigans. Grids: R_Earth, validate_lat_lon_grid_args, generate_coordinate, with_precomputed_metrics, validate_rectilinear_grid_args
5
+ using Oceananigans. Grids: default_indices, validate_indices, offset_data, instantiate, halo_size, topology
5
6
6
- import Oceananigans. Grids: zeros, StaticVerticalDiscretization
7
+ import Oceananigans. Grids: zeros, StaticVerticalDiscretization, total_size
7
8
import Oceananigans. Architectures: child_architecture
8
9
9
10
import Oceananigans. DistributedComputations:
@@ -214,64 +215,38 @@ function TripolarGrid(arch::ShardedDistributed,
214
215
215
216
# Needed for partitial array assembly
216
217
# device_to_array_slices = Reactant.sharding_to_array_slices(sharding, global_size)
217
- irange = Colon ()
218
- jrange = Colon ()
219
218
FT = eltype (global_grid)
220
219
221
- # Partitioning the Coordinates
222
- λᶠᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :λᶠᶠᵃ , irange, jrange)
223
- φᶠᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :φᶠᶠᵃ , irange, jrange)
224
- λᶠᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :λᶠᶜᵃ , irange, jrange)
225
- φᶠᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :φᶠᶜᵃ , irange, jrange)
226
- λᶜᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :λᶜᶠᵃ , irange, jrange)
227
- φᶜᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :φᶜᶠᵃ , irange, jrange)
228
- λᶜᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :λᶜᶜᵃ , irange, jrange)
229
- φᶜᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :φᶜᶜᵃ , irange, jrange)
230
-
231
- # # Partitioning the Metrics
232
- Δxᶜᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δxᶜᶜᵃ , irange, jrange)
233
- Δxᶠᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δxᶠᶜᵃ , irange, jrange)
234
- Δxᶜᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δxᶜᶠᵃ , irange, jrange)
235
- Δxᶠᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δxᶠᶠᵃ , irange, jrange)
236
- Δyᶜᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δyᶜᶜᵃ , irange, jrange)
237
- Δyᶠᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δyᶠᶜᵃ , irange, jrange)
238
- Δyᶜᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δyᶜᶠᵃ , irange, jrange)
239
- Δyᶠᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Δyᶠᶠᵃ , irange, jrange)
240
- Azᶜᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Azᶜᶜᵃ , irange, jrange)
241
- Azᶠᶜᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Azᶠᶜᵃ , irange, jrange)
242
- Azᶜᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Azᶜᶠᵃ , irange, jrange)
243
- Azᶠᶠᵃ = OrthogonalSphericalShellGrids. partition_tripolar_metric (global_grid, :Azᶠᶠᵃ , irange, jrange)
244
-
245
220
# Copying the z coordinate to all the devices: we pass a NamedSharding of `nothing`s
246
221
# (a NamedSharding of nothings represents a copy to all devices)
247
222
# ``1'' here is the maximum number of dimensions of the fields of ``z''
248
223
replicate = Sharding. NamedSharding (arch. connectivity, ntuple (Returns (nothing ), 1 ))
249
224
250
- grid = OrthogonalSphericalShellGrid {Periodic,RightConnected,Bounded} (arch,
225
+ grid = OrthogonalSphericalShellGrid {Periodic, RightConnected, Bounded} (arch,
251
226
global_size... ,
252
227
halo... ,
253
228
convert (FT, global_grid. Lz),
254
- Reactant. to_rarray (λᶜᶜᵃ; sharding),
255
- Reactant. to_rarray (λᶠᶜᵃ; sharding),
256
- Reactant. to_rarray (λᶜᶠᵃ; sharding),
257
- Reactant. to_rarray (λᶠᶠᵃ; sharding),
258
- Reactant. to_rarray (φᶜᶜᵃ; sharding),
259
- Reactant. to_rarray (φᶠᶜᵃ; sharding),
260
- Reactant. to_rarray (φᶜᶠᵃ; sharding),
261
- Reactant. to_rarray (φᶠᶠᵃ; sharding),
229
+ Reactant. to_rarray (global_grid . λᶜᶜᵃ; sharding),
230
+ Reactant. to_rarray (global_grid . λᶠᶜᵃ; sharding),
231
+ Reactant. to_rarray (global_grid . λᶜᶠᵃ; sharding),
232
+ Reactant. to_rarray (global_grid . λᶠᶠᵃ; sharding),
233
+ Reactant. to_rarray (global_grid . φᶜᶜᵃ; sharding),
234
+ Reactant. to_rarray (global_grid . φᶠᶜᵃ; sharding),
235
+ Reactant. to_rarray (global_grid . φᶜᶠᵃ; sharding),
236
+ Reactant. to_rarray (global_grid . φᶠᶠᵃ; sharding),
262
237
sharded_z_direction (global_grid. z; sharding= replicate), # Replicating on all devices
263
- Reactant. to_rarray (Δxᶜᶜᵃ; sharding),
264
- Reactant. to_rarray (Δxᶠᶜᵃ; sharding),
265
- Reactant. to_rarray (Δxᶜᶠᵃ; sharding),
266
- Reactant. to_rarray (Δxᶠᶠᵃ; sharding),
267
- Reactant. to_rarray (Δyᶜᶜᵃ; sharding),
268
- Reactant. to_rarray (Δyᶠᶜᵃ; sharding),
269
- Reactant. to_rarray (Δyᶜᶠᵃ; sharding),
270
- Reactant. to_rarray (Δyᶠᶠᵃ; sharding),
271
- Reactant. to_rarray (Azᶜᶜᵃ; sharding),
272
- Reactant. to_rarray (Azᶠᶜᵃ; sharding),
273
- Reactant. to_rarray (Azᶜᶠᵃ; sharding),
274
- Reactant. to_rarray (Azᶠᶠᵃ; sharding),
238
+ Reactant. to_rarray (global_grid . Δxᶜᶜᵃ; sharding),
239
+ Reactant. to_rarray (global_grid . Δxᶠᶜᵃ; sharding),
240
+ Reactant. to_rarray (global_grid . Δxᶜᶠᵃ; sharding),
241
+ Reactant. to_rarray (global_grid . Δxᶠᶠᵃ; sharding),
242
+ Reactant. to_rarray (global_grid . Δyᶜᶜᵃ; sharding),
243
+ Reactant. to_rarray (global_grid . Δyᶠᶜᵃ; sharding),
244
+ Reactant. to_rarray (global_grid . Δyᶜᶠᵃ; sharding),
245
+ Reactant. to_rarray (global_grid . Δyᶠᶠᵃ; sharding),
246
+ Reactant. to_rarray (global_grid . Azᶜᶜᵃ; sharding),
247
+ Reactant. to_rarray (global_grid . Azᶠᶜᵃ; sharding),
248
+ Reactant. to_rarray (global_grid . Azᶜᶠᵃ; sharding),
249
+ Reactant. to_rarray (global_grid . Azᶠᶠᵃ; sharding),
275
250
convert (FT, global_grid. radius),
276
251
global_grid. conformal_mapping)
277
252
0 commit comments