41 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
42#include "implicit_f.inc"
54 INTEGER NELCUT, NBF, NESCT, , NESRG, NESMD1, FVPBUF(*)
59 INTEGER FVIAD, I, PMAIN, J, K, KK, N, NN, ITAG, MSGOFF,MSGOFF2,
60 . npolh_anim, ierr, stat(mpi_status_size), iad, iadp
62 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGT, IBUF
68 fviad=nelcut+nbf+nesct+nerwl+nesrg+nesmd1
72 IF (ispmd==pmain-1)
THEN
73 ALLOCATE(itagt(
fvdata(i)%NNTR))
78 DO j=1,
fvdata(i)%NPOLH_ANIM
79 DO k=
fvdata(i)%IFVPADR_ANIM(j),
80 .
fvdata(i)%IFVPADR_ANIM(j+1)-1
81 kk=
fvdata(i)%IFVPOLH_ANIM(k)
82 DO n=
fvdata(i)%IFVTADR_ANIM(kk),
83 .
fvdata(i)%IFVTADR_ANIM(kk+1)-1
84 nn=
fvdata(i)%IFVPOLY_ANIM(n)
85 IF (itagt(nn)==0)
THEN
93 iadp=iadp+
fvdata(i)%NPOLH_ANIM
98 CALL mpi_recv(npolh_anim, 1, mpi_integer,
99 . it_spmd(pmain), itag, spmd_comm_world,
102 ALLOCATE(ibuf(npolh_anim))
104 CALL mpi_recv(ibuf, npolh_anim, mpi_integer,
105 . it_spmd(pmain), itag, spmd_comm_world,
109 fvpbuf(iadp+j)=fviad+ibuf(j)
111 fviad=fviad+ibuf(npolh_anim)
116 IF (ispmd==pmain-1)
THEN
119 . it_spmd(1), itag, spmd_comm_world,
122 ALLOCATE(ibuf(
fvdata(i)%NPOLH_ANIM),
130 DO j=1,
fvdata(i)%NPOLH_ANIM
131 DO k=
fvdata(i)%IFVPADR_ANIM(j),
132 .
fvdata(i)%IFVPADR_ANIM(j+1)-1
133 kk=
fvdata(i)%IFVPOLH_ANIM(k)
134 DO n=
fvdata(i)%IFVTADR_ANIM(kk),
135 .
fvdata(i)%IFVTADR_ANIM(kk+1)-1
136 nn=
fvdata(i)%IFVPOLY_ANIM(n)
137 IF (itagt(nn)==0)
THEN
147 . it_spmd(1), itag, spmd_comm_world,
150 DEALLOCATE(ibuf, itagt)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)
subroutine spmd_fvb_apar(nelcut, nbf, nesct, nerwl, nesrg, nesmd1, fvpbuf)