18 & ( n, neibpetot, neibpe, stack_import, nod_import, &
19 & stack_export, nod_export, &
20 & ws, wr, solver_comm, my_rank, ntab)
24 integer(kind=kint ),
intent(in) :: N, NEIBPETOT
25 integer(kind=kint ),
pointer :: NEIBPE (:)
26 integer(kind=kint ),
pointer :: STACK_IMPORT(:)
27 integer(kind=kint ),
pointer :: STACK_EXPORT(:)
28 integer(kind=kint ),
pointer :: NOD_IMPORT(:), NOD_EXPORT(:)
30 integer(kind=kint ),
dimension(N*NTAB) :: WS, WR
31 integer(kind=kint ), :: SOLVER_COMM, my_rank
33 integer(kind=kint ),
dimension(:,:),
save,
allocatable :: sta1
34 integer(kind=kint ),
dimension(:,:),
save,
allocatable :: sta2
35 integer(kind=kint ),
dimension(: ),
save,
allocatable :: req1
36 integer(kind=kint ),
dimension(: ),
save,
allocatable :: req2
38 integer(kind=kint ),
save :: NFLAG
44 allocate (sta1(mpi_status_size,neibpetot))
45 allocate (sta2(mpi_status_size,neibpetot))
46 allocate (req1(neibpetot))
47 allocate (req2(neibpetot))
54 istart= stack_import(neib-1)
55 inum = stack_import(neib ) - istart
56 do k= istart+1, istart+inum
59 ws(is+jj)= nod_import(is+jj)
63 call mpi_isend (ws(is+1), ntab*inum, mpi_integer, &
64 & neibpe(neib), 0, solver_comm, &
71 istart= stack_export(neib-1)
72 inum = stack_export(neib ) - istart
74 call mpi_irecv (wr(is+1), ntab*inum, mpi_integer, &
75 & neibpe(neib), 0, solver_comm, &
79 call mpi_waitall (neibpetot, req2, sta2, ierr)
82 istart= stack_export(neib-1)
83 inum = stack_export(neib ) - istart
84 do k= istart+1, istart+inum
87 nod_export(is+jj)= wr(is+jj)
92 call mpi_waitall (neibpetot, req1, sta1, ierr)