Back to OASIS4 home

Type Endef_action : defined in oasis4/lib/common_oa4/src/psmile_common.F90 : Enddef_action is a structure internally used by PRISM_Enddef in order to store the information on open requests to be fulfilled in psmile_get_intersect

Type Enddef_action

         Integer, Pointer :: lrequest (:)                               !   lrequest  = MPI requests for open requests to be fulfilled
                                                                                       !              lrequest (1) = reqtag : Request to send grid data
                                                                                       !              lrequest (2) = lastag : Receive data on grid intersection
                                                                                       !              lrequest (3) = grdtag : Receive grid data
                                                                                       !              lrequest (4) = exttag : Extra request to search data
                                                                                       !              lrequest (5) = seltag : Request to receive info on seleted points of nearest neighbour search
                                                                                       !              lrequest (ndreq+1:nreq) = loctag+: Receive data on locations found
         Integer, Pointer :: recv_req (:)                              ! MPI request for next receive of grid data
         Integer, Pointer :: loc_messages (:, :)
         Integer               :: msgint (nd_msgint)                !  Receive buffer for messages on intersections
         Integer               :: msgreq (nd_msgint)               ! Receive buffer for requests for grid coordinates
         Integer               :: msg_extra (nd_msgextra)       ! Receive buffer for extra requests
         Integer               :: msg_sel (nd_msgsel)              ! Receive buffer for answers on selected (nearest neighbour points)
         Integer               :: nreq                                         ! Number of requests
         Integer               :: n                                              ! Number of intersections received
         Integer               :: ninter                                      !  Number of intersections to be received
         Integer               :: lastag                                      ! Tag for receive of interactions
#define CONS_REMAP_DEADLOCK_WORKAROUND
#ifdef CONS_REMAP_DEADLOCK_WORKAROUND
         Integer, Pointer :: intersect_ranks(:)                   ! contains the ranks of all processes which will send an intersection message to the local one
#endif
         Integer               :: nmyint                                   ! total number of intersections found which are located also on the actual process.
         Integer               :: n_answer                                ! Number of answers containing requests for grid data received. If no grid data was required, the receiving process doesn't send an answer. This are "nnull" messages.
         Integer               :: n_answer2recv                       ! Number of answers to be received
         Integer, Pointer :: n_answer2recv_per_grid(:)
         Integer               :: n_fin                                      ! Number of finalize messages received for global search
         Integer               :: n_fin2recv                              ! Number of finalize messages to be received
         Integer               :: nloc_recv                               ! Number of processes which have sent the locations for all grid functions (fields).
         Integer               :: n_selected                              ! Number of outstanding receives for messages on selected nearest neighbour points
         Logical              :: grid2receive                           ! Have grid coordinations to be received

End Type Enddef_action