From daf65ec76271de2928fba3e5bda0d49c78364755 Mon Sep 17 00:00:00 2001 From: Thomas Melvin Date: Tue, 6 Jan 2026 12:17:46 +0000 Subject: [PATCH 1/7] Copy of core code for decomposing across panels from srs lfric_core#4699 --- .../source/mesh/runtime_partition_mod.f90 | 6 +- .../source/mesh/global_mesh_mod.F90 | 97 +++++--- .../source/mesh/panel_decomposition_mod.f90 | 130 +++++++++- infrastructure/source/mesh/partition_mod.F90 | 235 ++++++++++++------ 4 files changed, 350 insertions(+), 118 deletions(-) diff --git a/components/driver/source/mesh/runtime_partition_mod.f90 b/components/driver/source/mesh/runtime_partition_mod.f90 index 34cd14101..38b662634 100644 --- a/components/driver/source/mesh/runtime_partition_mod.f90 +++ b/components/driver/source/mesh/runtime_partition_mod.f90 @@ -78,15 +78,15 @@ subroutine get_partition_strategy( mesh_selection, total_ranks, partitioner_ptr call log_event( "Using serial cubed sphere partitioner", & log_level_debug ) - else if (mod(total_ranks,6) == 0) then + else if (mod(total_ranks,3) == 0 .or. mod(total_ranks,2) == 0) then ! Paralled run job partitioner_ptr => partitioner_cubedsphere call log_event( "Using parallel cubed sphere partitioner", & log_level_debug ) else - call log_event( "Total number of processors must be 1 (serial) "// & - "or a multiple of 6 for a cubed-sphere domain.", & + call log_event( "Total number of processors must be 1 (serial) "// & + "or a multiple of 2 or 3 for a cubed-sphere domain.", & log_level_error ) end if diff --git a/infrastructure/source/mesh/global_mesh_mod.F90 b/infrastructure/source/mesh/global_mesh_mod.F90 index 178f6d818..4e39a4ae5 100644 --- a/infrastructure/source/mesh/global_mesh_mod.F90 +++ b/infrastructure/source/mesh/global_mesh_mod.F90 @@ -1,6 +1,6 @@ !----------------------------------------------------------------------------- ! Copyright (c) 2017, Met Office, on behalf of HMSO and Queen's Printer -! For further details please refer to the file LICENCE which you +! For further details please refer to the file LICENCE.original which you ! should have received as part of this distribution. !----------------------------------------------------------------------------- @@ -1019,16 +1019,19 @@ end function get_equatorial_latitude !> !> @note For a cubed -sphere mesh, this will only return correct cell IDs if !> the offset cell remains on same the cubed-sphere "face" as the - !> start cell. + !> start cell unless check_orientation is specified. !> !> @param[in] cell_number ID of the anchor element. !> @param[in] x_cells Offset in the E/W direction. !> @param[in] y_cells Offset in the N/S direction. + !> @param[in] check_orientation Switch to check for orientation changes + !! such as when crossing panel boundaries !> !> @return cell_id ID of the cell at the given offset to the start cell. !> function get_cell_id( self, cell_number, & - x_cells, y_cells ) result ( cell_id ) + x_cells, y_cells, & + check_orientation ) result ( cell_id ) use reference_element_mod, only : W, S, E, N @@ -1036,62 +1039,84 @@ function get_cell_id( self, cell_number, & class(global_mesh_type), intent(in) :: self - integer(i_def), intent(in) :: cell_number - integer(i_def), intent(in) :: x_cells, y_cells + integer(i_def), intent(in) :: cell_number + integer(i_def), intent(in) :: x_cells, y_cells + logical(l_def), optional, intent(in) :: check_orientation - integer(i_def) :: cell_id + integer(i_def) :: cell_id, old_cell_id - integer(i_def) :: index_x, dist_x - integer(i_def) :: index_y, dist_y - integer(i_def) :: i + integer(i_def) :: x_index, y_index, x_dist, y_dist, i, j + integer(i_def) :: opposite(4), rotate(4) - cell_id = cell_number + logical(l_def) :: check - ! Determine march along local x-axis - if (x_cells > 0) then - index_x = E - dist_x = x_cells - else if (x_cells < 0) then - index_x = W - dist_x = abs(x_cells) + opposite = (/ E, N, W, S /) + rotate = (/ S, E, N, W /) + if ( present( check_orientation ) ) then + check = check_orientation else - index_x = W - dist_x = 0 + check = .false. end if - ! Determine march along local y-axis - if (y_cells > 0) then - index_y = N - dist_y = y_cells - else if (y_cells < 0) then - index_y = S - dist_y = abs(y_cells) + cell_id=cell_number + + if (x_cells >= 0 )then + x_index = E + x_dist = x_cells + else + x_index = W + x_dist = abs(x_cells) + end if + if (y_cells >= 0 )then + y_index = N + y_dist = y_cells else - index_y = S - dist_y = 0 + y_index = S + y_dist = abs(y_cells) end if - !======================================== - ! March from anchor along local x/y axes. - !======================================== - do i=1, dist_x + ! x_dist cells in the x-direction + do i = 1, x_dist + old_cell_id = cell_id + cell_id = self%cell_next_2d(x_index,cell_id) if (cell_id == self%void_cell) then ! The current cell is not on the domain write(log_scratch_space,'(A)') & 'No adjacent cell, the current cell is not on mesh domain' call log_event(log_scratch_space, LOG_LEVEL_ERROR) end if - cell_id = self%cell_next_2d(index_x, cell_id) + ! Check if we've changed direction + if ( check .and. self%cell_next_2d(opposite(x_index),cell_id) /= old_cell_id ) then + ! We have changed direction so we need to find the correct + ! index and reset + do j = 1,4 + if ( self%cell_next_2d(opposite(j),cell_id) == old_cell_id ) x_index = j + end do + end if end do - - do i=1, dist_y + ! y_dist cells in the y-direction + ! Since the direction may have changed we need to recompute + y_index = rotate(x_index) + if ( y_cells < 0 ) y_index = opposite(y_index) + + ! y_index and y_dist + do i = 1,y_dist + old_cell_id = cell_id + cell_id = self%cell_next_2d(y_index,cell_id) if (cell_id == self%void_cell) then ! The current cell is not on the domain write(log_scratch_space,'(A)') & 'No adjacent cell, the current cell is not on mesh domain' call log_event(log_scratch_space, LOG_LEVEL_ERROR) end if - cell_id = self%cell_next_2d(index_y, cell_id) + ! Check if we've changed direction + if ( check .and. self%cell_next_2d(opposite(y_index),cell_id) /= old_cell_id ) then + ! We have changed direction so we need to find the correct + ! index and reset + do j = 1,4 + if ( self%cell_next_2d(opposite(j),cell_id) == old_cell_id ) y_index = j + end do + end if end do end function get_cell_id diff --git a/infrastructure/source/mesh/panel_decomposition_mod.f90 b/infrastructure/source/mesh/panel_decomposition_mod.f90 index 95ca50107..8af470358 100644 --- a/infrastructure/source/mesh/panel_decomposition_mod.f90 +++ b/infrastructure/source/mesh/panel_decomposition_mod.f90 @@ -1,6 +1,6 @@ !----------------------------------------------------------------------------- ! Copyright (c) 2025, Met Office, on behalf of HMSO and Queen's Printer -! For further details please refer to the file LICENCE which you +! For further details please refer to the file LICENCE.original which you ! should have received as part of this distribution. !----------------------------------------------------------------------------- @@ -20,6 +20,7 @@ module panel_decomposition_mod type, public, abstract :: panel_decomposition_type contains procedure(get_partition_interface), deferred :: get_partition + procedure(get_nprocs_interface), deferred :: get_nprocs end type panel_decomposition_type !> @brief Decomposition that accepts user specified number of xprocs and yprocs @@ -27,6 +28,7 @@ module panel_decomposition_mod integer(i_def) :: num_xprocs, num_yprocs contains procedure, public :: get_partition => get_custom_partition + procedure, public :: get_nprocs => get_custom_nprocs end type custom_decomposition_type ! Constructor interface custom_decomposition_type @@ -37,24 +39,28 @@ module panel_decomposition_mod type, extends(panel_decomposition_type), public :: auto_decomposition_type contains procedure, public :: get_partition => get_auto_partition + procedure, public :: get_nprocs => get_auto_nprocs end type auto_decomposition_type !> @brief Decomposition only in x direction type, extends(panel_decomposition_type), public :: row_decomposition_type contains procedure, public :: get_partition => get_row_partition + procedure, public :: get_nprocs => get_row_nprocs end type row_decomposition_type !> @brief Decomposition only in y direction type, extends(panel_decomposition_type), public :: column_decomposition_type contains procedure, public :: get_partition => get_column_partition + procedure, public :: get_nprocs => get_column_nprocs end type column_decomposition_type !> @brief Decomposition that automatically generates a nonuniform decomposition type, extends(panel_decomposition_type), public :: auto_nonuniform_decomposition_type contains procedure, public :: get_partition => get_auto_nonuniform_partition + procedure, public :: get_nprocs => get_auto_nonuniform_nprocs end type auto_nonuniform_decomposition_type ! @brief Decomposition that accepts user specified number of xprocs to @@ -63,6 +69,7 @@ module panel_decomposition_mod integer(i_def) :: num_xprocs contains procedure, public :: get_partition => get_guided_nonuniform_partition + procedure, public :: get_nprocs => get_guided_nonuniform_nprocs end type guided_nonuniform_decomposition_type ! Constructor interface guided_nonuniform_decomposition_type @@ -105,6 +112,19 @@ end subroutine get_partition_interface end interface + abstract interface + + function get_nprocs_interface(self) result(nprocs) + use constants_mod, only: i_def + import :: panel_decomposition_type + + class(panel_decomposition_type), intent(in) :: self + + integer(i_def) :: nprocs(2) + end function get_nprocs_interface + + end interface + contains !> @brief Partition the panel into a given number of x and y processes @@ -184,7 +204,6 @@ subroutine get_custom_partition( self, & end subroutine get_custom_partition - !> @brief Constructor for custom_decomposition_type !> @param[in] xprocs The requested number of partitions in the x direction !> @param[in] yprocs The requested number of partitions in the y direction @@ -199,6 +218,19 @@ function custom_decomposition_constructor(xprocs, yprocs) result(self) end function custom_decomposition_constructor + !> @brief Get the number of processors in the x- and y-direction + !> @result nprocs Number of processors (x-dir, y-dir) + function get_custom_nprocs(self) result(nprocs) + use constants_mod, only: i_def + + class(custom_decomposition_type), intent(in) :: self + + integer(i_def) :: nprocs(2) + + nprocs(:) = (/ self%num_xprocs, self%num_yprocs /) + + end function get_custom_nprocs + !> @brief Partition the panel into an automatically determined number of x and ! y processes @@ -239,6 +271,8 @@ subroutine get_auto_partition( self, & partition_x_pos, & partition_y_pos + integer(i_def), parameter :: max_factor_iters = 10000 + integer(i_def) :: num_xprocs, num_yprocs integer(i_def) :: mp_num_cells_x, mp_num_cells_y integer(i_def) :: start_xprocs, start_width, i @@ -328,6 +362,24 @@ subroutine get_auto_partition( self, & end subroutine get_auto_partition + !> @brief Get the number of processors in the x- and y-direction. + !! For this class the function is not needed and so only + !! returns default values + !> @result nprocs Number of processors (x-dir, y-dir) + function get_auto_nprocs(self) result(nprocs) + use constants_mod, only: i_def + + class(auto_decomposition_type), intent(in) :: self + + integer(i_def) :: nprocs(2) + + ! These values aren't needed for auto decomposition + ! (and aren't available until get_auto_partition has been called) + ! so just return something that won't break the code + nprocs(:) = (/ 1, 1 /) + + end function get_auto_nprocs + !> @brief Partition the panel only in the x direction !> @param[in] relative_rank The number of this rank in the order of all @@ -400,6 +452,24 @@ subroutine get_row_partition( self, & end subroutine get_row_partition + !> @brief Get the number of processors in the x- and y-direction. + !! For this class the function is not needed and so only + !! returns default values + !> @result nprocs Number of processors (x-dir, y-dir) + function get_row_nprocs(self) result(nprocs) + use constants_mod, only: i_def + + class(row_decomposition_type), intent(in) :: self + + integer(i_def) :: nprocs(2) + + ! These values aren't needed for row decomposition + ! (and arenn't available until get_row_partition has been called) + ! so just return something that won't break the code + nprocs(:) = (/ 1, 1 /) + + end function get_row_nprocs + !> @brief Partition the panel only in the y direction !> @param[in] relative_rank The number of this rank in the order of all @@ -472,6 +542,24 @@ subroutine get_column_partition( self, & end subroutine get_column_partition + !> @brief Get the number of processors in the x- and y-direction. + !! For this class the function is not needed and so only + !! returns default values + !> @result nprocs Number of processors (x-dir, y-dir) + function get_column_nprocs(self) result(nprocs) + use constants_mod, only: i_def + + class(column_decomposition_type), intent(in) :: self + + integer(i_def) :: nprocs(2) + + ! These values aren't needed for column decomposition + ! (and aren't available until get_column_partition has been called) + ! so just return something that won't break the code + nprocs(:) = (/ 1, 1 /) + + end function get_column_nprocs + !> @brief Partition the panel into an automatically determined number of ! columns of partitions of variable size. !> @param[in] relative_rank The number of this rank in the order of all @@ -570,6 +658,24 @@ subroutine get_auto_nonuniform_partition( self, & end subroutine get_auto_nonuniform_partition + !> @brief Get the number of processors in the x- and y-direction. + !! For this class the function is not needed and so only + !! returns default values + !> @result nprocs Number of processors (x-dir, y-dir) + function get_auto_nonuniform_nprocs(self) result(nprocs) + use constants_mod, only: i_def + + class(auto_nonuniform_decomposition_type), intent(in) :: self + + integer(i_def) :: nprocs(2) + + ! These values aren't needed for auto_nonuniform decomposition + ! (and aren't available until get_auto_nonuniform_partition has been called) + ! so just return something that won't break the code + nprocs(:) = (/ 1, 1 /) + + end function get_auto_nonuniform_nprocs + !> @brief Partition the panel into a given number of columns of partitions of ! variable size. !> @param[in] relative_rank The number of this rank in the order of all @@ -661,6 +767,24 @@ function guided_nonuniform_decomposition_constructor( xprocs ) result(self) end function guided_nonuniform_decomposition_constructor + !> @brief Get the number of processors in the x- and y-direction. + !! For this class the function is not needed and so only + !! returns default values + !> @result nprocs Number of processors (x-dir, y-dir) + function get_guided_nonuniform_nprocs(self) result(nprocs) + use constants_mod, only: i_def + + class(guided_nonuniform_decomposition_type), intent(in) :: self + + integer(i_def) :: nprocs(2) + + ! These values aren't needed for guided_nonuniform decomposition + ! (and aren't available until get_guided_nonuniform_partition has been called) + ! so just return something that won't break the code + nprocs(:) = (/ 1, 1 /) + + end function get_guided_nonuniform_nprocs + !> @brief Helper function for generating identical partitions arranged in a ! rectangular grid @@ -959,4 +1083,4 @@ function calc_panel_width( global_mesh ) result(panel_edge_ncells_x) end function calc_panel_width -end module panel_decomposition_mod \ No newline at end of file +end module panel_decomposition_mod diff --git a/infrastructure/source/mesh/partition_mod.F90 b/infrastructure/source/mesh/partition_mod.F90 index 3348427a6..f22d535e4 100644 --- a/infrastructure/source/mesh/partition_mod.F90 +++ b/infrastructure/source/mesh/partition_mod.F90 @@ -1,6 +1,6 @@ !----------------------------------------------------------------------------- ! Copyright (c) 2017, Met Office, on behalf of HMSO and Queen's Printer -! For further details please refer to the file LICENCE which you +! For further details please refer to the file LICENCE.original which you ! should have received as part of this distribution. !----------------------------------------------------------------------------- @@ -25,6 +25,7 @@ module partition_mod use sort_mod, only : bubble_sort use log_mod, only : log_event, & log_scratch_space, & + LOG_LEVEL_INFO, & LOG_LEVEL_ERROR, & LOG_LEVEL_DEBUG use constants_mod, only: i_def, r_def, l_def @@ -524,11 +525,6 @@ subroutine partitioner_cubedsphere( global_mesh, & ! A cubed sphere has 6 panels num_panels = 6 - !check that we have a number of ranks that is compatible with this partitioner - if( modulo(total_ranks,num_panels) /= 0 ) call log_event( & - 'The cubed-sphere partitioner requires a multiple of six processors.', & - LOG_LEVEL_ERROR ) - call partitioner_rectangular_panels( global_mesh, & num_panels, & decomposition, & @@ -676,18 +672,20 @@ subroutine partitioner_rectangular_panels( global_mesh, & ! but not in the partitioned domain logical(l_def), intent(in) :: generate_inner_halos ! Flag to control the generation of inner halos - integer(i_def) :: face ! which face of the cube is implied by local_rank (0->5) - integer(i_def) :: start_cell ! lowest cell id of the face implaced by local_rank - integer(i_def) :: start_rank ! The number of the first rank on the face implied by local_rank - integer(i_def) :: panel_ranks! The number of ranks per panel on the mesh - integer(i_def) :: relative_rank ! The position of the current rank relative to the first rank in its panel - integer(i_def) :: start_x ! global cell id of start of the domain on this partition in x-dirn - integer(i_def) :: num_x ! number of cells in the domain on this partition in x-dirn - integer(i_def) :: start_y ! global cell id of start of the domain on this partition in y-dirn - integer(i_def) :: num_y ! number of cells in the domain on this partition in y-dirn - integer(i_def) :: ix, iy ! loop counters over cells on this partition in x- and y-dirns - integer(i_def) :: void_cell ! Cell id that marks the cell as a cell outside of the partition. - logical :: any_maps ! Whether there exist maps between meshes, meaning their partitions must align. + integer(i_def) :: face ! which face of the cube is implied by local_rank (0->5) + integer(i_def) :: start_cell ! lowest cell id of the face implaced by local_rank + integer(i_def) :: start_rank ! The number of the first rank on the face implied by local_rank + integer(i_def) :: panel_ranks ! The number of ranks per panel on the mesh + integer(i_def) :: relative_rank ! The position of the current rank relative to the first rank in its panel + integer(i_def) :: start_x ! global cell id of start of the domain on this partition in x-dirn + integer(i_def) :: num_x ! number of cells in the domain on this partition in x-dirn + integer(i_def) :: start_y ! global cell id of start of the domain on this partition in y-dirn + integer(i_def) :: num_y ! number of cells in the domain on this partition in y-dirn + integer(i_def) :: ix, iy ! loop counters over cells on this partition in x- and y-dirns + integer(i_def) :: void_cell ! Cell id that marks the cell as a cell outside of the partition. + logical :: any_maps ! Whether there exist maps between meshes, meaning their partitions must align. + integer(i_def) :: start1, end1, inc1 ! Loop indices for inserting cells into the partition + integer(i_def) :: start2, end2, inc2 ! Loop indices for inserting cells into the partition ! Create linked lists @@ -699,26 +697,38 @@ subroutine partitioner_rectangular_panels( global_mesh, & type(linked_list_item_type), pointer :: insert_point ! where to insert in a list type(linked_list_item_type), pointer :: loop ! temp ptr to loop through list - integer :: i, j ! loop counters - integer :: cells(4) ! The cells around the vertex being queried - integer :: oth1, oth2 ! When querying a cell around a vertex, these are - ! the indices of the other two cells + integer :: i, j ! loop counters + integer :: cells(4) ! The cells around the vertex being queried + integer :: oth1, oth2 ! When querying a cell around a vertex, these are + ! the indices of the other two cells integer, allocatable :: sw_corner_cells(:) - ! List of cells at the SW corner of the panels - integer :: panel ! panel number - integer :: cell ! starting point for num_cells_x calculation - integer :: cell_next(4) ! The cells around the cell being queried - integer :: cell_next_e ! The cell to the east of the cell being queried - integer :: num_cells_x ! number of cells across a panel in x-direction - integer :: num_cells_y ! number of cells across a panel in y-direction + ! List of cells at the SW corner of the panels + integer :: panel ! panel number + integer :: cell ! starting point for num_cells_x calculation + integer :: cell_next(4) ! The cells around the cell being queried + integer :: cell_next_e ! The cell to the east of the cell being queried + integer :: num_cells_x ! number of cells across a panel in x-direction + integer :: num_cells_y ! number of cells across a panel in y-direction integer :: start_sort, end_sort ! range over which to sort cells - integer :: depth ! counter over the halo depths - integer :: orig_num_in_list ! number of cells in list before halos are added + integer :: depth ! counter over the halo depths + integer :: orig_num_in_list ! number of cells in list before halos are added + integer :: ncell ! Number of cells + integer :: cell_id ! Id of cell in the partition + logical :: cross_panels ! Flag for partitioning across multiple cubed sphere panels + logical :: check_orientation ! Check for orientation changes when getting cell id's + integer :: n_cross_panels ! number of panels to decompose across + integer, allocatable :: face_of_combined_panels(:) + ! The first face in sections of combined cubed sphere panels + integer :: nprocs(2) ! number of processors in the x- & y-direction + integer :: xproc ! number of processsors in x-direction + integer :: yproc ! number of processsors in y-direction integer(i_def) :: num_apply logical(l_def) :: periodic_xy(2) ! Periodic in the x/y-axes periodic_xy = global_mesh%get_mesh_periodicity() void_cell = global_mesh%get_void_cell() + cross_panels = .false. + n_cross_panels = 1 any_maps = global_mesh%get_nmaps() > 0 nullify( last ) @@ -726,6 +736,10 @@ subroutine partitioner_rectangular_panels( global_mesh, & nullify( insert_point ) nullify( loop ) + nprocs = decomposition%get_nprocs() + xproc = nprocs(1) + yproc = nprocs(2) + if (num_panels==1) then ! A single panelled mesh might be rectangluar - so find the dimensions ! First determine the southwest corner cell depending on periodicity. If @@ -780,12 +794,55 @@ subroutine partitioner_rectangular_panels( global_mesh, & num_cells_y=global_mesh%get_ncells()/num_cells_x else - ! For multi-panel meshes, the panels must be square - num_cells_x = nint(sqrt( real(global_mesh%get_ncells(), kind=r_def)/ & - real(num_panels, kind=r_def) )) - num_cells_y = num_cells_x + if( num_panels == 6 .and. & + xproc*yproc*2 == total_ranks .and. & + modulo(total_ranks,2) == 0 ) then + ncell = nint(sqrt( real(global_mesh%get_ncells(), kind=r_def)/ & + real(num_panels, kind=r_def) )) + ! We will partition across 3 panels giving 2 'super' panels of 3 cubed-sphere panels each + cross_panels = .true. + n_cross_panels = 2 + num_cells_x = ncell * 3 + num_cells_y = ncell + allocate( face_of_combined_panels(n_cross_panels) ) + ! Super panels consist of faces (1, 2, 3), (6, 4, 5) + ! In terms of the panel numbers used here is then + ! (3, 2, 6), (5, 4, 1) + face_of_combined_panels(:) = (/ 3, 5 /) + elseif( num_panels == 6 .and. & + xproc*yproc*3 == total_ranks .and. & + modulo(total_ranks,3) == 0 ) then + ncell = nint(sqrt( real(global_mesh%get_ncells(), kind=r_def)/ & + real(num_panels, kind=r_def) )) + ! We will partition across 2 panels giving 3 'super' panels of 2 cubed-sphere panels each + cross_panels = .true. + n_cross_panels = 3 + num_cells_x = ncell * 2 + num_cells_y = ncell + allocate( face_of_combined_panels(n_cross_panels) ) + ! Super panels consist of faces (1, 2), (4,5) & (6,3) + ! In terms of the panel numbers used here is then + ! (3, 2), (4, 1), (5, 6) + face_of_combined_panels(:) = (/ 3, 4, 5 /) + elseif( modulo(total_ranks,num_panels) == 0 ) then + ! For multi-panel meshes, the panels must be square + num_cells_x = nint(sqrt( real(global_mesh%get_ncells(), kind=r_def)/ & + real(num_panels, kind=r_def) )) + num_cells_y = num_cells_x + else + write(log_scratch_space,*) 'Unable to find a partition strategy. Total ranks (',& + total_ranks,') needs to either have a factor of ', num_panels, & + ' or if num_panels = 6 and custom decomposition is used then total ranks needs to have a factor of 2 or 3' + call log_event(log_scratch_space, LOG_LEVEL_ERROR) + end if ! Calculate the South West corner cells of all the panels in the global mesh + ! Note the 'panel' numbers used here do not correspond to the panel numbers + ! used in the rest of the model as this uses the vertex index to find + ! the cell in the corner of each panel and it is not true that the first corner + ! cell found in this manner will correspond to panel 1. + ! In fact for the cubed sphere meshes used the relationship is: + ! SW corner cells are on panels: (5, 2, 1, 4, 6, 3) allocate(sw_corner_cells(num_panels)) panel=1 do i=1,global_mesh%get_nverts() @@ -812,11 +869,18 @@ subroutine partitioner_rectangular_panels( global_mesh, & endif - face = ((num_panels * local_rank) / total_ranks) + 1 - panel_ranks = total_ranks / num_panels + if ( cross_panels ) then + face = ((n_cross_panels * local_rank) / total_ranks) + 1 + panel_ranks = total_ranks / n_cross_panels + else + face = ((num_panels * local_rank) / total_ranks) + 1 + panel_ranks = total_ranks / num_panels + end if start_rank = panel_ranks * (face - 1) relative_rank = local_rank - start_rank + 1 + ! Work out the start index and number of cells (in x- and y-dirn) for + ! the local partition call decomposition%get_partition( relative_rank, & panel_ranks, & mapping_factor, & @@ -829,7 +893,41 @@ subroutine partitioner_rectangular_panels( global_mesh, & start_y ) - start_cell = sw_corner_cells(face) + + ! Set up limits for finding cells + start1 = start_x + end1 = start_x + num_x - 1 + inc1 = 1 + start2 = start_y + end2 = start_y + num_y - 1 + inc2 = 1 + + if ( cross_panels ) then + ! Generally we want the start cell to be the SW corner cell + ! but there is an exception when we are spanning 3 panels and looking + ! at cubed sphere panels (6,4,5) when we want to start in the NW corner. + ! Cubed sphere panels (6,4,5) correspond to the indices (5, 4, 1) of the + ! sw_corner_cells array since the sw_corner_cells array indices (1,..,6) do not + ! correspond to cubed sphere panels (1,..,6) and are in fact + ! ordered (5, 2, 1, 4, 6, 3) + start_cell = sw_corner_cells(face_of_combined_panels(face)) + if (n_cross_panels == 2 .and. start_cell == sw_corner_cells(5) ) then + ! Start in the NW corner and go in (-y, x) direction + start_cell = global_mesh%get_cell_id(start_cell, 0, num_cells_y-1) + + num_y = num_cells_x / xproc + num_x = num_cells_y / yproc + start1 = start_y + end1 = start1 + num_x - 1 + inc1 = 1 + start2 = -start_x + 2 + end2 = start2 - num_y + 1 + inc2 = -1 + end if + deallocate( face_of_combined_panels ) + else + start_cell = sw_corner_cells(face) + end if deallocate(sw_corner_cells) write(log_scratch_space,"(a,i0,a,i0,a,i0,a,i0)") "start_x ", start_x, & @@ -837,53 +935,38 @@ subroutine partitioner_rectangular_panels( global_mesh, & " num_x ", num_x, & " num_y ", num_y call log_event( log_scratch_space, LOG_LEVEL_DEBUG ) + write(log_scratch_space,"(a,i0,a,i0)") "Number of cells in partition ", num_x, " X ", num_y + call log_event( log_scratch_space, lOG_LEVEL_INFO ) - ! Create a linked list of all cells that are part of this partition (not halos) - + ! Create a linked list of all cells in the partition and at the same time + ! create a linked-list of all edge cells known to the partition, excluding halos. partition = linked_list_type() + known_cells = linked_list_type() + + ! We only need to check for orientation changes in the partition + ! covers multiple panels + check_orientation = cross_panels + + do iy = start2, end2, inc2 + do ix = start1, end1, inc1 + cell_id = global_mesh%get_cell_id(start_cell, ix-1, iy-1, & + check_orientation) + call partition%insert_item( linked_list_int_type( cell_id ) ) + + ! If this is an edge cell then add it to the list of known edge cells + ! (if it is not already there) + if ( ix == start1 .or. ix == end1 .or. iy == start2 .or. iy == end2 ) then + if ( .not. known_cells%item_exists(cell_id) ) then + call known_cells%insert_item( linked_list_int_type( cell_id ) ) + end if + end if - do iy = start_y, start_y+num_y - 1 - do ix = start_x, start_x+num_x - 1 - call partition%insert_item( linked_list_int_type( & - global_mesh%get_cell_id(start_cell, ix-1, iy-1))) end do end do ! Create a linked-list of all cells known to the partition, including halos. ! This will be ordered as: ! inner n, inner n-1 ... inner 1, edge, halo 1 ... halo n-1, halo n - ! - ! Start with the edge cells - those cells owned by the partition - but are on - ! the edge of the partitioned domain, so may have dofs shared with halo cells - - known_cells = linked_list_type() - - ! Those cells along the top/bottom - - do ix = start_x, start_x+num_x-1 - ! start inserting the edge cells - call known_cells%insert_item(linked_list_int_type( & - global_mesh%get_cell_id(start_cell, ix-1, start_y-1))) - ! insert but check for duplicates between start and end of known_cells list - if(.not. (known_cells%item_exists(global_mesh%get_cell_id( & - start_cell, ix-1, start_y+num_y-2)) ) ) then - call known_cells%insert_item( linked_list_int_type( & - global_mesh%get_cell_id(start_cell, ix-1, start_y+num_y-2))) - end if - end do - ! Those along the left/right - do iy = start_y+1, start_y+num_y-2 - if(.not. (known_cells%item_exists(global_mesh%get_cell_id( & - start_cell, start_x-1, iy-1)) )) then - call known_cells%insert_item( linked_list_int_type( & - global_mesh%get_cell_id(start_cell, start_x-1, iy-1))) - end if - if(.not. (known_cells%item_exists(global_mesh%get_cell_id( & - start_cell, start_x+num_x-2, iy-1)) )) then - call known_cells%insert_item( linked_list_int_type( & - global_mesh%get_cell_id(start_cell, start_x+num_x-2, iy-1))) - end if - end do ! get the number of edge cells currently stored in the known_cells list num_edge = known_cells%get_length() From 5781c76a3d898b1285381d0443d3eb4155a21c42 Mon Sep 17 00:00:00 2001 From: thomasmelvin Date: Tue, 6 Jan 2026 15:17:39 +0000 Subject: [PATCH 2/7] Remove accidental changes to wqtrunk code --- infrastructure/source/mesh/global_mesh_mod.F90 | 2 +- infrastructure/source/mesh/panel_decomposition_mod.f90 | 2 +- infrastructure/source/mesh/partition_mod.F90 | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/infrastructure/source/mesh/global_mesh_mod.F90 b/infrastructure/source/mesh/global_mesh_mod.F90 index 4e39a4ae5..3a2a811ee 100644 --- a/infrastructure/source/mesh/global_mesh_mod.F90 +++ b/infrastructure/source/mesh/global_mesh_mod.F90 @@ -1,6 +1,6 @@ !----------------------------------------------------------------------------- ! Copyright (c) 2017, Met Office, on behalf of HMSO and Queen's Printer -! For further details please refer to the file LICENCE.original which you +! For further details please refer to the file LICENCE which you ! should have received as part of this distribution. !----------------------------------------------------------------------------- diff --git a/infrastructure/source/mesh/panel_decomposition_mod.f90 b/infrastructure/source/mesh/panel_decomposition_mod.f90 index 8af470358..cef054f8e 100644 --- a/infrastructure/source/mesh/panel_decomposition_mod.f90 +++ b/infrastructure/source/mesh/panel_decomposition_mod.f90 @@ -1,6 +1,6 @@ !----------------------------------------------------------------------------- ! Copyright (c) 2025, Met Office, on behalf of HMSO and Queen's Printer -! For further details please refer to the file LICENCE.original which you +! For further details please refer to the file LICENCE which you ! should have received as part of this distribution. !----------------------------------------------------------------------------- diff --git a/infrastructure/source/mesh/partition_mod.F90 b/infrastructure/source/mesh/partition_mod.F90 index f22d535e4..5e5706773 100644 --- a/infrastructure/source/mesh/partition_mod.F90 +++ b/infrastructure/source/mesh/partition_mod.F90 @@ -1,6 +1,6 @@ !----------------------------------------------------------------------------- ! Copyright (c) 2017, Met Office, on behalf of HMSO and Queen's Printer -! For further details please refer to the file LICENCE.original which you +! For further details please refer to the file LICENCE which you ! should have received as part of this distribution. !----------------------------------------------------------------------------- From 63a802d7bbb06ae9a9e7ede1e46e118bc6cbad88 Mon Sep 17 00:00:00 2001 From: thomasmelvin Date: Wed, 7 Jan 2026 10:03:53 +0000 Subject: [PATCH 3/7] Fixes for style checker --- .../source/mesh/global_mesh_mod.F90 | 2 +- infrastructure/source/mesh/partition_mod.F90 | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/infrastructure/source/mesh/global_mesh_mod.F90 b/infrastructure/source/mesh/global_mesh_mod.F90 index 3a2a811ee..1dbcb74f0 100644 --- a/infrastructure/source/mesh/global_mesh_mod.F90 +++ b/infrastructure/source/mesh/global_mesh_mod.F90 @@ -1098,7 +1098,7 @@ function get_cell_id( self, cell_number, & ! Since the direction may have changed we need to recompute y_index = rotate(x_index) if ( y_cells < 0 ) y_index = opposite(y_index) - + ! y_index and y_dist do i = 1,y_dist old_cell_id = cell_id diff --git a/infrastructure/source/mesh/partition_mod.F90 b/infrastructure/source/mesh/partition_mod.F90 index 5e5706773..a9ff9097e 100644 --- a/infrastructure/source/mesh/partition_mod.F90 +++ b/infrastructure/source/mesh/partition_mod.F90 @@ -718,7 +718,7 @@ subroutine partitioner_rectangular_panels( global_mesh, & logical :: check_orientation ! Check for orientation changes when getting cell id's integer :: n_cross_panels ! number of panels to decompose across integer, allocatable :: face_of_combined_panels(:) - ! The first face in sections of combined cubed sphere panels + ! The first face in sections of combined cubed sphere panels integer :: nprocs(2) ! number of processors in the x- & y-direction integer :: xproc ! number of processsors in x-direction integer :: yproc ! number of processsors in y-direction @@ -808,7 +808,7 @@ subroutine partitioner_rectangular_panels( global_mesh, & ! Super panels consist of faces (1, 2, 3), (6, 4, 5) ! In terms of the panel numbers used here is then ! (3, 2, 6), (5, 4, 1) - face_of_combined_panels(:) = (/ 3, 5 /) + face_of_combined_panels(:) = (/ 3, 5 /) elseif( num_panels == 6 .and. & xproc*yproc*3 == total_ranks .and. & modulo(total_ranks,3) == 0 ) then @@ -823,7 +823,7 @@ subroutine partitioner_rectangular_panels( global_mesh, & ! Super panels consist of faces (1, 2), (4,5) & (6,3) ! In terms of the panel numbers used here is then ! (3, 2), (4, 1), (5, 6) - face_of_combined_panels(:) = (/ 3, 4, 5 /) + face_of_combined_panels(:) = (/ 3, 4, 5 /) elseif( modulo(total_ranks,num_panels) == 0 ) then ! For multi-panel meshes, the panels must be square num_cells_x = nint(sqrt( real(global_mesh%get_ncells(), kind=r_def)/ & @@ -838,7 +838,7 @@ subroutine partitioner_rectangular_panels( global_mesh, & ! Calculate the South West corner cells of all the panels in the global mesh ! Note the 'panel' numbers used here do not correspond to the panel numbers - ! used in the rest of the model as this uses the vertex index to find + ! used in the rest of the model as this uses the vertex index to find ! the cell in the corner of each panel and it is not true that the first corner ! cell found in this manner will correspond to panel 1. ! In fact for the cubed sphere meshes used the relationship is: @@ -897,32 +897,32 @@ subroutine partitioner_rectangular_panels( global_mesh, & ! Set up limits for finding cells start1 = start_x end1 = start_x + num_x - 1 - inc1 = 1 + inc1 = 1 start2 = start_y end2 = start_y + num_y - 1 - inc2 = 1 + inc2 = 1 if ( cross_panels ) then ! Generally we want the start cell to be the SW corner cell ! but there is an exception when we are spanning 3 panels and looking ! at cubed sphere panels (6,4,5) when we want to start in the NW corner. - ! Cubed sphere panels (6,4,5) correspond to the indices (5, 4, 1) of the + ! Cubed sphere panels (6,4,5) correspond to the indices (5, 4, 1) of the ! sw_corner_cells array since the sw_corner_cells array indices (1,..,6) do not ! correspond to cubed sphere panels (1,..,6) and are in fact ! ordered (5, 2, 1, 4, 6, 3) start_cell = sw_corner_cells(face_of_combined_panels(face)) - if (n_cross_panels == 2 .and. start_cell == sw_corner_cells(5) ) then + if (n_cross_panels == 2 .and. start_cell == sw_corner_cells(5) ) then ! Start in the NW corner and go in (-y, x) direction - start_cell = global_mesh%get_cell_id(start_cell, 0, num_cells_y-1) + start_cell = global_mesh%get_cell_id(start_cell, 0, num_cells_y-1) num_y = num_cells_x / xproc num_x = num_cells_y / yproc start1 = start_y end1 = start1 + num_x - 1 - inc1 = 1 + inc1 = 1 start2 = -start_x + 2 end2 = start2 - num_y + 1 - inc2 = -1 + inc2 = -1 end if deallocate( face_of_combined_panels ) else @@ -957,7 +957,7 @@ subroutine partitioner_rectangular_panels( global_mesh, & ! (if it is not already there) if ( ix == start1 .or. ix == end1 .or. iy == start2 .or. iy == end2 ) then if ( .not. known_cells%item_exists(cell_id) ) then - call known_cells%insert_item( linked_list_int_type( cell_id ) ) + call known_cells%insert_item( linked_list_int_type( cell_id ) ) end if end if From 53452876bc190a368acecd1f14a97eeb243c7fb0 Mon Sep 17 00:00:00 2001 From: thomasmelvin Date: Thu, 15 Jan 2026 10:28:06 +0000 Subject: [PATCH 4/7] Update contributers --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d0f7ae14d..709e5f35f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -4,3 +4,4 @@ | ----------- | --------- | ----------- | ---- | | james-bruten-mo | James Bruten | Met Office | 2025-12-09 | | jennyhickson | Jenny Hickson | Met Office | 2025-12-10 | +| thomasmelvin | Thomas Melvin | Met Office | 2026-01-15 | From 38b574188d7b0a35d220c80bb186a48165f1d8e3 Mon Sep 17 00:00:00 2001 From: thomasmelvin Date: Mon, 19 Jan 2026 12:20:59 +0000 Subject: [PATCH 5/7] Addition of rose stem tests for new decomposiiton strategy --- .../mesh/panel_decomposition_mod_test.pf | 87 +++++++++++++++++++ mesh_tools/source/support/gencube_ps_mod.F90 | 23 ++++- .../opt/rose-app-cubedsphere-op-2panels.conf | 22 +++++ .../opt/rose-app-cubedsphere-op-3panels.conf | 22 +++++ .../common/mesh_tools/tasks_mesh_tools.cylc | 4 +- .../site/meto/groups/group_mesh_tools.cylc | 6 ++ 6 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 infrastructure/unit-test/mesh/panel_decomposition_mod_test.pf create mode 100644 rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-2panels.conf create mode 100644 rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-3panels.conf diff --git a/infrastructure/unit-test/mesh/panel_decomposition_mod_test.pf b/infrastructure/unit-test/mesh/panel_decomposition_mod_test.pf new file mode 100644 index 000000000..7f60ae364 --- /dev/null +++ b/infrastructure/unit-test/mesh/panel_decomposition_mod_test.pf @@ -0,0 +1,87 @@ +!----------------------------------------------------------------------------- +! Copyright (c) 2026, Met Office, on behalf of HMSO and Queen's Printer +! For further details please refer to the file LICENCE which you +! should have received as part of this distribution. +!----------------------------------------------------------------------------- + +!> Test the panel decomposition module +module panel_decomposition_mod_test + + use pfunit + use constants_mod, only: i_def + use panel_decomposition_mod, only: custom_decomposition_type, & + auto_decomposition_type, & + row_decomposition_type, & + column_decomposition_type, & + auto_nonuniform_decomposition_type, & + guided_nonuniform_decomposition_type + + implicit none + + private + public :: test_all + +contains + + @test + subroutine test_all + + implicit none + + type(custom_decomposition_type) :: custom_decomposition + type(auto_decomposition_type) :: auto_decomposition + type(row_decomposition_type) :: row_decomposition + type(column_decomposition_type) :: column_decomposition + type(auto_nonuniform_decomposition_type) :: auto_nonuniform_decomposition + type(guided_nonuniform_decomposition_type) :: guided_nonuniform_decomposition + + integer(i_def), parameter :: xprocs = 3 + integer(i_def), parameter :: yprocs = 4 + integer(i_def) :: nprocs(2) + + ! Test the custom decomposition type + custom_decomposition = custom_decomposition_type(xprocs, yprocs) + + nprocs = custom_decomposition%get_nprocs() + @assertEqual( xprocs, nprocs(1) ) + @assertEqual( yprocs, nprocs(2) ) + + ! Test the auto decomposition type + auto_decomposition = auto_decomposition_type() + + nprocs = auto_decomposition%get_nprocs() + @assertEqual( 1, nprocs(1) ) + @assertEqual( 1, nprocs(2) ) + + ! Test the row decomposition type + row_decomposition = row_decomposition_type() + + nprocs = row_decomposition%get_nprocs() + @assertEqual( 1, nprocs(1) ) + @assertEqual( 1, nprocs(2) ) + + ! Test the column decomposition type + column_decomposition = column_decomposition_type() + + nprocs = column_decomposition%get_nprocs() + @assertEqual( 1, nprocs(1) ) + @assertEqual( 1, nprocs(2) ) + + ! Test the auto_nonuniform decomposition type + auto_nonuniform_decomposition = auto_nonuniform_decomposition_type() + + nprocs = auto_nonuniform_decomposition%get_nprocs() + @assertEqual( 1, nprocs(1) ) + @assertEqual( 1, nprocs(2) ) + + ! Test the guided_nonuniform decomposition type + guided_nonuniform_decomposition = guided_nonuniform_decomposition_type(xprocs) + + nprocs = guided_nonuniform_decomposition%get_nprocs() + @assertEqual( 1, nprocs(1) ) + @assertEqual( 1, nprocs(2) ) + + end subroutine test_all + +end module panel_decomposition_mod_test + diff --git a/mesh_tools/source/support/gencube_ps_mod.F90 b/mesh_tools/source/support/gencube_ps_mod.F90 index b1bb088f1..3620b38ca 100644 --- a/mesh_tools/source/support/gencube_ps_mod.F90 +++ b/mesh_tools/source/support/gencube_ps_mod.F90 @@ -2050,9 +2050,28 @@ subroutine set_partition_parameters( decomposition, partitioner_ptr ) call log_event( "Using parallel cubed sphere partitioner", & LOG_LEVEL_INFO ) + else if( NPANELS == 6 .and. & + (mod(n_partitions, 3) == 0) .or. & + (mod(n_partitions, 2) == 0 ) ) then + ! Use the parallel cubed-sphere partitioner + partitioner_ptr => partitioner_cubedsphere + + select case(panel_decomposition) + case( panel_decomposition_custom ) + decomposition = custom_decomposition_type( panel_xproc, panel_yproc ) + case default + call log_event( "Decomposing across 2 or 3 panels requires "// & + "'custom' decomposition.", LOG_LEVEL_ERROR ) + end select + + call log_event( "Using parallel cubed sphere partitioner", & + LOG_LEVEL_INFO ) + else - call log_event( "Number of partitions must be 1 "// & - "or a multiple of the number of panels", & + call log_event( "Number of partitions must be 1 "// & + "or a multiple of the number of panels "// & + "or a multiple of 2 or 3 for 6 panels "// & + "and using 'custom' decomposition", & LOG_LEVEL_ERROR ) end if diff --git a/rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-2panels.conf b/rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-2panels.conf new file mode 100644 index 000000000..b9fa6b5b1 --- /dev/null +++ b/rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-2panels.conf @@ -0,0 +1,22 @@ +[env] +mesh_generator=Cubed-Sphere + +[namelist:cubedsphere_mesh] +edge_cells=6,3 + +[namelist:mesh] +coord_sys='ll' +geometry='spherical' +mesh_maps='C6:C3' +mesh_names='C6','C3' +partition_mesh=.true. +rotate_mesh=.false. + +[namelist:partitions] +n_partitions=2 +panel_decomposition='custom' +panel_xproc=1 +panel_yproc=1 +partition_range=0,1 + +[!!namelist:planar_mesh] diff --git a/rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-3panels.conf b/rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-3panels.conf new file mode 100644 index 000000000..e7ddad949 --- /dev/null +++ b/rose-stem/app/mesh_tools/opt/rose-app-cubedsphere-op-3panels.conf @@ -0,0 +1,22 @@ +[env] +mesh_generator=Cubed-Sphere + +[namelist:cubedsphere_mesh] +edge_cells=6,3 + +[namelist:mesh] +coord_sys='ll' +geometry='spherical' +mesh_maps='C6:C3' +mesh_names='C6','C3' +partition_mesh=.true. +rotate_mesh=.false. + +[namelist:partitions] +n_partitions=3 +panel_decomposition='custom' +panel_xproc=1 +panel_yproc=1 +partition_range=0,2 + +[!!namelist:planar_mesh] diff --git a/rose-stem/site/common/mesh_tools/tasks_mesh_tools.cylc b/rose-stem/site/common/mesh_tools/tasks_mesh_tools.cylc index a2a18705e..8e4e6d850 100644 --- a/rose-stem/site/common/mesh_tools/tasks_mesh_tools.cylc +++ b/rose-stem/site/common/mesh_tools/tasks_mesh_tools.cylc @@ -20,7 +20,9 @@ "opt_confs": task_ns.conf_name }) %} -{% elif task_ns.conf_name == "cubedsphere-op" %} +{% elif task_ns.conf_name == "cubedsphere-op" or + task_ns.conf_name == "cubedsphere-op-2panels" or + task_ns.conf_name == "cubedsphere-op-3panels" %} {% do task_dict.update({ "resolution": "", diff --git a/rose-stem/site/meto/groups/group_mesh_tools.cylc b/rose-stem/site/meto/groups/group_mesh_tools.cylc index d3bee961e..64e88682f 100644 --- a/rose-stem/site/meto/groups/group_mesh_tools.cylc +++ b/rose-stem/site/meto/groups/group_mesh_tools.cylc @@ -49,6 +49,8 @@ "mesh_tools_cubedsphere-c2_azspice_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-c3_azspice_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-op_azspice_gnu_fast-debug-64bit", + "mesh_tools_cubedsphere-op-2panels_azspice_gnu_fast-debug-64bit", + "mesh_tools_cubedsphere-op-3panels_azspice_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-op-nonuniform_azspice_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-rotated_azspice_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-maps_azspice_gnu_fast-debug-64bit", @@ -59,6 +61,8 @@ "mesh_tools_cubedsphere-c2_azspice_gnu_full-debug-64bit", "mesh_tools_cubedsphere-c3_azspice_gnu_full-debug-64bit", "mesh_tools_cubedsphere-op_azspice_gnu_full-debug-64bit", + "mesh_tools_cubedsphere-op-2panels_azspice_gnu_full-debug-64bit", + "mesh_tools_cubedsphere-op-3panels_azspice_gnu_full-debug-64bit", "mesh_tools_cubedsphere-op-nonuniform_azspice_gnu_full-debug-64bit", "mesh_tools_cubedsphere-rotated_azspice_gnu_full-debug-64bit", "mesh_tools_cubedsphere-maps_azspice_gnu_full-debug-64bit", @@ -127,6 +131,8 @@ "mesh_tools_cubedsphere-c2_ex1a_cce_full-debug-64bit", "mesh_tools_cubedsphere-c3_ex1a_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-op_ex1a_gnu_fast-debug-64bit", + "mesh_tools_cubedsphere-op-2panels_ex1a_gnu_fast-debug-64bit", + "mesh_tools_cubedsphere-op-3panels_ex1a_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-op-nonuniform_ex1a_gnu_fast-debug-64bit", "mesh_tools_cubedsphere-maps_ex1a_gnu_fast-debug-64bit", "mesh_tools_cubedsphere_ex1a_cce_fast-debug-64bit", From d297a80afe94bdb57d64d25dfaa7892104f0db4f Mon Sep 17 00:00:00 2001 From: thomasmelvin Date: Mon, 19 Jan 2026 13:51:31 +0000 Subject: [PATCH 6/7] add in kgos --- .../mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc | Bin 0 -> 49828 bytes .../mesh_cubedsphere-op-2panels_1-2.gnu.kgo.nc | Bin 0 -> 49828 bytes .../mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc | Bin 0 -> 42080 bytes .../mesh_cubedsphere-op-3panels_1-3.gnu.kgo.nc | Bin 0 -> 42080 bytes .../mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc | Bin 0 -> 42080 bytes .../mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc | Bin 0 -> 49828 bytes .../mesh_cubedsphere-op-2panels_1-2.gnu.kgo.nc | Bin 0 -> 49828 bytes .../mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc | Bin 0 -> 42080 bytes .../mesh_cubedsphere-op-3panels_1-3.gnu.kgo.nc | Bin 0 -> 42080 bytes .../mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc | Bin 0 -> 42080 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-2panels_1-2.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-3panels_1-3.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-2panels_1-2.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_1-3.gnu.kgo.nc create mode 100644 rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc diff --git a/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..3b5b015a10ba4ac3a1beb522c63d58a9e00da143 GIT binary patch literal 49828 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 literal 0 HcmV?d00001 diff --git a/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-2panels_1-2.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-2panels_1-2.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..2bc19f12441ae4b295f506263287e9d0e08c9c9f GIT binary patch literal 49828 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 literal 0 HcmV?d00001 diff --git a/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..93d6526e96aa88e7959b608aa98529e536c57118 GIT binary patch literal 42080 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

