request_remoteHalos Subroutine

private subroutine request_remoteHalos(levelDesc, proc, tree, iLevel, stencil, pathFirst, pathLast)

Inverse Communication: Communicate, which elements each process needs from me.

In this routine, we send the treeIDs of the halo elements to the processes, where they are located. Later on, we fill these halos locally with information from these processes (sourceProcs). In this routine however, we now SEND information to these sourceProcs, so do not get confused here.

Arguments

TypeIntentOptionalAttributesName
type(tem_levelDesc_type), intent(inout) :: levelDesc(tree%global%minlevel:)

the level descriptor to be filled

type(tem_comm_env_type), intent(in) :: proc

Process description to use.

type(treelmesh_type), intent(in) :: tree

the global tree

integer, intent(in) :: iLevel

current level

type(tem_stencilHeader_type), intent(in) :: stencil

stencil definition

type(tem_path_type), intent(in) :: pathFirst(:)

first and last treeID path in every process

type(tem_path_type), intent(in) :: pathLast(:)

first and last treeID path in every process


Calls

proc~~request_remotehalos~~CallsGraph proc~request_remotehalos request_remoteHalos proc~create_allparentneighbors create_allParentNeighbors proc~request_remotehalos->proc~create_allparentneighbors proc~identify_stencilneigh identify_stencilNeigh proc~request_remotehalos->proc~identify_stencilneigh proc~identify_halo identify_halo proc~request_remotehalos->proc~identify_halo mpi_irecv mpi_irecv proc~request_remotehalos->mpi_irecv mpi_waitall mpi_waitall proc~request_remotehalos->mpi_waitall interface~positionofval~4 positionofval proc~request_remotehalos->interface~positionofval~4 interface~destroy~15 destroy proc~request_remotehalos->interface~destroy~15 proc~tem_abort tem_abort proc~request_remotehalos->proc~tem_abort interface~init~15 init proc~request_remotehalos->interface~init~15 mpi_isend mpi_isend proc~request_remotehalos->mpi_isend interface~append~4 append proc~request_remotehalos->interface~append~4 proc~tem_horizontalspacer tem_horizontalSpacer proc~request_remotehalos->proc~tem_horizontalspacer proc~create_allparentneighbors->proc~identify_stencilneigh proc~create_allparentneighbors->interface~append~4 interface~tem_parentof tem_ParentOf proc~create_allparentneighbors->interface~tem_parentof proc~identify_elements identify_elements proc~create_allparentneighbors->proc~identify_elements proc~identify_stencilneigh->proc~identify_elements proc~identify_halo->interface~positionofval~4 proc~identify_local_element identify_local_element proc~identify_halo->proc~identify_local_element proc~tem_levelof tem_LevelOf proc~identify_halo->proc~tem_levelof proc~posofval_label posofval_label interface~positionofval~4->proc~posofval_label proc~destroy_ga2d_real destroy_ga2d_real interface~destroy~15->proc~destroy_ga2d_real mpi_abort mpi_abort proc~tem_abort->mpi_abort proc~init_ga2d_real init_ga2d_real interface~init~15->proc~init_ga2d_real proc~append_ga_dynlong append_ga_dynlong interface~append~4->proc~append_ga_dynlong proc~append_ga_dynlong_vec append_ga_dynlong_vec interface~append~4->proc~append_ga_dynlong_vec

Called by

proc~~request_remotehalos~~CalledByGraph proc~request_remotehalos request_remoteHalos proc~communicate_elements communicate_elements proc~communicate_elements->proc~request_remotehalos proc~tem_find_allelements tem_find_allElements proc~tem_find_allelements->proc~communicate_elements proc~tem_create_leveldesc tem_create_levelDesc proc~tem_create_leveldesc->proc~tem_find_allelements proc~tem_dimbydim_construction tem_dimByDim_construction proc~tem_dimbydim_construction->proc~tem_create_leveldesc

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: iProc
integer, private :: iErr
integer, private :: iElem
integer, private :: elemPos
integer, private :: procPos
integer, private :: haloLevel
integer, private, allocatable:: rq_handle(:)
integer, private, allocatable:: status(:,:)
integer, private :: nCommunications
integer, private :: nesting
type(grw_longarray_type), private, allocatable:: treeIDs_fromTarget(:)
type(grw_intarray_type), private, allocatable:: nestings_fromTarget(:)
type(grw_longarray_type), private, allocatable:: treeIDs_toSource(:)
type(grw_intarray_type), private, allocatable:: nestings_toSource(:)
logical, private :: updated
integer, private, parameter:: message_flag_long =24
integer, private, parameter:: message_flag_int =25