49 1 IPARG ,ELBUF_TAB ,FLUX ,FLU1 ,PHI ,
50 2 ALE_CONNECT ,NVAR ,ITASK ,NERCVOIS ,NESDVOIS,
51 3 LERCVOIS ,LESDVOIS ,LENCOM ,SEGVAR ,BHOLE ,
52 4 ITRIMAT ,QMV ,IFLG ,IXS ,IXQ ,
65 USE multimat_param_mod ,
ONLY : m51_nvphas, m51_n0phas
69#include "implicit_f.inc"
75#include "vect01_c.inc"
84 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
86 INTEGER (NPARG,NGROUP),NVAR,ITRIMAT,
87 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*), LESDVOIS(*),
88 . (*),IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ), LENCOM,
91 my_real flux(*), flu1(*) , phi(*) ,
92 . qmv(*) , pm(npropm,nummat), x(3, numnod)
95 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
99 INTEGER NMN, NM, NG, JMUL, , I, J, K, NF1,ISILENT,NFX, IOFF, IMAT
100 INTEGER JCODV(ALE%GLOBAL%LCONV),CODTOT,NGSEG,ISEG,ISOLNOD
103 TYPE(L_BUFEL_) ,
POINTER :: LBUF
104 TYPE(g_bufel_) ,
POINTER :: GBUF
105 TYPE(buf_mat_) ,
POINTER :: MBUF
107 my_real,
DIMENSION(:),
POINTER :: var, prho , pvol , peint, piad22
108 INTEGER :: ICELLv,IB,IBv,NIN,NUM, MCELL, IDX, NDIM
125 DO ng=itask+1,ngroup,nthread
127 IF (iparg(76, ng) == 1) cycle
129 2 mtn ,llt ,nft ,iadr ,ity ,
130 3 npt ,jale ,ismstr ,jeul ,jtur ,
131 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
132 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
133 6 irep ,iint ,igtyp ,israt ,isrot ,
134 7 icsen ,isorth ,isorthg ,ifailure,jsms )
135 isilent = iparg(64,ng)
139 IF (jale+jeul == 0) cycle
140 IF (iparg(8,ng) == 1) cycle
141 IF (
max(1,jmul) < nm) cycle
142 IF (itrimat /= 0 .AND. mtn /= 51) cycle
146 gbuf => elbuf_tab(ng)%GBUF
147 lbuf => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)
148 mbuf => elbuf_tab(ng)%BUFLY(nm)%MAT(1,1,1)
150 CALL varcondec(jcodv,iparg(34,ng),codtot)
151 IF (jcodv(nvar) /= 0)
THEN
152 isolnod = iparg(28,ng)
153 IF (jmul /= 0) mtn =iparg(24+nm,ng)
162 prho => lbuf%RHO(1:llt)
163 pvol => lbuf%VOL(1:llt)
166 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
169 prho => mbuf%VAR(k+1:k+llt)
172 pvol => mbuf%VAR(k+1:k+llt)
175#include "vectorize.inc"
181 prho(i) = prho(i)*pvol(i)
188 ELSEIF (nvar == 2)
THEN
190 peint=> lbuf%EINT(1:llt)
191 pvol => lbuf%VOL(1:llt)
194 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
197 peint=> mbuf%VAR(k+1:k+llt)
200 pvol => mbuf%VAR(k+1:k+llt)
202#include "vectorize.inc"
208 peint(i) = peint(i)*pvol(i)
213 ELSEIF (nvar == 3)
THEN
214#include "vectorize.inc"
220 lbuf%RK(i) = lbuf%RK(i)*lbuf%VOL(i)
224 !----------------------------
225 ELSEIF (nvar == 4)
THEN
226#include "vectorize.inc"
232 lbuf%RE(i) = lbuf%RE(i)*lbuf%VOL(i)
242 ELSEIF (nvar == 5)
THEN
243 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(1:llt)
246#include "vectorize.inc"
249 phi(j) = var(i) * prho(i)
252 var(i) = var(i) * prho(i) * lbuf%VOL(i)
255#include "vectorize.inc"
261 var(i) = var(i)*lbuf%VOL(i)
269 ELSEIF (nvar == 6)
THEN
273 var => gbuf%MOM(1:llt*ndim)
274#include "vectorize.inc"
279 var(k) = var(k) *lbuf%VOL(i)
288 ELSEIF (nvar == 7)
THEN
292 var => gbuf%MOM(1:llt*ndim)
293#include "vectorize.inc"
298 var(k) = var(k) *lbuf%VOL(i)
307 ELSEIF (nvar == 8)
THEN
311 var => gbuf%MOM(1:llt
312#include "vectorize.inc"
317 var(k) = var(k) *lbuf%VOL(i)
321 ELSEIF (nvar == 9 .AND. isilent == 1)
THEN
322 ELSEIF (nvar == 10 .AND. isilent == 1)
THEN
328#include "vectorize.inc"
332 phi(j)=pm(180+nvar,imat)*lbuf%RHO(i)
338#include "vectorize.inc"
342 phi(j)=pm(180+nvar,imat)*lbuf%RHO
359 piad22 => elbuf_tab(ng)%GBUF%TAG22(lft:llt)
369 icellv =
brick_list(nin,ib)%SecndList%ICELLv(k)
383 ioff = numels+numelq+numeltg
388 IF(nsegflu-ngseg*nvsiz > 0)ngseg=ngseg+1
389 DO i=itask+1,ngseg,nthread
395 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
396 phi(ioff+j)=segvar%RHO(j)
399 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
400 phi(ioff+j)=segvar%PHASE_RHO(itrimat,j)
406 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
407 phi(ioff+j)=segvar%EINT(j)
410 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
411 phi(ioff+j)=segvar%PHASE_EINT(itrimat,j)
416 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
417 phi(ioff+j)=segvar%RK(j)
421 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
422 phi(ioff+j)=segvar%RE(j)
426 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
427 phi(ioff+j)=segvar%UVAR(j)
440 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois, lesdvois,lencom )
450 IF(debug(10) /= 0)
THEN
451 IF(ncycle >= debug(10))
THEN
464 nf1=nft+1+(nm-1)*numels
465 nfx=nft+(nm-1)*numels
469 3 itrimat , nvar , itask ,
470 4 elbuf_tab, ixs , iparg)
473 DO ng=itask+1,ngroup,nthread
475 IF (iparg(76, ng) == 1) cycle
476 CALL varcondec(jcodv,iparg(34,ng),codtot)
477 IF (jcodv(nvar) == 0) cycle
479 2 mtn ,llt ,nft ,iadr ,ity ,
480 3 npt ,jale ,ismstr ,jeul ,jtur ,
481 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
482 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
483 6 irep ,iint ,igtyp ,israt ,isrot ,
484 7 icsen ,isorth ,isorthg ,ifailure,jsms )
485 isilent = iparg(64,ng)
486 IF (isilent == 1) cycle
487 IF (iparg(8,ng) == 1) cycle
488 IF (
max(1,jmul) < nm) cycle
489 IF (itrimat /= 0 .AND. mtn /= 51) cycle
491 isolnod = iparg(28,ng)
494 ! pointers from current group
496 gbuf => elbuf_tab(ng)%GBUF
497 lbuf => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)
498 mbuf => elbuf_tab(ng)%BUFLY(nm)%MAT(1,1,1)
510 prho => lbuf%RHO(1:llt)
513 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
516 prho => mbuf%VAR(k+1:k+llt)
522 ELSEIF (nvar == 2)
THEN
524 peint=> lbuf%EINT(1:llt)
527 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
530 peint => mbuf%VAR(k+1:k+llt)
536 ELSEIF (nvar == 3)
THEN
537 var => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)%RK(1:llt)
541 ELSEIF (nvar == 4)
THEN
542 var => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)%RE(1:llt)
546 ELSEIF (nvar == 5)
THEN
547 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(1:llt)
551 ELSEIF (nvar == 6)
THEN
553 IF (mtn == 51 .AND. itrimat /= 0)
THEN
554 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(5*llt+1:6*llt)
556 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(llt+1:2*llt)
559 var => elbuf_tab(ng)%GBUF%MOM( 1 : llt )
564 ELSEIF (nvar == 7)
THEN
566 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(2*llt+1:3*llt)
568 var => elbuf_tab(ng)%GBUF%MOM( llt*1+1 : llt*1+llt )
573 ELSEIF (nvar == 8)
THEN
577 var => elbuf_tab(ng)%GBUF%MOM( llt*2+1 : llt*2+llt )
582 ELSEIF (nvar == 9)
THEN
583 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(4*llt+1:5*llt)
589 piad22 => elbuf_tab(ng)%GBUF%TAG22
591 nf1=nft+1+(nm-1)*numels
592 nfx=nft+(nm-1)*numels
593 pvol => lbuf%VOL(1:llt)
594 IF (isolnod /= 4)
THEN
596 1 var , phi ,flux(6*nfx+1), flu1(nf1) ,ixs ,
597 2 ale_connect , ioff ,qmv(12*nfx+1), iflg ,
598 3 piad22 , nvar ,itask)
601 1 var ,phi,flux(6*nfx+1),flu1(nf1),
602 2 ale_connect ,ioff )
608 nf1=nft+1+(nm-1)*numelq
609 nfx=nft+(nm-1)*numelq
611 CALL aconv2(var ,phi ,flux(4*nfx+1),flu1(nf1),
612 . ale_connect ,qmv(8*nfx+1),iflg ,ixq ,
615 CALL bconv2(var, phi, flux(4*nfx+1), flu1(nf1), ale_connect ,bhole ,nm)