47 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
48#include "implicit_f.inc"
65 TYPE(intbuf_struct_) INTBUF_TAB(*)
66 INTEGER,
INTENT(IN) :: ITAB(NUMNOD),MAIN_PROC(NUMNOD)
67 INTEGER,
INTENT(IN) :: IPARI(NPARI,NINTER)
71 TYPE(int_pointer),
DIMENSION(NINTER,NSPMD) :: SEND_BUF,RECV_BUF
72 INTEGER,
DIMENSION(NINTER,NSPMD) :: SIZ_SEND_BUF,SIZ_RECV_BUF
73 INTEGER :: I,J,K,L,II,NIN,ITY,P,UID
75 INTEGER :: COLOR,KEY,NEDGE
76 INTEGER :: IED,IE,JE,WGT,NRTM,NSN
77 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAB
79 INTEGER :: STATUS(MPI_STATUS_SIZE), MSGTYP, REQ_S(NSPMD),REQ_R(NSPMD)
81 INTEGER,
PARAMETER :: MPI_COMM_NULL = 0
86 intbuf_tab(nin)%MPI_COMM = mpi_comm_null
87 intbuf_tab(nin)%RANK = -1
88 intbuf_tab(nin)%NSPMD = 0
89 intbuf_tab(nin)%NB_INTERNAL_EDGES = 0
90 intbuf_tab(nin)%NB_BOUNDARY_EDGES_LOCAL = 0
91 intbuf_tab(nin)%NB_BOUNDARY_EDGES_REMOTE = 0
96 ALLOCATE(intbuf_tab(nin)%FREE_IRECT_ID(nrtm))
99 . intbuf_tab(nin)%MVOISIN,
100 . intbuf_tab(nin)%IRECTM,
101 . intbuf_tab(nin)%STFM,
102 . intbuf_tab(nin)%NRTM_FREE,
103 . intbuf_tab(nin)%FREE_IRECT_ID)
109 nsn = ipari(macro_nsn,nin)
110 nedge = ipari(macro_nedge,nin)
111 IF(ipari(macro_iedge,nin) > 0) ninter25e = ninter25e + 1
115 ALLOCATE(tab(nedge,3))
119 tab(ie,1) = intbuf_tab(nin)%LEDGE( (ie-1)*nledge + 1 )
120 tab(ie,2) = intbuf_tab(nin)%LEDGE( (ie-1)*nledge + 3 )
121 tab(ie,3) = intbuf_tab(nin)%LEDGE( (ie-1)*nledge + 9 )
124 ied = count(tab(1:nedge,1) >= 0 .AND. tab(1:nedge,2) >= 0)
125 intbuf_tab(nin)%NB_INTERNAL_EDGES = ied
128 ied = count(.NOT. (tab(1:nedge,1) >= 0 .AND. tab(1:nedge,2) >= 0)
129 . .AND. tab(1:nedge,3) == 1)
130 intbuf_tab(nin)%NB_BOUNDARY_EDGES_LOCAL = ied
132 intbuf_tab(nin)%NB_BOUNDARY_EDGES_REMOTE = nedge
133 . - intbuf_tab(nin)%NB_BOUNDARY_EDGES_LOCAL
134 . - intbuf_tab(nin)%NB_INTERNAL_EDGES
140 . intbuf_tab(nin)%RANK, intbuf_tab(nin)%NSPMD)
148 siz_recv_buf(1:ninter,1:nspmd) = 0
149 siz_send_buf(1:ninter,1:nspmd) = 0
152 ity = ipari(macro_ity,nin)
153 nsn = ipari(macro_nsn,nin)
156 p = main_proc(intbuf_tab(nin)%NSV(i))
157 siz_send_buf(nin,p) = siz_send_buf(nin,p) + 1
163 . siz_recv_buf, ninter, mpi_integer,
164 . spmd_comm_world,ierror)
168 ity=ipari(macro_ity,nin)
169 nsn = ipari(macro_nsn,nin)
173 ALLOCATE(send_buf(nin,p)%P(siz_send_buf(nin,p)))
174 ALLOCATE(recv_buf(nin,p)%P(siz_recv_buf(nin,p)))
180 siz_send_buf(1:ninter,1:nspmd) = 0
182 ity=ipari(macro_ity,nin)
183 nsn = ipari(macro_nsn,nin)
186 p = main_proc(intbuf_tab(nin)%NSV(i))
187 siz_send_buf(nin,p) = siz_send_buf(nin,p) + 1
188 ii = siz_send_buf(nin,p)
189 IF(ispmd+1 == p )
THEN
190 send_buf(nin,p)%P(ii) = i
192 send_buf(nin,p)%P(ii) = itab(intbuf_tab(nin)%NSV(i))
201 IF(p /= ispmd + 1 .AND. siz_send_buf(nin,p) > 0)
THEN
202 k = siz_send_buf(nin,p)
205 . send_buf(nin,p)%P(1),k,mpi_integer,it_spmd(p),msgtyp,
206 . spmd_comm_world,req_s(p),ierror)
208 IF(p /= ispmd + 1 .AND. siz_recv_buf(nin,p) > 0)
THEN
209 k = siz_recv_buf(nin,p)
211 . recv_buf(nin,p)%P(1),k,mpi_integer,it_spmd(p),msgtyp,
212 . spmd_comm_world,req_r(p),ierror)
219 IF(p /= ispmd + 1 .AND. siz_send_buf(nin,p) > 0)
THEN
220 CALL mpi_wait(req_s(p),status,ierror)
222 IF(p /= ispmd + 1 .AND. siz_recv_buf(nin,p) > 0)
THEN
223 CALL mpi_wait(req_r(p),status,ierror)
230 IF(p /= ispmd +1)
THEN
231 DO l = 1, siz_recv_buf(nin,p)
233 uid = recv_buf(nin,p)%P(l)
235 nsn = ipari(macro_nsn,nin)
239 IF(itab(intbuf_tab(nin)%NSV(k))==uid)
THEN
241 recv_buf(nin,p)%P(l) = k
250 IF(p /= ispmd + 1 .AND. siz_recv_buf(nin,p) > 0)
THEN
251 k = siz_recv_buf(nin,p)
253 . recv_buf(nin,p)%P(1),k,mpi_integer,it_spmd(p),msgtyp,
254 . spmd_comm_world,req_s
256 IF(p /= ispmd + 1 .AND. siz_send_buf(nin,p) > 0)
THEN
257 k = siz_send_buf(nin,p)
259 . send_buf(nin,p)%P(1),k,mpi_integer,it_spmd(p),msgtyp,
260 . spmd_comm_world,req_r(p),ierror)
264 IF(p /= ispmd + 1 .AND. siz_recv_buf(nin,p) > 0)
THEN
265 CALL mpi_wait(req_s(p),status,ierror)
267 IF(p /= ispmd + 1 .AND. siz_send_buf(nin,p) > 0)
THEN
268 CALL mpi_wait(req_r(p),status,ierror)
274 siz_send_buf(1:ninter,1:nspmd) = 0
276 ity=ipari(macro_ity,nin)
277 nsn = ipari(macro_nsn,nin)
279 ALLOCATE(intbuf_tab(nin)%NSV_ON_PMAIN(nsn))
281 p = main_proc(intbuf_tab(nin)%NSV(i))
282 siz_send_buf(nin,p) = siz_send_buf(nin,p) + 1
283 ii = siz_send_buf(nin,p)
284 intbuf_tab(nin)%NSV_ON_PMAIN(i
291 ity=ipari(macro_ity,nin)
292 nsn = ipari(macro_nsn,nin)
296 DEALLOCATE(recv_buf(nin,p)%P)
334 use,
intrinsic :: iso_fortran_env
335 use,
intrinsic :: ieee_arithmetic
340 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
341#include "implicit_f.inc"
349#include "com01_c.inc"
350#include "com04_c.inc"
351#include "param_c.inc"
353#include "i25edge_c.inc"
357 INTEGER :: IPARI(NPARI,NINTER), INTLIST25(*)
358 TYPE(INTBUF_STRUCT_) :: INTBUF_TAB(*)
359 my_real,
INTENT(IN) :: X(3,NUMNOD)
371 INTEGER :: K,I,I1,I2,,JE,IED,L,L0
374 INTEGER :: MSGTYP,MSGOFF
377 INTEGER :: NEDGE_LOCAL
378 INTEGER :: IGLOB,IBEGIN
379 INTEGER :: N1,N2,N3,N4,NN1,NN2,PP,TYPEDG
383 real (real32) :: nan32
387 DATA NTRIA/1,2,4,2,4,1,0,0,0,4,1,2/
391 INTEGER,
PARAMETER :: NB_VALUES = 3 + 12 + 4 + 12 * 2 + 3 * 2
394 INTEGER,
PARAMETER :: NB_VALUES = 3 + 12 + 4 + 12 + 3 * 2
406 buffers(ni25)%NBIRECV = 0
408 ALLOCATE(buffers(ni25)%SEND_RQ(nspmd))
409 ALLOCATE(buffers(ni25)%RECV_RQ(nspmd))
410 ALLOCATE(buffers(ni25)%IAD_RECV(nspmd+1))
411 ALLOCATE(buffers(ni25)%IAD_SEND(nspmd+1))
415 buffers(ni25)%IAD_SEND(1) = 1
416 buffers(ni25)%IAD_RECV(1) = 1
419 send_size = send_size + nb*nb_values
420 buffers(ni25)%IAD_SEND(p+1) = buffers(ni25)%IAD_SEND(p) + nb
423 recv_size = recv_size
424 buffers(ni25)%IAD_RECV
426 ALLOCATE(buffers(ni25)%SEND_BUF(send_size))
427 ALLOCATE(buffers(ni25
429 recv_size = nb_values * ( buffers(ni25)%IAD_RECV(p+1)-buffers(ni25)%IAD_RECV(p))
430 buffers(ni25)%RECV_RQ(p) = mpi_request_null
431 IF(recv_size > 0)
THEN
432 buffers(ni25)%NBIRECV = buffers(ni25)%NBIRECV + 1
434 i = buffers(ni25)%IAD_RECV(p)
435 l = (i-1) * nb_values + 1
442 . buffers(ni25)%RECV_BUF(l),
448 . buffers(ni25)%RECV_RQ(p),
461 nedge_local = intbuf_tab(n)%NB_INTERNAL_EDGES + intbuf_tab(n)%NB_BOUNDARY_EDGES_LOCAL
463 buffers(ni25)%NBISEND = 0
465 buffers(ni25)%SEND_RQ(p) = mpi_request_null
466 send_size = ( buffers(ni25)%IAD_SEND(p+1)-buffers(ni25
467 DO i = buffers(ni25)%IAD_SEND(p
470 ie = intbuf_tab(n)%LEDGE((ied-1)*nledge+1)
471 je = intbuf_tab(n)%LEDGE((ied-1)*nledge+2)
473 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,p-1)
474 m1 = intbuf_tab(n)%LEDGE(5+(ied-1)*nledge)
475 m2 = intbuf_tab(n)%LEDGE(6+(ied-1)*nledge)
476 im = intbuf_tab(n)%LEDGE(10+(ied-1)*nledge)
478 typedg = intbuf_tab(n)%LEDGE((ied-1)*nledge+7)
479 IF(typedg == 1 .AND. ie > 0)
THEN
480 nn1 = intbuf_tab(n)%ADMSR(je+(ie-1)*4)
481 nn2 = intbuf_tab(n)%ADMSR(mod(je,4)+1+(ie-1)*4)
532 printif(4 +(ie-1)*4 > 4 * nrtm,nrtm)
533 printif(4 +(ie-1)*4 >
536 IF(intbuf_tab(n)%IRECTM(3 +(ie-1)*4)
537 . /= intbuf_tab(n)%IRECTM(4 +(ie-1)*4) )
THEN
538 n1 = intbuf_tab(n)%IRECTM( je +(ie-1)*4)
539 n2 = intbuf_tab(n)%IRECTM(mod(je,4) +1+(ie
540 n3 = intbuf_tab(n)%IRECTM(mod(je+1,4)+1+(ie-1)*4)
541 n4 = intbuf_tab(n)%IRECTM(mod(je+2,4)+1+(ie-1)*4)
543 n1 = intbuf_tab(n)%IRECTM(ntria(1,je)+(ie-1)*4)
544 n2 = intbuf_tab(n)%IRECTM(ntria(2,je)+(ie-1)*4)
545 n3 = intbuf_tab(n)%IRECTM(ntria(3,je)+(ie-1)*4)
551 i2 = intbuf_tab(n)%LEDGE(12+(ied-1)*nledge)
553 l = (i-1) * nb_values
556 buffers(ni25)%SEND_BUF(l+1) = intbuf_tab(n)%EDGE_BISECTOR(to1d(1,je,ie,3,4))
557 buffers(ni25)%SEND_BUF(l+2) = intbuf_tab(n)%EDGE_BISECTOR(to1d(2,je,ie,3,4))
558 buffers(ni25)%SEND_BUF(l+3) = intbuf_tab(n)%EDGE_BISECTOR(to1d(3,je,ie,3,4))
563 buffers(ni25)%SEND_BUF(l+1) = intbuf_tab(n)%EDGE_BISECTOR(to1d(1,je,-ie,3,4))
564 buffers(ni25)%SEND_BUF(l+2) = intbuf_tab(n)%EDGE_BISECTOR(to1d(2,je,-ie,3,4))
565 buffers(ni25)%SEND_BUF(l+3) = intbuf_tab(n)%EDGE_BISECTOR(to1d(3,je,-ie,3,4))
571 buffers(ni25)%SEND_BUF(l+4) = intbuf_tab(n)%VTX_BISECTOR(to1d(1,1,i1,3,2))
572 buffers(ni25)%SEND_BUF(l+5) = intbuf_tab(n)%VTX_BISECTOR(to1d(2,1,i1,3,2))
573 buffers(ni25)%SEND_BUF(l+6) = intbuf_tab(n)%VTX_BISECTOR(to1d(3,1,i1,3,2))
574 buffers(ni25)%SEND_BUF(l+7) = intbuf_tab(n)%VTX_BISECTOR(to1d(1,2,i1,3,2))
575 buffers(ni25)%SEND_BUF(l+8) = intbuf_tab(n)%VTX_BISECTOR(to1d(2,2,i1,3,2))
576 buffers(ni25)%SEND_BUF(l+9) = intbuf_tab(n)%VTX_BISECTOR(to1d(3,2,i1,3,2))
577 buffers(ni25)%SEND_BUF(l+10) = intbuf_tab(n)%VTX_BISECTOR(to1d(1,1,i2,3,2))
578 buffers(ni25)%SEND_BUF(l+11) = intbuf_tab(n)%VTX_BISECTOR(to1d(2,1,i2,3,2))
579 buffers(ni25)%SEND_BUF(l+12) = intbuf_tab(n)%VTX_BISECTOR(to1d(3,1,i2,3,2))
580 buffers(ni25)%SEND_BUF(l+13) = intbuf_tab(n)%VTX_BISECTOR(to1d(1,2,i2,3,2))
581 buffers(ni25)%SEND_BUF(l+14) = intbuf_tab(n)%VTX_BISECTOR(to1d(2,2,i2,3,2))
582 buffers(ni25)%SEND_BUF(l+15) = intbuf_tab(n)%VTX_BISECTOR(to1d(3,2,i2,3,2))
587 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+6) ))
588 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+7) ))
589 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+8) ))
590 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+9) ))
591 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+10)))
592 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+11)))
593 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+12)))
594 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+13)))
595 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+14)))
596 assert( .NOT. isnan( buffers(ni25)%SEND_BUF(l+15)))
598 buffers(ni25)%SEND_BUF(l+16) =
599 . transfer(intbuf_tab(n)%LEDGE((ied-1)*nledge+1),buffers(ni25)%SEND_BUF(l+16))
600 buffers(ni25)%SEND_BUF(l+17) =
601 . transfer(intbuf_tab(n)%LEDGE((ied-1)*nledge+2),buffers(ni25)%SEND_BUF(l+17))
602 buffers(ni25)%SEND_BUF(l+18) =
603 . transfer(intbuf_tab(n)%LEDGE((ied-1)*nledge+
604 buffers(ni25)%SEND_BUF(l+19) =
605 . transfer(intbuf_tab(n)%LEDGE((ied-1)*nledge+4),buffers(ni25)%SEND_BUF(l+19))
607 eid = intbuf_tab(n)%LEDGE((ied-1)*nledge+ledge_global_id)
608 debug_e2e(eid==d_es, intbuf_tab(n)%LEDGE((ied-1)*nledge+3))
611 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(1,n1))
612 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(2,n1))
613 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(3,n1))
614 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(1,n2))
615 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(2,n2))
616 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(3,n2))
617 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(1,n3))
618 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(2,n3))
619 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(3,n3))
620 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x
621 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) =
622 debug_e2e(intbuf_tab(n)%LEDGE((ied-1)*nledge+8) == d_es,x(3,n4))
626 buffers(ni25)%SEND_BUF(l+20:l+20+1)=transfer(x(1,n1),sp,2)
627 buffers(ni25)%SEND_BUF(l+22:l+22+1)=transfer(x(2,n1),sp,2)
628 buffers(ni25)%SEND_BUF(l+24:l+24+1)=transfer(x(3,n1),sp,2)
629 buffers(ni25)%SEND_BUF(l+26:l+26+1)=transfer(x(1,n2),sp,2)
630 buffers(ni25)%SEND_BUF(l+28:l+28+1)=transfer(x(2,n2),sp,2)
631 buffers(ni25)%SEND_BUF(l+30:l+30+1)=transfer(x(3,n2),sp,2)
632 buffers(ni25)%SEND_BUF(l+32:l+32+1)=transfer(x(1,n3),sp,2)
633 buffers(ni25)%SEND_BUF(l+34:l+34+1)=transfer(x(2,n3),sp,2)
634 buffers(ni25)%SEND_BUF(l+36:l+36+1)=transfer(x(3,n3),sp,2)
635 buffers(ni25)%SEND_BUF(l+38:l+38+1)=transfer(x(1,n4),sp,2)
636 buffers(ni25)%SEND_BUF(l+40:l+40+1)=transfer(x(2,n4),sp,2)
637 buffers(ni25)%SEND_BUF(l+42:l+42+1)=transfer(x(3,n4),sp,2)
640 buffers(ni25)%SEND_BUF(l+20) = x(1,n1)
641 buffers(ni25)%SEND_BUF(l+21) = x(2,n1)
642 buffers(ni25)%SEND_BUF(l+22) = x(3,n1)
643 buffers(ni25)%SEND_BUF(l+23) = x(1,n2)
644 buffers(ni25)%SEND_BUF(l+24) = x(2,n2)
645 buffers(ni25)%SEND_BUF(l+25) = x(3,n2)
646 buffers(ni25)%SEND_BUF(l+26) = x(1,n3)
647 buffers(ni25)%SEND_BUF(l+27) = x(2,n3)
648 buffers(ni25)%SEND_BUF(l+28) = x(3,n3)
649 buffers(ni25)%SEND_BUF(l+29) = x(1,n4)
650 buffers(ni25)%SEND_BUF(l+30) = x(2,n4)
651 buffers(ni25)%SEND_BUF(l+31) = x(3,n4)
656 buffers(ni25)%SEND_BUF(l+20) = 0
657 buffers(ni25)%SEND_BUF(l+21) = 0
658 buffers(ni25)%SEND_BUF(l+22) = 0
659 buffers(ni25)%SEND_BUF(l+23) = 0
660 buffers(ni25)%SEND_BUF(l+24) = 0
661 buffers(ni25)%SEND_BUF(l+25) = 0
662 buffers(ni25)%SEND_BUF(l+26) = 0
663 buffers(ni25)%SEND_BUF(l+27) = 0
664 buffers(ni25)%SEND_BUF(l+28) = 0
665 buffers(ni25)%SEND_BUF(l+29) = 0
666 buffers(ni25)%SEND_BUF(l+30) = 0
667 buffers(ni25)%SEND_BUF(l+31) = 0
668 buffers(ni25)%SEND_BUF(l+32) = 0
669 buffers(ni25)%SEND_BUF(l+33) = 0
670 buffers(ni25)%SEND_BUF(l+34) = 0
671 buffers(ni25)%SEND_BUF(l+35) = 0
672 buffers(ni25)%SEND_BUF(l+36) = 0
673 buffers(ni25)%SEND_BUF(l+37) = 0
674 buffers(ni25)%SEND_BUF(l+38) = 0
675 buffers(ni25)%SEND_BUF(l+39) = 0
676 buffers(ni25)%SEND_BUF(l+40) = 0
677 buffers(ni25)%SEND_BUF(l+41) = 0
678 buffers(ni25)%SEND_BUF(l+42) = 0
679 buffers(ni25)%SEND_BUF(l+43) = 0
683 buffers(ni25)%SEND_BUF(l+20) = 0
684 buffers(ni25)%SEND_BUF(l+21) = 0
685 buffers(ni25)%SEND_BUF(l+22) = 0
686 buffers(ni25)%SEND_BUF(l+23) = 0
687 buffers(ni25)%SEND_BUF(l+24) = 0
688 buffers(ni25)%SEND_BUF(l+25) = 0
689 buffers(ni25)%SEND_BUF(l+26) = 0
690 buffers(ni25)%SEND_BUF(l+27) = 0
691 buffers(ni25)%SEND_BUF(l+28) = 0
692 buffers(ni25)%SEND_BUF(l+29) = 0
693 buffers(ni25)%SEND_BUF(l+30) = 0
694 buffers(ni25)%SEND_BUF(l+31) = 0
701 IF(typedg == 1 .AND. nn1 > 0)
THEN
703 buffers(ni25)%SEND_BUF(l+pp+1) = intbuf_tab(n)%E2S_NOD_NORMAL(3*(nn1-1)+1)
704 buffers(ni25)%SEND_BUF(l+pp+2) = intbuf_tab(n)%E2S_NOD_NORMAL(3*(nn1-1)+2)
705 buffers(ni25)%SEND_BUF(l+pp+3) = intbuf_tab(n)%E2S_NOD_NORMAL(3*(nn1-1)+3)
707 buffers(ni25)%SEND_BUF(l+pp+4) = intbuf_tab(n)%E2S_NOD_NORMAL(3*(nn2-1)+1)
708 buffers(ni25)%SEND_BUF(l+pp+5) = intbuf_tab(n)%E2S_NOD_NORMAL(3*(nn2-1)+2)
709 buffers(ni25)%SEND_BUF(l+pp+6) = intbuf_tab(n)%E2S_NOD_NORMAL(3*(nn2-1)+3)
711 buffers(ni25)%SEND_BUF(l+pp+1) = 0
712 buffers(ni25)%SEND_BUF(l+pp+2) = 0
713 buffers(ni25)%SEND_BUF(l+pp+3) = 0
715 buffers(ni25)%SEND_BUF(l+pp+4) = 0
716 buffers(ni25)%SEND_BUF(l+pp+5) = 0
717 buffers(ni25)%SEND_BUF(l+pp+6) = 0
723 IF(send_size > 0)
THEN
724 buffers(ni25)%NBISEND = buffers(ni25)%NBISEND + 1
726 i = buffers(ni25)%IAD_SEND(p)
727 l = (i-1) * nb_values+1
732 . buffers(ni25)%SEND_BUF(l),
746 nan32 = ieee_value(nan32,ieee_quiet_nan)
781 DO k = 1,buffers(ni25)%NBIRECV
784 CALL mpi_waitany(nspmd,buffers(ni25)%RECV_RQ,p,mpi_status_ignore,ierror)
786 l0 = (buffers(ni25)%IAD_RECV(p) - 1)*nb_values
790 IF( l - 1 /= ispmd) ibegin = ibegin +
nsnfie(n)%P(l)
794 l = l0 + (i-1) * nb_values
814 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+1 )))
815 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+2 )))
816 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+3 )))
817 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+4 )))
818 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+5 )))
819 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+6 )))
820 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+7 )))
821 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+8 )))
822 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+9 )))
823 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+10)))
824 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+11)))
825 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+12)))
826 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+13)))
827 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+14)))
828 assert(.NOT. isnan(buffers(ni25)%RECV_BUF(l+15)))
831 . transfer(buffers(ni25)%RECV_BUF(l+16),l0)
833 . transfer(buffers(ni25)%RECV_BUF(l+17),l0)
835 . transfer(buffers(ni25)%RECV_BUF(l+18),l0)
837 . transfer(buffers(ni25)%RECV_BUF(l+19),l0)
844 x_seg_fie(n)%P(1,1,iglob) =transfer( buffers(ni25)%RECV_BUF(l+20:l+20+1),one)
845 x_seg_fie(n)%P(2,1,iglob) =transfer( buffers(ni25)%RECV_BUF(l+22:l+22+1),one)
846 x_seg_fie(n)%P(3,1,iglob) =transfer( buffers(ni25)%RECV_BUF(l+24:l+24+1),one)
847 x_seg_fie(n)%P(1,2,iglob) =transfer( buffers(ni25)%RECV_BUF(l+26:l+26+1),one)
848 x_seg_fie(n)%P(2,2,iglob) =transfer( buffers(ni25)%RECV_BUF(l+28:l+28+1),one)
849 x_seg_fie(n)%P(3,2,iglob) =transfer( buffers(ni25)%RECV_BUF(l+30:l+30+1),one)
850 x_seg_fie(n)%P(1,3,iglob) =transfer( buffers(ni25)%RECV_BUF(l+32:l+32+1),one
851 x_seg_fie(n)%P(2,3,iglob) =transfer( buffers(ni25)%RECV_BUF(l+34:l+34+1),one)
852 x_seg_fie(n)%P(3,3,iglob) =transfer( buffers(ni25)%RECV_BUF(l+36:l+36+1),one)
853 x_seg_fie(n)%P(1,4,iglob) =transfer( buffers(ni25)%RECV_BUF(l+38:l+38+1),one)
854 x_seg_fie(n)%P(2,4,iglob) =transfer( buffers(ni25)%RECV_BUF(l+40:l+40+1),one)
855 x_seg_fie(n)%P(3,4,iglob) =transfer( buffers(ni25)%RECV_BUF(l+42:l+42+1),one)
858 x_seg_fie(n)%P(1,1,iglob) = buffers(ni25)%RECV_BUF(l+20)
859 x_seg_fie(n)%P(2,1,iglob) = buffers(ni25)%RECV_BUF(l+21)
860 x_seg_fie(n)%P(3,1,iglob) = buffers(ni25)%RECV_BUF(l+22)
861 x_seg_fie(n)%P(1,2,iglob) = buffers(ni25)%RECV_BUF(l+23)
862 x_seg_fie(n)%P(2,2,iglob) = buffers(ni25)%RECV_BUF(l+24)
863 x_seg_fie(n)%P(3,2,iglob) = buffers(ni25)%RECV_BUF(l+25)
864 x_seg_fie(n)%P(1,3,iglob) = buffers(ni25)%RECV_BUF(l+26)
865 x_seg_fie(n)%P(2,3,iglob) = buffers(ni25)%RECV_BUF(l
866 x_seg_fie(n)%P(3,3,iglob) = buffers(ni25)%RECV_BUF(l+28)
867 x_seg_fie(n)%P(1,4,iglob) = buffers(ni25)%RECV_BUF(l+29)
868 x_seg_fie(n)%P(2,4,iglob) = buffers(ni25)%RECV_BUF(l+30)
869 x_seg_fie(n)%P(3,4,iglob) = buffers(ni25)%RECV_BUF(l+31)
887 nan32 = ieee_value(nan32,ieee_quiet_nan)
923 CALL mpi_waitall(nspmd,buffers(ni25)%SEND_RQ,mpi_statuses_ignore,ierror)
925 DEALLOCATE(buffers(ni25)%SEND_BUF)
926 DEALLOCATE(buffers(ni25)%RECV_BUF)
927 DEALLOCATE(buffers(ni25)%SEND_RQ)
928 DEALLOCATE(buffers(ni25)%RECV_RQ)
929 DEALLOCATE(buffers(ni25)%IAD_RECV)
930 DEALLOCATE(buffers(ni25)%IAD_SEND)