17 & ( n, neibpetot, neibpe, stack_import, nod_import, &
18 & stack_export, nod_export, &
19 & ws, wr, x, solver_comm,my_rank)
22 implicit real*8 (a-h,o-z)
26 integer(kind=kint ) ,
intent(in) :: N
27 integer(kind=kint ) ,
intent(in) :: NEIBPETOT
28 integer(kind=kint ),
pointer :: NEIBPE (:)
29 integer(kind=kint ),
pointer :: STACK_IMPORT(:)
30 integer(kind=kint ),
pointer :: NOD_IMPORT (:)
31 integer(kind=kint ),
pointer :: STACK_EXPORT(:)
32 integer(kind=kint ),
pointer :: NOD_EXPORT (:)
33 real (kind=
kreal),
dimension(: ),
intent(inout):: ws
34 real (kind=
kreal),
dimension(: ),
intent(inout):: wr
35 real (kind=
kreal),
dimension(: ),
intent(inout):: x
36 integer(kind=kint ) ,
intent(in) ::SOLVER_COMM
37 integer(kind=kint ) ,
intent(in) :: my_rank
40 integer(kind=kint ),
dimension(:,:),
allocatable :: sta1
41 integer(kind=kint ),
dimension(:,:),
allocatable :: sta2
42 integer(kind=kint ),
dimension(: ),
allocatable :: req1
43 integer(kind=kint ),
dimension(: ),
allocatable :: req2
45 integer(kind=kint ),
save :: NFLAG
49 integer(kind=kint ) :: neib,istart,inum,k,ii,ierr,nreq1,nreq2
52 allocate (sta1(mpi_status_size,neibpetot))
53 allocate (sta2(mpi_status_size,neibpetot))
54 allocate (req1(neibpetot))
55 allocate (req2(neibpetot))
61 istart= stack_export(neib-1)
62 inum = stack_export(neib ) - istart
65 do k= istart+1, istart+inum
73 call mpi_isend (ws(4*istart+1), 4*inum,mpi_double_precision, &
74 & neibpe(neib), 0, solver_comm, req1(nreq1), ierr)
81 istart= stack_import(neib-1)
82 inum = stack_import(neib ) - istart
85 call mpi_irecv (wr(4*istart+1), 4*inum, mpi_double_precision, &
86 & neibpe(neib), 0, solver_comm, req2(nreq2), ierr)
89 call mpi_waitall (nreq2, req2, sta2, ierr)
92 istart= stack_import(neib-1)
93 inum = stack_import(neib ) - istart
94 do k= istart+1, istart+inum
103 call mpi_waitall (nreq1, req1, sta1, ierr)
104 deallocate (sta1, sta2, req1, req2)
subroutine hecmw_solve_send_recv_44(N, NEIBPETOT, NEIBPE, STACK_IMPORT, NOD_IMPORT, STACK_EXPORT, NOD_EXPORT, WS, WR, X, SOLVER_COMM, my_rank)
integer(kind=4), parameter kreal