43 . NUMNODG, NUMNODM, A, ITAB,
52 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
53#include "implicit_f.inc"
65 INTEGER,
INTENT(IN) :: NCYCLE
66 INTEGER,
INTENT(IN) :: ISPMD
67 INTEGER,
INTENT(IN) :: NSPMD
68 INTEGER,
INTENT(IN) :: NUMNOD
69 INTEGERINTENT(IN) :: NUMNODG
70 INTEGER,
INTENT(IN) :: NUMNODM
71 INTEGER,
INTENT(IN) :: ITAB(NUMNOD)
72 INTEGER,
INTENT(IN) :: WEIGHT(NUMNOD)
73 INTEGER,
INTENT(IN) :: NODGLOB(NUMNOD)
74 my_real,
INTENT(IN) :: a(3,numnod)
83 INTEGER :: I,K,N,NODE_GLOBAL_ID
84 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NODES_TO_SEND
85 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: AGLOB,NODES_TO_RECV
94 ALLOCATE(nodes_to_recv(4,numnodg))
97 ALLOCATE(nodes_to_send(
max(numnod,numnodm)))
98 ALLOCATE(aglob(4,
max(numnodm,numnod)))
104 IF (weight(i)==1)
THEN
106 nodes_to_send(n) = nodglob(i)
114 CALL mpi_send(nodes_to_send,n,mpi_integer,
116 . spmd_comm_world,ierror)
118 CALL mpi_send(aglob,4*n,mpi_double_precision,
120 . spmd_comm_world,ierror)
125 IF (weight(i)==1)
THEN
126 node_global_id = nodglob(i)
127 nodes_to_recv(1,node_global_id) = itab(i)
128 nodes_to_recv(2,node_global_id) = a(1,i)
129 nodes_to_recv(3,node_global_id) = a(2,i)
130 nodes_to_recv(4,node_global_id) = a(3,i)
136 CALL mpi_recv(nodes_to_send,numnodm,mpi_integer,
138 . spmd_comm_world,status,ierror)
141 CALL mpi_recv(aglob,4*n,mpi_double_precision,
143 . spmd_comm_world,status,ierror)
145 node_global_id = nodes_to_send(i)
146 nodes_to_recv(1,node_global_id) = aglob(1,i)
147 nodes_to_recv(2,node_global_id) = aglob(2,i)
148 nodes_to_recv(3,node_global_id) = aglob(3,i)
149 nodes_to_recv(4,node_global_id) = aglob(4,i)
155 WRITE(iout,*) ncycle,
"CHECKSUM:",
checksum
158 IF(
ALLOCATED(nodes_to_send))
DEALLOCATE(nodes_to_send)
159 IF(
ALLOCATED(aglob))
DEALLOCATE(aglob)
160 IF(
ALLOCATED(nodes_to_recv))
DEALLOCATE(nodes_to_recv)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)
subroutine spmd_flush_accel(ncycle, ispmd, nspmd, numnod, numnodg, numnodm, a, itab, weight, nodglob)