50 1 IPARG ,ELBUF_TAB ,FLUX ,FLU1 ,PHI ,
51 2 ALE_CONNECT ,NVAR ,ITASK ,NERCVOIS ,NESDVOIS,
52 3 LERCVOIS ,LESDVOIS ,LENCOM ,SEGVAR ,BHOLE ,
53 4 ITRIMAT ,QMV ,IFLG ,IXS ,IXQ ,
66 USE multimat_param_mod ,
ONLY : m51_nvphas, m51_n0phas
67 use element_mod ,
only : nixs,nixq
71#include "implicit_f.inc"
77#include "vect01_c.inc"
86 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
88 INTEGER IPARG(NPARG,NGROUP),NVAR,ITRIMAT,
89 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*), LESDVOIS(*),
90 . BHOLE(*),IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ), LENCOM,
93 my_real flux(*), flu1(*) , phi(*) ,
94 . qmv(*) , pm(npropm,nummat), x(3, numnod)
97 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
101 INTEGER NMN, NM, NG, JMUL, IADR, I, J, K, NF1,ISILENT,NFX, IOFF, IMAT
102 INTEGER JCODV(ALE%GLOBAL%LCONV),CODTOT,NGSEG,ISEG,ISOLNOD
105 TYPE(L_BUFEL_) ,
POINTER :: LBUF
106 TYPE(g_bufel_) ,
POINTER :: GBUF
107 TYPE(buf_mat_) ,
POINTER :: MBUF
109 my_real,
DIMENSION(:),
POINTER :: var, prho
110 INTEGER :: ICELLv,IB,IBv,NIN,NUM, , IDX, NDIM
127 DO ng=itask+1,ngroup,nthread
129 IF (iparg(76, ng) == 1) cycle
131 2 mtn ,llt ,nft ,iadr ,ity ,
132 3 npt ,jale ,ismstr ,jeul ,jtur ,
133 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
134 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
135 6 irep ,iint ,igtyp ,israt ,isrot ,
136 7 icsen ,isorth ,isorthg ,ifailure,jsms )
137 isilent = iparg(64,ng)
141 IF (jale+jeul == 0) cycle
142 IF (iparg(8,ng) == 1) cycle
143 IF (
max(1,jmul) < nm) cycle
144 IF (itrimat /= 0 .AND. mtn /= 51) cycle
148 gbuf => elbuf_tab(ng)%GBUF
149 lbuf => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)
150 mbuf => elbuf_tab(ng)%BUFLY(nm)%MAT(1,1,1)
153 IF (jcodv(nvar) /= 0)
THEN
154 isolnod = iparg(28,ng)
155 IF (jmul /= 0) mtn =iparg(24+nm,ng)
164 prho => lbuf%RHO(1:llt)
165 pvol => lbuf%VOL(1:llt)
168 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
171 prho => mbuf%VAR(k+1:k+llt)
174 pvol => mbuf%VAR(k+1:k+llt)
177#include "vectorize.inc"
190 ELSEIF (nvar == 2)
THEN
192 peint=> lbuf%EINT(1:llt)
193 pvol => lbuf%VOL(1:llt)
196 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
199 peint=> mbuf%VAR(k+1:k+llt)
202 pvol => mbuf%VAR(k+1:k+llt)
204#include "vectorize.inc"
210 peint(i) = peint(i)*pvol(i)
215 ELSEIF (nvar == 3)
THEN
216#include "vectorize.inc"
222 lbuf%RK(i) = lbuf%RK(i)*lbuf%VOL(i)
227 ELSEIF (nvar == 4)
THEN
228#include "vectorize.inc"
234 lbuf%RE(i) = lbuf%RE(i)*lbuf%VOL(i)
244 ELSEIF (nvar == 5)
THEN
245 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(1:llt)
248#include
"vectorize.inc"
251 phi(j) = var(i) * prho(i)
254 var(i) = var(i) * prho(i) * lbuf%VOL(i)
257#include "vectorize.inc"
263 var(i) = var(i)*lbuf%VOL(i)
271 ELSEIF (nvar == 6)
THEN
275 var => gbuf%MOM(1:llt*ndim)
276#include "vectorize.inc"
281 var(k) = var(k) *lbuf%VOL(i)
290 ELSEIF (nvar == 7)
THEN
294 var => gbuf%MOM(1:llt*ndim)
295#include "vectorize.inc"
300 var(k) = var(k) *lbuf%VOL(i)
309 ELSEIF (nvar == 8)
THEN
313 var => gbuf%MOM(1:llt*ndim)
314#include "vectorize.inc"
319 var(k) = var(k) *lbuf%VOL(i)
323 ELSEIF (nvar == 9 .AND. isilent == 1)
THEN
324 ELSEIF (nvar == 10 .AND. isilent == 1)
THEN
330#include "vectorize.inc"
334 phi(j)=pm(180+nvar,imat)*lbuf%RHO(i)
340#include "vectorize.inc"
344 phi(j)=pm(180+nvar,imat)*lbuf%RHO(i)
361 piad22 => elbuf_tab(ng)%GBUF%TAG22(1:)
371 icellv =
brick_list(nin,ib)%SecndList%ICELLv(k)
385 ioff = numels+numelq+numeltg
390 IF(nsegflu-ngseg*nvsiz > 0)ngseg=ngseg+1
391 DO i=itask+1,ngseg,nthread
397 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
398 phi(ioff+j)=segvar%RHO(j)
401 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
402 phi(ioff+j)=segvar%PHASE_RHO(itrimat,j)
408 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
409 phi(ioff+j)=segvar%EINT(j)
412 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
413 phi(ioff+j)=segvar%PHASE_EINT(itrimat,j)
418 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
419 phi(ioff+j)=segvar%RK(j)
423 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
424 phi(ioff+j)=segvar%RE(j)
428 DO j=iseg+1,
min(iseg+nvsiz,nsegflu)
429 phi(ioff+j)=segvar%UVAR(j)
442 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois, lesdvois,lencom )
452 IF(debug(10) /= 0)
THEN
453 IF(ncycle >= debug(10))
THEN
466 nf1=nft+1+(nm-1)*numels
467 nfx=nft+(nm-1)*numels
471 3 itrimat , nvar , itask ,
472 4 elbuf_tab, ixs , iparg)
475 DO ng=itask+1,ngroup,nthread
477 IF (iparg(76, ng) == 1) cycle
478 CALL varcondec(jcodv,iparg(34,ng),codtot)
479 IF (jcodv(nvar) == 0) cycle
481 2 mtn ,llt ,nft ,iadr ,ity ,
482 3 npt ,jale ,ismstr ,jeul ,jtur ,
483 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
484 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
485 6 irep ,iint ,igtyp ,israt ,isrot ,
486 7 icsen ,isorth ,isorthg ,ifailure,jsms )
487 isilent = iparg(64,ng)
488 IF (isilent == 1) cycle
489 IF (iparg(8,ng) == 1) cycle
490 IF (
max(1,jmul) < nm) cycle
491 IF (itrimat /= 0 .AND. mtn /= 51) cycle
493 isolnod = iparg(28,ng)
498 gbuf => elbuf_tab(ng)%GBUF
499 lbuf => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)
500 mbuf => elbuf_tab(ng)%BUFLY(nm)%MAT(1,1,1)
512 prho => lbuf%RHO(1:llt)
515 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
518 prho => mbuf%VAR(k+1:k+llt)
524 ELSEIF (nvar == 2)
THEN
526 peint=> lbuf%EINT(1:llt)
529 add0 = m51_n0phas + (itrimat-1)*m51_nvphas
532 peint => mbuf%VAR(k+1:k+llt)
538 ELSEIF (nvar == 3)
THEN
539 var => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)%RK(1:llt)
543 ELSEIF (nvar == 4)
THEN
544 var => elbuf_tab(ng)%BUFLY(nm)%LBUF(1,1,1)%RE(1:llt)
548 ELSEIF (nvar == 5)
THEN
549 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(1:llt)
553 ELSEIF (nvar == 6)
THEN
555 IF (mtn == 51 .AND. itrimat /= 0)
THEN
556 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(5*llt+1:6*llt)
558 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(llt+1:2*llt)
561 var => elbuf_tab(ng)%GBUF%MOM( 1 : llt )
566 ELSEIF (nvar == 7)
THEN
568 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(2*llt+1:3*llt)
570 var => elbuf_tab(ng)%GBUF%MOM( llt*1+1 : llt*1+llt )
575 ELSEIF (nvar == 8)
THEN
577 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(3*llt+1:4*llt)
579 var => elbuf_tab(ng)%GBUF%MOM( llt*2+1 : llt*2+llt )
584 ELSEIF (nvar == 9)
THEN
585 var => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR(4*llt+1:5*llt)
591 piad22 => elbuf_tab(ng)%GBUF%TAG22(1:)
593 nf1=nft+1+(nm-1)*numels
594 nfx=nft+(nm-1)*numels
595 pvol => lbuf%VOL(1:llt)
596 IF (isolnod /= 4)
THEN
598 1 var , phi ,flux(6*nfx+1), flu1(nf1) ,ixs ,
599 2 ale_connect , ioff ,qmv(12*nfx+1), iflg ,
600 3 piad22 , nvar ,itask)
603 1 var ,phi,flux(6*nfx+1),flu1(nf1),
604 2 ale_connect ,ioff )
610 nf1=nft+1+(nm-1)*numelq
611 nfx=nft+(nm-1)*numelq
613 CALL aconv2(var ,phi ,flux(4*nfx+1),flu1(nf1),
614 . ale_connect ,qmv(8*nfx+1),iflg ,ixq ,
617 CALL bconv2(var, phi, flux(4*nfx+1), flu1(nf1), ale_connect ,bhole ,nm)