sort_sendbuf Subroutine

private subroutine sort_sendbuf(gc, dsize)

Sort send buffers according to the idbuf array

Arguments

Type IntentOptional Attributes Name
type(mg_buf_t), intent(inout) :: gc
integer, intent(in) :: dsize

Size of send buffer elements


Calls

proc~~sort_sendbuf~~CallsGraph proc~sort_sendbuf sort_sendbuf interface~mrgrnk mrgrnk proc~sort_sendbuf->interface~mrgrnk proc~i_mrgrnk I_mrgrnk interface~mrgrnk->proc~i_mrgrnk

Called by

proc~~sort_sendbuf~~CalledByGraph proc~sort_sendbuf sort_sendbuf proc~sort_and_transfer_buffers sort_and_transfer_buffers proc~sort_and_transfer_buffers->proc~sort_sendbuf proc~mg_fill_ghost_cells_lvl mg_fill_ghost_cells_lvl proc~mg_fill_ghost_cells_lvl->proc~sort_and_transfer_buffers proc~mg_prolong mg_prolong proc~mg_prolong->proc~sort_and_transfer_buffers proc~mg_restrict_lvl mg_restrict_lvl proc~mg_restrict_lvl->proc~sort_and_transfer_buffers proc~correct_children correct_children proc~correct_children->proc~mg_prolong proc~mg_fas_fmg mg_fas_fmg proc~mg_fas_fmg->proc~mg_fill_ghost_cells_lvl proc~mg_fas_fmg->proc~correct_children proc~mg_fas_vcycle mg_fas_vcycle proc~mg_fas_fmg->proc~mg_fas_vcycle proc~update_coarse update_coarse proc~mg_fas_fmg->proc~update_coarse proc~mg_fas_vcycle->proc~mg_fill_ghost_cells_lvl proc~mg_fas_vcycle->proc~correct_children proc~smooth_boxes smooth_boxes proc~mg_fas_vcycle->proc~smooth_boxes proc~mg_fas_vcycle->proc~update_coarse proc~mg_fill_ghost_cells mg_fill_ghost_cells proc~mg_fill_ghost_cells->proc~mg_fill_ghost_cells_lvl proc~mg_restrict mg_restrict proc~mg_restrict->proc~mg_restrict_lvl proc~smooth_boxes->proc~mg_fill_ghost_cells_lvl proc~update_coarse->proc~mg_fill_ghost_cells_lvl proc~update_coarse->proc~mg_restrict_lvl proc~diffusion_solve diffusion_solve proc~diffusion_solve->proc~mg_fas_fmg proc~diffusion_solve->proc~mg_fas_vcycle proc~diffusion_solve_acoeff diffusion_solve_acoeff proc~diffusion_solve_acoeff->proc~mg_fas_fmg proc~diffusion_solve_acoeff->proc~mg_fas_vcycle proc~diffusion_solve_vcoeff diffusion_solve_vcoeff proc~diffusion_solve_vcoeff->proc~mg_fas_fmg proc~diffusion_solve_vcoeff->proc~mg_fas_vcycle

Source Code

  subroutine sort_sendbuf(gc, dsize)

    type(mg_buf_t), intent(inout) :: gc
    integer, intent(in)           :: dsize
    !< Size of send buffer elements
    integer                       :: ix_sort(gc%i_ix)
    real(dp)                      :: buf_cpy(gc%i_send)
    integer                       :: i, j, n

    call mrgrnk(gc%ix(1:gc%i_ix), ix_sort)

    buf_cpy = gc%send(1:gc%i_send)

    do n = 1, gc%i_ix
       i = (n-1) * dsize
       j = (ix_sort(n)-1) * dsize
       gc%send(i+1:i+dsize) = buf_cpy(j+1:j+dsize)
    end do
    gc%ix(1:gc%i_ix) = gc%ix(ix_sort)

  end subroutine sort_sendbuf