type rdm_spawn_t
! The number of rows in the RDM.
integer :: nrows = 0
! This object holds the spawning array for the RDM elements before
! they are communicated, as well as relevant metadata which is stored
! with the RDM list (see rdm_list_t). Note that the nelements component
! won't be used or relevant, since the list won't be contiguous.
type(rdm_list_t) :: rdm_send
! free_slots(i) holds the next available spawning slot in
! rdm_send%elements for processor i.
integer, allocatable :: free_slots(:)
! init_free_slots(i) holds the index in rdm_send%elements where the
! very first RDM element to be sent to process i will be added.
integer, allocatable :: init_free_slots(:)
end type rdm_spawn_t