35 * NOD_PXFEM, IFUNC,EMPSIZPL)
43 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
44#include "implicit_f.inc"
57 INTEGER NODGLOB(*),NOD_PXFEM(*)
58 INTEGER IPLY,IFUNC,EMPSIZPL
64 INTEGER ,MSGOFF2,STAT(MPI_STATUS_SIZE,NSPMD-1), IERR
65 INTEGER I,N,,EMPL,P,ITAG,EMP
70 REAL ,
DIMENSION(:,:),
ALLOCATABLE :: WRTBUF
72 * ,
DIMENSION(:,:),
ALLOCATABLE :: fsendbuf,frecbuf
73 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISENDBUF,IRECBUF
81 plysiz =
plynod(iply)%PLYNUMNODS
82 ALLOCATE(wrtbuf(3,
plysizg(iply)))
88 empl =
plynod(iply)%PLYNODID(nd)-empsizpl
91 wrtbuf(1,empl)=
ply(iply)%V(1,n)
92 wrtbuf(2,empl)=
ply(iply)%V(2,n)
93 wrtbuf(3,empl)=
ply(iply)%V(3,n)
96 wrtbuf(1,empl)=
ply(iply)%U(1,n)
97 wrtbuf(2,empl)=
ply(iply)%U(2,n)
98 wrtbuf(3,empl)=
ply(iply)%U(3,n)
100 ELSEIF (ifunc==3)
THEN
101 wrtbuf(1,empl)=
ply(iply)%A(1,n)
102 wrtbuf(2,empl)=
ply(iply)%A(2,n)
103 wrtbuf(3,empl)=
ply(iply)%A(3,n)
117 . it_spmd(p),itag, spmd_comm_world, stat, ierr)
120 . it_spmd(p),itag, spmd_comm_world, stat, ierr)
123 empl = irecbuf(i)-empsizpl
124 wrtbuf(1,empl)=frecbuf(1,i)
125 wrtbuf(2,empl)=frecbuf(2,i)
126 wrtbuf(3,empl)=frecbuf(3,i)
128 DEALLOCATE(irecbuf,frecbuf)
133 empsizpl = empsizpl +
plysizg(iply)
135 plysiz =
plynod(iply)%PLYNUMNODS
136 ALLOCATE (fsendbuf(3,plysiz))
137 ALLOCATE (isendbuf(plysiz))
140 i =
plynod(iply)%NODES(nd)
144 fsendbuf(1,nd) =
ply(iply)%V(1,n)
145 fsendbuf(2,nd) =
ply(iply)%V(2,n)
146 fsendbuf(3,nd) =
ply(iply)%V(3,n)
148 ELSEIF (ifunc==2)
THEN
149 fsendbuf(1,nd) =
ply(iply)%U(1,n)
151 fsendbuf(3,nd) =
ply(iply)%U(3,n)
153 ELSEIF (ifunc==3)
THEN
154 fsendbuf(1,nd) =
ply(iply)%A(1,n)
155 fsendbuf(2,nd) =
ply(iply)%A(2,n)
156 fsendbuf(3,nd) =
ply(iply)%A(3,n)
158 fsendbuf(1,nd) = zero
159 fsendbuf(2,nd) = zero
160 fsendbuf(3,nd) = zero
163 isendbuf(nd) =
plynod(iply)%PLYNODID(nd)
167 CALL mpi_send(isendbuf,plysiz,mpi_integer,it_spmd(1),
168 . itag,spmd_comm_world,ierr)
171 CALL mpi_send(fsendbuf,plysiz*3,real,it_spmd(1),
172 . itag,spmd_comm_world,ierr)
174 DEALLOCATE(isendbuf,fsendbuf)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)