licham
C LICHAM SOURCE OF166741 24/10/04 21:15:01 12023 *--------------------------------------------------------------------* * * * LECTURE D'UN NOUVEAU CHAMELEM SUR LE FICHIER IORES. * * * * Parametres: * * * * IORES NUMERO DU FICHIER DE LECTURE * * ITLACC Pile contenant les nouveaux CHAMELEMs * * IMAX1 Nombre de CHAMELEMs dans la pile * * IFORM Si sauvegarde en format ou non * * * * APPELE PAR: LIPIL * * * * Auteur, date de creation: * * Denis ROBERT-MOUGIN, le 29 juin 1989. * *--------------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCFXDR -INC SMCHAML SEGMENT,ITLACC INTEGER ITLAC(0) ENDSEGMENT SEGMENT,MTABE1 INTEGER ITABE1(NM1) ENDSEGMENT SEGMENT,MTABE2 INTEGER ITABE2(NM2) ENDSEGMENT SEGMENT,MTABE4 CHARACTER*(8) ITABE4(NM4) ENDSEGMENT SEGMENT,MTABE5 CHARACTER*(8) ITABE5(NM5) ENDSEGMENT SEGMENT,MTABE6 CHARACTER*(8) ITABE6(NM6) ENDSEGMENT INTEGER IDAN(4) IRETOU=0 NM4=0 NM6=0 NM5=0 * Boucle sur les CHAMELEMs contenus dans la pile: DO 10 IEL=1,IMAX1 MCHELM = 0 * CREATION ET REMPLISSAGE DU SEGMENT MCHELM IF (IRETOU.NE.0) RETURN N1 = IDAN(1) N3LU = IDAN(3) IF (N3LU.GT.6) THEN write(ioimp,*) 'LICHAM : N3 LU > 6 !' ENDIF N3 = MAX(N3LU,6) L1 = IDAN(4) SEGINI MCHELM IFOCHE = IDAN(2) IF (IRETOU.NE.0) RETURN N6 = 3 + N3LU NM1 = N1 * N6 SEGINI,MTABE1 IF (IRETOU.NE.0) RETURN IF (NIVEAU.GE.4) THEN NM5 = N1 * 2 SEGINI,MTABE5 IF (IRETOU.NE.0) RETURN ENDIF if (niveau.ge.15) then nm6=n1 segini mtabe6 endif DO ISOUEL=1,N1 ISOU = N6 * (ISOUEL - 1) IMACHE(ISOUEL) = ITABE1(ISOU+1) N2 = ITABE1(ISOU+3) SEGINI MCHAML ICHAML(ISOUEL)=MCHAML DO IJ=1,N3LU INFCHE(ISOUEL,IJ) = ITABE1(ISOU+3+IJ) ENDDO * Par defaut : support = 1 = aux noeuds IF (N3LU.LT.6) THEN INFCHE(ISOUEL,6) = 1 ELSE ISUPLU = INFCHE(ISOUEL,6) IF (ISUPLU.LT.1 .OR. ISUPLU.GT.9) THEN write(ioimp,*) 'LICHAM : SUPPORT LU inconnu',ISUPLU INFCHE(ISOUEL,6) = 1 ENDIF ENDIF IF (INFCHE(ISOUEL,4).EQ.0) INFCHE(ISOUEL,6) = 1 CONCHE(ISOUEL) = ' ' IF (NIVEAU.GE.4) THEN CONCHE(ISOUEL)(1:8) = ITABE5(2*ISOUEL-1) CONCHE(ISOUEL)(9:16)= ITABE5(2*ISOUEL ) ENDIF if (niveau.ge.15) then conche(isouel)(17:24) =itabe6(isouel) endif ENDDO SEGSUP MTABE1 IF (NIVEAU.GE.4) SEGSUP MTABE5 if (niveau.ge.15) segsup mtabe6 * BOUCLE SUR LES ZONES ELEMENTAIRES DU CHAMELEM : DO ISOUEL=1,N1 MCHAML = ICHAML(ISOUEL) N2 = NOMCHE(/2) NM2 = N2 NM4 = N2*2 SEGINI MTABE2,MTABE4 IF (IRETOU.NE.0) RETURN IF (IRETOU.NE.0) RETURN IF (IRETOU.NE.0) RETURN DO ICO = 1, N2 if (iform.ne.2) then WRITE(TYPCHE(ICO),FMT='(2A8)') ITABE4(2*ICO-1), & ITABE4(2*ICO) else TYPCHE(ICO)(1:8) =ITABE4(2*ICO-1) TYPCHE(ICO)(9:16)=ITABE4(2*ICO ) endif IF (TYPCHE(ICO).EQ.'POINTEUR MLREEL' ) & TYPCHE(ICO)='POINTEURLISTREEL' IF (TYPCHE(ICO).EQ.'POINTEUR MEVOLUT' ) & TYPCHE(ICO)='POINTEUREVOLUTIO' ENDDO SEGSUP MTABE4 * BOUCLE SUR LES COMPOSANTES : DO ICO = 1, N2 IF (ITABE2(ICO).GE.0) THEN *pas de ielval separe IF (IRETOU.NE.0) RETURN N1PTEL = IDAN (1) N1EL = IDAN (2) N2PTEL = IDAN (3) N2EL = IDAN (4) L1 = IDAN(1) * IDAN(2) L2 = IDAN(3) * IDAN(4) SEGINI MELVAL IELVAL(ICO) = MELVAL * LECTURE DU CONTENU DU SEGMENT MELVAL : IF (L1.NE.0) THEN IF (IRETOU.NE.0) RETURN ENDIF IF (L2.NE.0) THEN IF (IRETOU.NE.0) RETURN ENDIF SEGDES MELVAL ELSE * on va pointer sur la pile des ielval. IELVAL(ICO)=ITABE2(ICO) ENDIF ENDDO SEGSUP MTABE2 SEGDES MCHAML ENDDO DO ISOUEL=1,N1 ENDDO SEGDES MCHELM ITLAC(**)=MCHELM 10 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales