25!||
spmd_get_mult ../engine/source/mpi/lag_multipliers/spmd_lag.f
29!|| spmd_comm_world_mod ../engine/source/mpi/spmd_comm_world.f90
30!||====================================================================
32 1 LAGCOMC,LAGCOMK,N_MULT ,BLL ,IADLL,
33 2 LLL ,JLL ,SLL ,XLL ,COMNTAG,
34 3 ICFTAG ,JCFTAG ,FR_LAGF,N_IK)
38 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
39#include "implicit_f.inc"
50 . LLL(*), JLL(*), SLL(*), IADLL(*),
51 . COMNTAG(*), ICFTAG(*), JCFTAG(*), FR_LAGF(3,*)
53 . lagcomk(4,*),lagcomc(2,*), xll(*), bll(*)
57 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF,MSGOFF2
58 INTEGER MSGTYP,I,NCL,IKL,N, LOC_PROC
66 IF(fr_lagf(1,loc_proc)>0)
THEN
70 1 lagcomc ,2*n_mult,real ,it_spmd(1),msgtyp,
71 2 spmd_comm_world,ierror)
74 1 lagcomk ,4*n_ik,real ,it_spmd(1),msgtyp,
75 2 spmd_comm_world,ierror)
79 iadll(n+1) = iadll(n)+nint(lagcomc(1,n))
86 lll(n) = nint(lagcomk(1,n))
87 jll(n) = nint(lagcomk(2,n))
88 sll(n) = nint(lagcomk(3,n))
91 comntag(lll(n)) = comntag(lll(n))+1
100 1 lagcomc(1,n_mult+1),2*ncl ,real ,it_spmd(i),msgtyp,
101 2 spmd_comm_world ,status,ierror)
104 iadll(n_mult+n+1) = iadll(n_mult+n)
105 + +nint(lagcomc(1,n_mult+n))
106 bll(n_mult+n) = lagcomc(2,n_mult+n)
108 icftag(n_mult+n) = n_mult+n
109 jcftag(n_mult+n) = n_mult+n
116 1 lagcomk(1,n_ik+1),4*ikl ,real ,it_spmd(i),msgtyp,
117 2 spmd_comm_world ,status,ierror)
119 lll(n_ik+n) = nint(lagcomk(1,n_ik+n))
120 jll(n_ik+n) = nint(lagcomk(2,n_ik+n))
121 sll(n_ik+n) = nint(lagcomk(3,n_ik+n))
122 xll(n_ik+n) = lagcomk(4,n_ik+n)
124 comntag(lll(n_ik+n)) = comntag(lll(n_ik+n))+1
151 2 IN ,AG ,ARG ,VG ,VRG ,
152 3 MSG ,ING ,FR_LAGF,ISIZ ,NBNODL,
153 4 INDEXLAG,NODGLOB ,LLAGF ,NLAGF_L)
157 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
158#include "implicit_f.inc"
164#include "com01_c.inc"
168 INTEGER FR_LAGF(3,*), INDEXLAG(*), NODGLOB(*), LLAGF(*),
169 . NBNODL, NLAGF_L, ISIZ
171 . A(3,*), AR(3,*), (3,*), VR(3,*), MS(*), IN(*),
172 . AG(3,*), ARG(3,*), VG(3,*), VRG(3,*), MSG(*), ING(*)
176 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
177 INTEGER MSGTYP,I,NNOD,N,NLAGF_G,P
179 . BUFCOM(ISIZ,NBNODL)
190 bufcom(1,i) = nodglob(n)
198 bufcom(9,i) = ar(1,n)
199 bufcom(10,i) = ar(2,n)
200 bufcom(11,i) = ar(3,n)
202 bufcom(13,i) = vr(1,n)
203 bufcom(14,i) = vr(2,n)
204 bufcom(15,i) = vr(3,n)
209 bufcom(1,i) = nodglob(n)
221 1 bufcom ,isiz*nlagf_l,real ,it_spmd(1),msgtyp,
222 2 spmd_comm_world,ierror)
229 indexlag(nodglob(n)) = i
248 indexlag(nodglob(n)) = i
265 1 bufcom,isiz*nnod ,real ,it_spmd(p),msgtyp,
266 2 spmd_comm_world ,status,ierror)
269 n = nint(bufcom(1,i))
270 indexlag(n) = nlagf_g+i
271 ag(1,nlagf_g+i) = bufcom(2,i)
272 ag(2,nlagf_g+i) = bufcom(3,i)
273 ag(3,nlagf_g+i) = bufcom(4,i)
274 msg(nlagf_g+i) = bufcom(5,i)
275 vg(1,nlagf_g+i) = bufcom(6,i)
276 vg(2,nlagf_g+i) = bufcom(7,i)
277 vg(3,nlagf_g+i) = bufcom(8,i)
278 arg(1,nlagf_g+i)= bufcom(9,i)
279 arg(2,nlagf_g+i)= bufcom(10,i)
280 arg(3,nlagf_g+i)= bufcom(11,i)
281 ing(nlagf_g+i) = bufcom(12,i)
282 vrg(1,nlagf_g+i)= bufcom(13,i)
283 vrg(2,nlagf_g+i)= bufcom(14,i)
284 vrg(3,nlagf_g+i)= bufcom(15,i)
288 n = nint(bufcom(1,i))
289 indexlag(n) = nlagf_g+i
290 ag(1,nlagf_g+i) = bufcom(2,i)
291 ag(2,nlagf_g+i) = bufcom(3,i)
292 ag(3,nlagf_g+i) = bufcom(4,i)
293 msg(nlagf_g+i) = bufcom(5,i)
294 vg(1,nlagf_g+i) = bufcom(6,i)
295 vg(2,nlagf_g+i) = bufcom(7,i)
296 vg(3,nlagf_g+i) = bufcom(8,i)
314!||--- called by ------------------------------------------------------
318!||====================================================================
320 1 A ,AR ,AG ,ARG ,FR_LAGF,
321 2 ISIZ ,NBNODL ,LLAGF ,NLAGF_L )
325 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
326#include "implicit_f.inc"
332#include "com01_c.inc"
336 INTEGER (3,*), LLAGF(*),
337 . NBNODL, NLAGF_L, ISIZ
339 . (3,*), AR(3,*),AG(3,*), ARG(3,*)
343 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
344 INTEGER MSGTYP,I,NNOD,N,NLAGF_G,P
346 . bufcom(isiz,nbnodl)
357 1 bufcom,isiz*nlagf_l,real ,it_spmd(1),msgtyp,
358 2 spmd_comm_world ,status,ierror)
365 ar(1,n) = bufcom(4,i)
366 ar(2,n) = bufcom(5,i)
367 ar(3,n) = bufcom(6,i)
405 bufcom(1,i) = ag(1,nlagf_g+i)
406 bufcom(2,i) = ag(2,nlagf_g+i)
407 bufcom(3,i) = ag(3,nlagf_g+i)
408 bufcom(4,i) = arg(1,nlagf_g+i)
409 bufcom(5,i) = arg(2,nlagf_g+i)
410 bufcom(6,i) = arg(3,nlagf_g+i)
414 bufcom(1,i) = ag(1,nlagf_g+i)
415 bufcom(2,i) = ag(2,nlagf_g+i)
416 bufcom(3,i) = ag(3,nlagf_g+i)
421 1 bufcom ,isiz*nnod,real ,it_spmd(p),msgtyp,
422 2 spmd_comm_world,ierror)
434!||--- called by ------------------------------------------------------
440 1 FANI,FANIG,FR_LAGF,NBNODL,LLAGF,NLAGF_L)
444 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
445#include "implicit_f.inc"
451#include "com01_c.inc"
455 INTEGER FR_LAGF(3,*), LLAGF(*),
458 . FANI(3,*), FANIG(3,*)
462 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
463 INTEGER MSGTYP,I,NNOD,N,NLAGF_G,P
476 1 bufcom,3*nlagf_l,real ,it_spmd(1),msgtyp,
477 2 spmd_comm_world ,status,ierror)
480 fani(1,n) = bufcom(1,i)
481 fani(2,n) = bufcom(2,i)
482 fani(3,n) = bufcom(3,i)
489 fani(1,n) = fanig(1,i)
490 fani(2,n) = fanig(2,i)
491 fani(3,n) = fanig(3,i)
499 bufcom(1,i) = fanig(1,nlagf_g+i)
500 bufcom(2,i) = fanig(2,nlagf_g+i)
501 bufcom(3,i) = fanig(3,nlagf_g+i)
505 1 bufcom ,3*nnod,real ,it_spmd(p),msgtyp,
506 2 spmd_comm_world,ierror)
524 1 A ,AR ,LLAGF , NLAGF_L, FR_LAGF,
525 2 IAD_ELEM,FR_ELEM,LRBUF , ISIZ )
529 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
530#include "implicit_f.inc"
538#include "com01_c.inc"
539#include "com04_c.inc"
544 INTEGER NLAGF_L,LRBUF,ISIZ,
545 . FR_LAGF(3,*),LLAGF(*),IAD_ELEM(2,*),FR_ELEM(*)
551 INTEGER I, J, P, N, L, IERROR, MSGOFF, MSGOFF2, ISHIFT,
552 . LOC_PROC, MSGTYP, BUFSIZ, SIZ, INB, NB_NOD, NOD, LSEND,
553 . REQ_R(NSPMD), REQ_S(NSPMD),IAD_SEND(NSPMD+1),
554 . IAD_RECV(NSPMD+1), STATUS(MPI_STATUS_SIZE), ITAG(NUMNOD)
577 IF(iad_elem(1,i+1)-iad_elem(1,i)/=0)
THEN
578 siz = isiz*(iad_elem(1,i+1)-iad_elem(1,i))+1
581 s rbuf(l),siz,real,it_spmd(i),msgtyp,
582 g spmd_comm_world,req_r(i),ierror)
590 IF(iad_elem(1,i+1)-iad_elem(1,i)/=0)
THEN
594 ishift = iad_elem(1,i)-1
596#include "vectorize.inc"
597 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
610#include "vectorize.inc"
611 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
619 rbuf(l+4) = ar(1,nod)
620 rbuf(l+5) = ar(2,nod)
621 rbuf(l+6) = ar(3,nod)
635 IF(iad_elem(1,i+1)-iad_elem(1,i)/=0)
THEN
637 l = iad_send(i+1)-iad_send(i)
640 s rbuf(lsend),l,real,it_spmd(i),msgtyp,
641 g spmd_comm_world,req_s(i),ierror)
648 IF(iad_elem(1,i+1)-iad_elem(1,i)/=0)
THEN
649 CALL mpi_wait(req_r(i),status,ierror)
651 nb_nod = nint(rbuf(l))
654 ishift = iad_elem(1,i)-1
656#include "vectorize.inc"
658 nod = fr_elem(nint(rbuf(l))+ishift)
666#include "vectorize.inc"
668 nod = fr_elem(nint(rbuf(l))+ishift)
684 IF(iad_elem(1,i+1)-iad_elem(1,i)/=0)
685 .
CALL mpi_wait(req_s(i),status,ierror)
702 1 RDUM1, RDUM2,IDUM1,IDUM2,IDUM3, IDUM4)
704 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
705#include "implicit_f.inc"
708 . idum1, idum2, idum3, idum4, idum5
710 . rdum1, rdum2, rdum3, rdum4, rdum5
722 1 LAGCOMC,LAGCOMK,N_MULT ,BLL ,IADLL,
723 2 LLL ,JLL ,SLL ,XLL ,COMNTAG,
724 3 ICFTAG ,JCFTAG ,FR_LAGF,N_IK)
728 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
729#include "implicit_f.inc"
733 INTEGER N_MULT, N_IK,
734 . LLL(*), (*), SLL(*), IADLL(*),
735 . COMNTAG(*), ICFTAG(*), JCFTAG(*), FR_LAGF(3,*)
737 . lagcomk(4,*),lagcomc(2,*), xll(*), bll(*)
744 iadll(n+1) = iadll(n)+nint(lagcomc(1,n))
745 bll(n) = lagcomc(2,n)
751 lll(n) = nint(lagcomk(1,n))
752 jll(n) = nint(lagcomk(2,n))
753 sll(n) = nint(lagcomk(3,n))
754 xll(n) = lagcomk(4,n)
756 comntag(lll(n)) = comntag(lll(n))+1
771 2 IN ,AG ,ARG ,VG ,VRG ,
772 3 MSG ,ING ,FR_LAGF,ISIZ ,NBNODL,
773 4 INDEXLAG,NODGLOB ,LLAGF ,NLAGF_L)
777 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
778#include "implicit_f.inc"
782#include "com01_c.inc"
786 INTEGER FR_LAGF(3,*), INDEXLAG(*), NODGLOB(*), LLAGF(*),
789 . a(3,*), ar(3,*), v(3,*), vr(3,*), ms(*), in(*),
790 . ag(3,*), arg(3,*), vg(3,*), vrg(3,*), msg(*), ing(*)
799 indexlag(nodglob(n)) = i
818 indexlag(nodglob(n)) = i
840 1 A ,AR ,AG ,ARG ,FR_LAGF,
841 2 ISIZ ,NBNODL ,LLAGF ,NLAGF_L )
845 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
846#include "implicit_f.inc"
850#include "com01_c.inc"
854 INTEGER (3,*), LLAGF(*),
855 . NBNODL, NLAGF_L, ISIZ
857 . A(3,*), AR(3,*),AG(3,*), ARG(3,*)
885!||====================================================================
893 1 A ,AR ,LLAGF , NLAGF_L, FR_LAGF,
894 2 IAD_ELEM,FR_ELEM,LRBUF , ISIZ )
898 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
899#include "implicit_f.inc"
903 INTEGER NLAGF_L,LRBUF,ISIZ,
904 . fr_lagf(3,*),llagf(*),iad_elem(2,*),fr_elem(*)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_wait(ireq, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
subroutine spmd_sg_fani(rdum1, rdum2, idum1, idum2, idum3, idum4)
subroutine spmd_gg_mult(a, ar, v, vr, ms, in, ag, arg, vg, vrg, msg, ing, fr_lagf, isiz, nbnodl, indexlag, nodglob, llagf, nlagf_l)
subroutine spmd_get_mult(lagcomc, lagcomk, n_mult, bll, iadll, lll, jll, sll, xll, comntag, icftag, jcftag, fr_lagf, n_ik)
subroutine spmd_sg_mult(a, ar, ag, arg, fr_lagf, isiz, nbnodl, llagf, nlagf_l)
subroutine spmd_exch_mult(a, ar, llagf, nlagf_l, fr_lagf, iad_elem, fr_elem, lrbuf, isiz)