62 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: buf
63 REAL*8,
DIMENSION(1:3*glb%NumNP) :: rnet
65 INTEGER ::
j, j1,
k , k1, k2
68 IF(glb%iElType.EQ.4)
THEN
70 glb%NumNP,glb%NumElVol,glb%ElConnVol,glb%MeshCoor,1,glb%NumElPartBndry)
73 glb%NumNP,glb%NumElVol,glb%ElConnVol,glb%MeshCoor,1,glb%NumElPartBndry)
78 ALLOCATE(buf(1:glb%TotNumNdComm))
80 DO j1 = 1, glb%TotNumNeighProcs
81 k = glb%NeighProcList(j1)
82 DO j = 1, glb%NumNdComm(j1)
83 k2 = 3*glb%NdCommList(j1)%NdId(
j)
84 buf(k1) = rnet( k2 - 2 )
85 buf(k1+1) = rnet( k2 - 1 )
86 buf(k1+2) = rnet( k2 )
94 DO j1 = 1, glb%TotNumNeighProcs
95 k = glb%NeighProcList(j1)+1
96 CALL mpi_irecv(glb%RecvDataFrm(
k)%rcvbuf(1), &
97 glb%NumNdComm(j1)*3,mpi_double_precision,
k-1,10,glb%MPI_COMM_ROCFRAC, &
104 DO j1 = 1, glb%TotNumNeighProcs
105 k = glb%NeighProcList(j1)
106 CALL mpi_isend(buf(k1),glb%NumNdComm(j1)*3,mpi_double_precision, &
107 k,10,glb%MPI_COMM_ROCFRAC,glb%ReqSnd(j1),ierr)
108 k1 = k1 + glb%NumNdComm(j1)*3
113 IF(glb%iElType.EQ.4)
THEN
115 glb%NumNP,glb%NumElVol,glb%ElConnVol,glb%MeshCoor,glb%NumElPartBndry+1,glb%NumElVol)
118 glb%NumNP,glb%NumElVol,glb%ElConnVol,glb%MeshCoor,glb%NumElPartBndry+1,glb%NumElVol)
123 IF(glb%TotNumNeighProcs.GT.0)
THEN
124 CALL mpi_waitall(glb%TotNumNeighProcs,glb%ReqRcv,glb%StatRcv,ierr)
125 CALL mpi_waitall(glb%TotNumNeighProcs,glb%ReqSnd,glb%StatSnd,ierr)
131 DO j1 = 1, glb%TotNumNeighProcs
132 k = glb%NeighProcList(j1)+1
134 DO j = 1, glb%NumNdComm(j1)
135 k2 = ( glb%NdCommList(j1)%NdId(
j) )*3
136 rnet(k2-2)= rnet(k2-2) + glb%RecvDataFrm(
k)%rcvbuf(k1)
137 rnet(k2-1)= rnet(k2-1) + glb%RecvDataFrm(
k)%rcvbuf(k1+1)
138 rnet(k2) = rnet(k2) + glb%RecvDataFrm(
k)%rcvbuf(k1+2)
subroutine v3d10_r_bar(d_bar, R_bar, numnp, numlstet, lmlstet, meshcoor, nstart, nend)
subroutine v3d4_r_bar(d_bar, R_bar, numnp, NumElv, lmcstet, meshcoor, nstart, nend)
subroutine updaterbar(glb, Rnet)