n#h}i)X1D~byL&pm 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 literal 0 HcmV?d00001 diff --git a/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/azspice/mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..ddefc38ce71c33e9f3407fb8e6ae34ce26de94f5 GIT binary patch literal 42080 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 S-^+FS|Evht_i=r{zWg5qwuzAd literal 0 HcmV?d00001 diff --git a/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-2panels_0-2.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..b2dae2f3f1ce92e73def26864ce7823b008c6b87 GIT binary patch literal 49828 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 literal 0 HcmV?d00001 diff --git a/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_0-3.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..1668204d3e07423cc1793de645f2d05b437e9fdd GIT binary patch literal 42080 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 GasA&50&JWB literal 0 HcmV?d00001 diff --git a/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_1-3.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_1-3.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..a8c3b6cd47ca33cef020f99c729a985529d5f2ad GIT binary patch literal 42080 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 literal 0 HcmV?d00001 diff --git a/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc b/rose-stem/site/meto/kgos/mesh_tools/ex1a/mesh_cubedsphere-op-3panels_2-3.gnu.kgo.nc new file mode 100644 index 0000000000000000000000000000000000000000..7de8f74a53a7cf8de6fbcc447212a8bd425d2b50 GIT binary patch literal 42080 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 =dw*L)yH!g z(|1kRGG>4KshQg8JCFJq({~?gXlx(wZ04g2sHx{PW}AK8=f2<=efMcUWBTshF~*9Z zwy`d(31hKF+^;cn``ku=^#;jLsGS;vAG*$%9;QFp>%(hs+?%Ofe@*r^E z#`Im+^^G~!eR>ZRg6}@tgqXhj>J(!7?#nrhIo@%u>mKx-%XN+EJD2Mk(|4TXjaf(P zG7_xI$uI?sPl9Twg0o;*uq&|ktAt@N0*1m7;5=$N9E_{!R5%ihTRX1fIQ2gYW`q6Q z$3$>l`yCC(z&x;@`?4-7U?rGOt@~O9=2PpwoM#AFC(FTeI8J>}g|or9_GG95 dc zuIo8teOMFbOdD%YEn;1oTWdzm&AYj$qOnDsXdMuPf{ z26gp3-YcHPy;y&vU_6Wkb8n8+*|Sc7ac~qI4aa~QPJ~Hd?W*Num;y!U3kmdtsn8#$ z!2p;JGhiSb2I^_<2Ekx3m*)0tsDarq2UbHZsJ*pN2Wvp>t%Y-79;}7=P!A_T16cd( zU_Ds(YI81ZfCX?moCn?q>U0LE;Uc&I&IdKLt}cQLK@F{|a<~{O;1XB{jZg`f!g9C_ zs$d0N4p+cRSOpv5N~ngj;3~M+89W|Idy1|IxUi z$@rUSkN*#i8}V;}Tj6#{|DP3Mo;$eS3U`L<`2W6$|IdqiXiNVe7NPwj(7Z{{VPWiIxBW literal 0 HcmV?d00001 From f7dfa282f93153c8b66a54c4cf8fa13199f0e88d Mon Sep 17 00:00:00 2001 From: thomasmelvin Date: Tue, 20 Jan 2026 10:18:23 +0000 Subject: [PATCH 7/7] Add some documentation for the new partitioning --- .../technical_articles/lfric_distmem_impl.rst | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/documentation/source/how_to_use_it/technical_articles/lfric_distmem_impl.rst b/documentation/source/how_to_use_it/technical_articles/lfric_distmem_impl.rst index 14e77aa21..1a4ad0da8 100644 --- a/documentation/source/how_to_use_it/technical_articles/lfric_distmem_impl.rst +++ b/documentation/source/how_to_use_it/technical_articles/lfric_distmem_impl.rst @@ -177,8 +177,12 @@ supplied to the partitioner through the use of a function passed in via a function pointer. For efficiency reasons, the algorithm for partitioning a cubed-sphere -mesh is a specific algorithm that will only work for a cubed-sphere mesh -(each panel of the cubed-sphere is split into rectangular partitions). +mesh is a specific algorithm that will only work for a cubed-sphere mesh. +By default each panel of the cubed-sphere is split into rectangular partitions, +alternatively if the 'custom' decomposition type is used then sets of 2 or 3 +cubed-sphere panels can be grouped together before these sets are decomposed into +a number of rectangular panels. These restrictions mean that the total number of +partitions for cubed-sphere meshes needs to be a multiple of 2 or 3. This specific partitioner could be replaced with a more general partitioner for use on fully unstructured meshes.