15 & ( n, neibpetot,neibpe,stack_import, nod_import, &
16 & stack_export, nod_export, &
17 & ws, wr, x, solver_comm,my_rank, nb, m)
20 implicit real*8 (a-h,o-z)
22 integer(kind=kint) ,
intent(in) :: N, m
23 integer(kind=kint) ,
intent(in) :: NEIBPETOT
24 integer(kind=kint),
pointer :: NEIBPE (:)
25 integer(kind=kint),
pointer :: STACK_IMPORT(:)
26 integer(kind=kint),
pointer :: NOD_IMPORT (:)
27 integer(kind=kint),
pointer :: STACK_EXPORT(:)
28 integer(kind=kint),
pointer :: NOD_EXPORT (:)
29 integer(kind=kint),
dimension(NB*m),
intent(inout):: WS
30 integer(kind=kint),
dimension(NB*m),
intent(inout):: WR
31 integer(kind=kint),
dimension(NB*N),
intent(inout):: X
32 integer(kind=kint) ,
intent(in) ::SOLVER_COMM
33 integer(kind=kint) ,
intent(in) :: my_rank
35 integer(kind=kint ),
dimension(:,:),
save,
allocatable :: sta1
36 integer(kind=kint ),
dimension(:,:),
save,
allocatable :: sta2
37 integer(kind=kint ),
dimension(: ),
save,
allocatable :: req1
38 integer(kind=kint ),
dimension(: ),
save,
allocatable :: req2
39 integer(kind=kint ),
save :: NFLAG
45 allocate (sta1(mpi_status_size,neibpetot))
46 allocate (sta2(mpi_status_size,neibpetot))
47 allocate (req1(neibpetot))
48 allocate (req2(neibpetot))
55 istart= stack_export(neib-1)
56 inum = stack_export(neib ) - istart
58 do k= istart+1, istart+inum
59 ii= nb*nod_export(k) - nb
65 call mpi_isend (ws(nb*istart+1), nb*inum, mpi_integer, &
66 & neibpe(neib), 0, solver_comm, req1(neib), ierr)
72 istart= stack_import(neib-1)
73 inum = stack_import(neib ) - istart
74 call mpi_irecv (wr(nb*istart+1), nb*inum, mpi_integer, &
75 & neibpe(neib), 0, solver_comm, req2(neib), ierr)
78 call mpi_waitall (neibpetot, req2, sta2, ierr)
81 istart= stack_import(neib-1)
82 inum = stack_import(neib ) - istart
83 do k= istart+1, istart+inum
84 ii= nb*nod_import(k) - nb
92 call mpi_waitall (neibpetot, req1, sta1, ierr)