comms_no_sync_recv_char Subroutine

private subroutine comms_no_sync_recv_char(array, size, from, error, comm)

Receive character array from specified node

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

Called by

proc~~comms_no_sync_recv_char~~CalledByGraph proc~comms_no_sync_recv_char comms_no_sync_recv_char interface~comms_no_sync_recv comms_no_sync_recv interface~comms_no_sync_recv->proc~comms_no_sync_recv_char proc~prterr prterr proc~prterr->interface~comms_no_sync_recv proc~input_reader_special input_reader_special proc~input_reader_special->proc~prterr proc~overlaps overlaps proc~overlaps->proc~prterr proc~print_error_halt print_error_halt proc~print_error_halt->proc~prterr proc~read_chkpt read_chkpt proc~read_chkpt->proc~prterr proc~read_eigvals read_eigvals proc~read_eigvals->proc~prterr proc~set_kpoint_distribution set_kpoint_distribution proc~set_kpoint_distribution->proc~prterr proc~w90_create_kmesh w90_create_kmesh proc~w90_create_kmesh->proc~prterr proc~w90_disentangle~2 w90_disentangle proc~w90_disentangle~2->proc~prterr proc~w90_distribute_kpts w90_distribute_kpts proc~w90_distribute_kpts->proc~prterr proc~w90_get_excl_bands~2 w90_get_excl_bands proc~w90_get_excl_bands~2->proc~prterr proc~w90_get_proj~2 w90_get_proj proc~w90_get_proj~2->proc~prterr proc~w90_input_reader~2 w90_input_reader proc~w90_input_reader~2->proc~prterr proc~w90_input_setopt w90_input_setopt proc~w90_input_setopt->proc~prterr proc~w90_plot w90_plot proc~w90_plot->proc~prterr proc~w90_print_info~2 w90_print_info proc~w90_print_info~2->proc~prterr proc~w90_project_overlap~2 w90_project_overlap proc~w90_project_overlap~2->proc~prterr proc~w90_transport w90_transport proc~w90_transport->proc~prterr proc~w90_wannierise~2 w90_wannierise proc~w90_wannierise~2->proc~prterr proc~write_chkpt write_chkpt proc~write_chkpt->proc~prterr proc~write_kmesh write_kmesh proc~write_kmesh->proc~prterr proc~write_kmesh->proc~w90_create_kmesh program~wannier wannier program~wannier->proc~prterr program~wannier->proc~input_reader_special program~wannier->proc~overlaps program~wannier->proc~read_chkpt program~wannier->proc~read_eigvals program~wannier->proc~set_kpoint_distribution program~wannier->proc~w90_disentangle~2 program~wannier->proc~w90_distribute_kpts program~wannier->proc~w90_input_reader~2 program~wannier->proc~w90_plot program~wannier->proc~w90_print_info~2 program~wannier->proc~w90_project_overlap~2 program~wannier->proc~w90_transport program~wannier->proc~w90_wannierise~2 program~wannier->proc~write_chkpt program~wannier->proc~write_kmesh proc~w90_get_nn~2 w90_get_nn program~wannier->proc~w90_get_nn~2 proc~w90_disentangle w90_disentangle proc~w90_disentangle->proc~w90_disentangle~2 proc~w90_get_excl_bands w90_get_excl_bands proc~w90_get_excl_bands->proc~w90_get_excl_bands~2 proc~w90_get_gkpb~2 w90_get_gkpb proc~w90_get_gkpb~2->proc~w90_create_kmesh proc~w90_get_nnkp~2 w90_get_nnkp proc~w90_get_nnkp~2->proc~w90_create_kmesh proc~w90_get_nn~2->proc~w90_create_kmesh proc~w90_get_proj w90_get_proj proc~w90_get_proj->proc~w90_get_proj~2 proc~w90_input_reader w90_input_reader proc~w90_input_reader->proc~w90_input_reader~2 proc~w90_input_setopt_f w90_input_setopt_f proc~w90_input_setopt_f->proc~w90_input_setopt proc~w90_print_info w90_print_info proc~w90_print_info->proc~w90_print_info~2 proc~w90_project_overlap w90_project_overlap proc~w90_project_overlap->proc~w90_project_overlap~2 proc~w90_wannierise w90_wannierise proc~w90_wannierise->proc~w90_wannierise~2 program~postw90 postw90 program~postw90->proc~print_error_halt proc~w90_get_gkpb w90_get_gkpb proc~w90_get_gkpb->proc~w90_get_gkpb~2 proc~w90_get_nn w90_get_nn proc~w90_get_nn->proc~w90_get_nn~2 proc~w90_get_nnkp w90_get_nnkp proc~w90_get_nnkp->proc~w90_get_nnkp~2

Source Code

  subroutine comms_no_sync_recv_char(array, size, from, error, comm)
    !! Receive character array from specified node
    implicit none

    character(len=*), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
    type(w90_comm_type), intent(in) :: comm
    type(w90_error_type), allocatable, intent(out) :: error

#ifdef W90_MPI
    type(w90stat_type) :: status
    integer :: ierr

    call mpi_recv(array, size, MPI_CHARACTER, from, mpi_send_tag, comm%comm, status%stat, ierr)

    if (ierr .ne. MPI_SUCCESS) then
      call set_base_error(error, 'Error in comms_recv_char', code_mpi)
      return
    end if
#endif

  end subroutine comms_no_sync_recv_char