51 use spmd_comm_world_mod,
only : spmd_comm_world
52 use precision_mod ,
only : wp
53 use spmd_send_mod,
only: spmd_send
54 use spmd_recv_mod,
only
71 INTEGER :: WEIGHT(*),NODGLOB(*),NUM
72 integer,
intent(in) :: numnod
73 real(kind=wp) :: v_glob(num)
78 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
79 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2
83 real(kind=wp),
DIMENSION(:) ,
ALLOCATABLE :: bufsr
84 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: IBUF
87! ----------------------------------------------------------------------------------------------------------------------
88 ALLOCATE(bufsr(numnodm), ibuf(numnodm))
93 IF (weight(i)==1)
THEN
95 ibuf(siz) = nodglob(i)
101 CALL spmd_send(ibuf,siz,it_spmd(1),msgtyp)
103 CALL spmd_send(bufsr,siz,it_spmd(1),msgtyp)
119 CALL mpi_probe(it_spmd(i),msgtyp,spmd_comm_world,status,ierror)
121 CALL spmd_recv(ibuf,siz,it_spmd(i),msgtyp)
124 CALL spmd_recv(bufsr,siz,it_spmd(i),msgtyp)
128 v_glob(ng) = bufsr(k)
133 DEALLOCATE(bufsr,ibuf)