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
Type Intent Optional Attributes Name
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
mpi_waitall
mpi_waitall
proc~request_remotehalos->mpi_waitall
interface~positionofval~4
positionofval
proc~request_remotehalos->interface~positionofval~4
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
interface~append~4
append
proc~request_remotehalos->interface~append~4
mpi_irecv
mpi_irecv
proc~request_remotehalos->mpi_irecv
proc~tem_horizontalspacer
tem_horizontalSpacer
proc~request_remotehalos->proc~tem_horizontalspacer
interface~destroy~15
destroy
proc~request_remotehalos->interface~destroy~15
interface~init~15
init
proc~request_remotehalos->interface~init~15
mpi_isend
mpi_isend
proc~request_remotehalos->mpi_isend
proc~tem_abort
tem_abort
proc~request_remotehalos->proc~tem_abort
proc~posofval_label
posofval_label
interface~positionofval~4->proc~posofval_label
proc~create_allparentneighbors->proc~identify_stencilneigh
proc~create_allparentneighbors->interface~append~4
proc~identify_elements
identify_elements
proc~create_allparentneighbors->proc~identify_elements
interface~tem_parentof
tem_ParentOf
proc~create_allparentneighbors->interface~tem_parentof
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~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
proc~destroy_ga2d_real
destroy_ga2d_real
interface~destroy~15->proc~destroy_ga2d_real
proc~init_ga2d_real
init_ga2d_real
interface~init~15->proc~init_ga2d_real
mpi_abort
mpi_abort
proc~tem_abort->mpi_abort
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
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
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Variables
Type Visibility Attributes Name Initial
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