42 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
43#include "implicit_f.inc"
55 INTEGER NBID1, NBID2, NBID3, FVEL2FA(*), FVINUM(*), (2,*)
60 INTEGER ELOFF, I, PMAIN, II, J, K, KK, N, NN, INOD(4), NND,
61 . itag, msgoff, len, jj, iad, iade, iadf,
62 . stat(mpi_status_size), ierr, nntr
63 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGT, IBUF
72 IF (ispmd==pmain-1)
THEN
73 ALLOCATE(itagt(
fvdata(i)%NNTR))
79 DO j=1,
fvdata(i)%NPOLH_ANIM
80 DO k=
fvdata(i)%IFVPADR_ANIM(j),
81 .
fvdata(i)%IFVPADR_ANIM(j+1)-1
82 kk=
fvdata(i)%IFVPOLH_ANIM(k)
83 DO n=
fvdata(i)%IFVTADR_ANIM(kk),
84 .
fvdata(i)%IFVTADR_ANIM(kk+1)-1
85 nn=
fvdata(i)%IFVPOLY_ANIM(n)
86 IF (itagt(nn)==1) cycle
87 inod(1)=fvoff(1,i)+
fvdata(i)%IFVTRI_ANIM(1,nn)-1
88 inod(2)=fvoff(1,i)+
fvdata(i)%IFVTRI_ANIM(2,nn)-1
89 inod(3)=fvoff(1,i)+
fvdata(i)%IFVTRI_ANIM(3,nn)-1
94 IF (inod(2)/=inod(1)) nnd=nnd+1
95 IF (inod(3)/=inod(1).AND.
96 . inod(3)/=inod(2)) nnd=nnd+1
106 fvel2fa(eloff+nn)=eloff+ii
107 fvinum(eloff+ii)=eloff+nn
111 eloff=eloff+
fvdata(i)%NNTR
115 CALL mpi_recv(nntr, 1, mpi_integer, it_spmd(pmain),
116 . itag, spmd_comm_world, stat, ierr)
121 CALL mpi_recv(ibuf, len, mpi_integer, it_spmd(pmain),
122 . itag, spmd_comm_world, stat, ierr)
126 inod(1)=fvoff(1,i)+ibuf(jj+1)
127 inod(2)=fvoff(1,i)+ibuf(jj+2)
128 inod(3)=fvoff(1,i)+ibuf(jj+3)
129 inod(4)=fvoff(1,i)+ibuf(jj+4)
133 IF (inod(2)/=inod(1)) nnd=nnd+1
134 IF (inod(3)/=inod(1).AND.
135 . inod(3)/=inod(2)) nnd=nnd+1
146 fvel2fa(eloff+j)=eloff+ibuf(4*nntr+j)
147 fvinum(eloff+j)=eloff+ibuf(5*nntr+j)
153 IF (ispmd==pmain-1)
THEN
156 . it_spmd(1), itag, spmd_comm_world,
160 ALLOCATE(ibuf(len), itagt(
fvdata(i)%NNTR))
170 DO j=1,
fvdata(i)%NPOLH_ANIM
171 DO k=
fvdata(i)%IFVPADR_ANIM(j),
172 .
fvdata(i)%IFVPADR_ANIM(j+1)-1
173 kk=
fvdata(i)%IFVPOLH_ANIM(k)
174 DO n=
fvdata(i)%IFVTADR_ANIM(kk),
175 .
fvdata(i)%IFVTADR_ANIM(kk+1)-1
176 nn=
fvdata(i)%IFVPOLY_ANIM(n)
177 IF (itagt(nn)==1) cycle
178 inod(1)=
fvdata(i)%IFVTRI_ANIM(1,nn)-1
179 inod(2)=
fvdata(i)%IFVTRI_ANIM(2,nn)-1
180 inod(3)=
fvdata(i)%IFVTRI_ANIM(3,nn)-1
196 CALL mpi_send(ibuf, len, mpi_integer, it_spmd(1),
197 . itag, spmd_comm_world, ierr)
199 DEALLOCATE(ibuf, itagt)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)