41 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
42#include "implicit_f.inc"
59 INTEGER ELOFF, I, PMAIN, J, K, KK, N, NN, N1, N2, N3, NND,
60 . ITAG, NNTR, IERR, STAT(MPI_STATUS_SIZE), JJ, IAD,
62 INTEGER,
DIMENSION(:),
ALLOCATABLE :: OFFTR, IBUF, ITAGT
72 IF (ispmd==pmain-1)
THEN
73 ALLOCATE(offtr(
fvdata(i)%NNTR))
80 DO n=
fvdata(i)%IFVTADR(kk),
81 .
fvdata(i)%IFVTADR(kk+1)-1
84 n1=
fvdata(i)%IFVTRI_ANIM(1,nn)
85 n2=
fvdata(i)%IFVTRI_ANIM(2,nn)
86 n3=
fvdata(i)%IFVTRI_ANIM(3,nn)
89 IF (n3/=n2.AND.n3/=n1) nnd=nnd+1
91 nn=fvel2fa(eloff+nn)-eloff
92 IF (nnd==3) offtr(nn)=1
102 CALL mpi_recv(nntr, 1, mpi_integer, it_spmd(pmain),
103 . itag, spmd_comm_world, stat, ierr)
106 ALLOCATE(ibuf(len), offtr(nntr))
108 CALL mpi_recv(ibuf, len, mpi_integer, it_spmd(pmain),
109 . itag, spmd_comm_world, stat, ierr)
118 nn=fvel2fa(eloff+nn)-eloff
125 DEALLOCATE(ibuf, offtr)
128 IF (ispmd==pmain-1)
THEN
131 . it_spmd(1), itag, spmd_comm_world,
135 ALLOCATE(ibuf(len), itagt(
fvdata(i)%NNTR))
146 DO n=
fvdata(i)%IFVTADR(kk),
147 .
fvdata(i)%IFVTADR(kk+1)-1
149 IF (nn>0.AND.itagt(nn)==0)
THEN
150 n1=
fvdata(i)%IFVTRI_ANIM(1,nn)
151 n2=
fvdata(i)%IFVTRI_ANIM(2,nn)
152 n3=
fvdata(i)%IFVTRI_ANIM(3,nn)
154 IF (n2/=n1) nnd=nnd+1
155 IF (n3/=n2.AND.n3/=n1) nnd=nnd+1
158 IF (nnd==3) ibuf(iad+2)=1
166 CALL mpi_send(ibuf, len, mpi_integer, it_spmd(1),
167 . itag, spmd_comm_world, ierr)
169 DEALLOCATE(ibuf, itagt)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)