C CHOLE3I SOURCE PV 20/09/26 21:15:32 10724 C C interface avec chole3 qui peut être appelee en parallele C pour un ensemble de ligne ligne en stockage complet, effectue les operations C avec les lignes superieures lig1 qui sont en stockage compact C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC SMMATRI -INC CCHOLE SEGMENT IMASQ(LMASQ) SEGMENT ITMASQ(NBLIG) segment immt(nblig) POINTEUR LILIGN.MILIGN nbo=nbop(ithr) C write (6,*) ' ith dans chole3i ',ith ** ic=-1 C write (6,*) ' dans chole3i il1 il2 iper ider',il1,il2,iper,ider ngmaxl=ngmaxx/4 do 100 jbib=il2,il1,-nbthr ** ic=mod(ic+1,nbthr) ** ithrm=(ithr+1)/2 +mod(ithr+1,2)*(nbthr+1)/2 ** jbi=jbib-mod(ithrm+ic-1,nbthr) jbi=jbib-ithr+1 if (jbi.gt.il2) goto 100 if (jbi.lt.il1) goto 100 * blocage tertiaire en rondelles im=immt(jbi) if (im.gt.ider) then goto 100 endif imasq=itmasq(jbi) lpl=ippvv(2)-ippvv(1) kidepb=iprel-lpl na=immm(/1) im=ipno(immm(1)) ngm=ngmaxl/na * ici faire le decoupage de la ligne en rondelles iperi=iper iprelj=lcara(2,jbi) iderlj=lcara(3,jbi) do 300 irondh=1,lpl,ngm irondi=irondh irondf=min(lpl,irondi+ngm-1) if (irondi.eq.1) irondi=-kidepb-1 ivpm=ivpo(1) kidep=kidepb+ivpm do 10 ip=max(im,iperi),ider C kidep nous donne le dernier terme non nul avant le terme courant de la ligne lign C lig1.iml (lcara(1 ) est le premier terme de lig1 ippr=lcara(2,ip) iddr=lcara(3,ip) * test si la ligne touche la rondelle if (iddr.lt.irondh+kidepb) then iperi=ip goto 10 endif if (lcara(1,ip).gt.irondf+kidepb) goto 10 lig1=LILIGN.ilign(ip) irondj=irondi ivd=1 if (kidep.lt.lcara(1,ip)) then mdeb=ippr-kidepb 13 continue * test si la rondelle est non nulle do ima=max(irondi,mdeb)/masdim+1 , > min(iddr-kidepb,irondf+na)/masdim+1 if (imasq(ima).gt.0) then ** ivd est le premier terme non nul de la rondelle imam=(ima-1)*masdim ivd=max(ivd,imam) irondj=max(irondi,imam) goto 12 elseif ((-imasq(ima))/masdim+1.gt.ima+7) then mdeb=-imasq(ima) goto 13 endif enddo goto 10 12 continue endif ** write (6,*) 'chole3 jbi ip',jbi,ip > LIG1.IPPVV(1),VAL(1),LIG1.VAL(1),LIG1.IVPO(1), > imasq(1),nbo,irondj,irondf,ivd) ivpm=ivpo(1) kidep=kidepb+ivpm 10 continue 300 continue 100 continue nbop(ithr)=nbo end
© Cast3M 2003 - Tous droits réservés.
Mentions légales