rlexvc
C RLEXVC SOURCE CHAT 05/01/13 03:03:19 5004 C C**** Variables de COOPTIO C C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES C & ,IECHO, IIMPI, IOSPI C & ,IDIM C & ,MCOORD C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU C & ,NORINC,NORVAL,NORIND,NORVAD C & ,NUCROU, IPSAUV C IMPLICIT INTEGER(I-N) INTEGER NSOMM, ICEN, NBSOUS, ISOUS, NBELEM, NBNO, IELEM, INOEU & , NLS1, NGS1, NGC, IPOS, NGC2 C -INC SMELEME INTEGER JG -INC SMLENTI -INC PPARAM -INC CCOPTIO C INTEGER NBL, NBTPOI SEGMENT MLELEM INTEGER INDEX(NBL+1) INTEGER LESPOI(NBTPOI) ENDSEGMENT C POINTEUR MELSOM.MELEME, MELEMM.MELEME, MELCEN.MELEME & ,MLESOM.MLENTI, MTOUC.MLENTI, MLEMAI.MLENTI C C**** Le MELEME SOMMET C C C MLESOM: numerotation globale -> locale C C**** En KRIPAD C SEGACT MELSOM C SEGINI MLESOM C NSOMM = MELSOM.NUM(/2) JG=NSOMM SEGINI MTOUC C MTOUC.LECT(NLS1) = estimation de nombre des centres voisins de C NLS1 SEGACT MELEMM NBSOUS=MELEMM.LISOUS(/1) C NBSOUS=0 fait un peux chier! JG=MAX(NBSOUS,1) SEGINI MLEMAI IF(NBSOUS .EQ. 0)THEN MLEMAI.LECT(1)=MELEMM ELSE DO ISOUS=1,NBSOUS,1 MLEMAI.LECT(ISOUS)=MELEMM.LISOUS(ISOUS) ENDDO ENDIF SEGDES MELEMM C C**** Combien de fois chaque sommet est touché par un centre? C NBSOUS=JG NBTPOI=0 DO ISOUS = 1, NBSOUS, 1 MELEMM=MLEMAI.LECT(ISOUS) SEGACT MELEMM NBELEM=MELEMM.NUM(/2) DO IELEM = 1, NBELEM,1 NGS1 = MELEMM.NUM(INOEU,IELEM) NLS1 = MLESOM.LECT(NGS1) MTOUC.LECT(NLS1)=MTOUC.LECT(NLS1)+1 NBTPOI=NBTPOI+1 ENDDO ENDDO ENDDO C NBL=NSOMM NBTPOI=NBTPOI+NSOMM SEGINI MLELEM C C**** Les sommets dedans MLELEM dans le meme ordre que dedans MLESOM C MLELEM.INDEX(1)=1 DO IELEM=1, NBL, 1 MLELEM.LESPOI(MLELEM.INDEX(IELEM))=MELSOM.NUM(1,IELEM) MLELEM.INDEX(IELEM+1)=MLELEM.INDEX(IELEM)+1+MTOUC.LECT(IELEM) MTOUC.LECT(IELEM)=0 ENDDO C C**** MTOUC.LECT(IELEM)=0 \forall IELEM C ICEN = 0 SEGACT MELCEN DO ISOUS = 1, NBSOUS, 1 MELEMM=MLEMAI.LECT(ISOUS) NBELEM=MELEMM.NUM(/2) DO IELEM = 1, NBELEM,1 ICEN=ICEN+1 NGC=MELCEN.NUM(1,ICEN) NGS1 = MELEMM.NUM(INOEU,IELEM) NLS1 = MLESOM.LECT(NGS1) MTOUC.LECT(NLS1)=MTOUC.LECT(NLS1)+1 IPOS = MLELEM.INDEX(NLS1)+MTOUC.LECT(NLS1) NGC2 = MLELEM.LESPOI(IPOS) IF(NGC2 .NE. 0)THEN WRITE(IOIMP,*) 'Subroutine rlexvc.eso' GOTO 9999 ELSE MLELEM.LESPOI(IPOS)=NGC ENDIF ENDDO ENDDO SEGDES MELEMM ENDDO C SEGDES MLELEM SEGDES MELCEN SEGDES MELSOM SEGSUP MTOUC SEGSUP MLESOM SEGSUP MLEMAI C 9999 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales