C EXAMEL SOURCE CHAT 05/01/12 23:47:55 5004 SUBROUTINE EXAMEL (ICOLAC,ITLACC,M1,M2,IIICHA) C---------------------------------------------------------------------- C C BUT: REMPLIT LES PILES A PARTIR DE L EXAMEN DE LA PILE C SI IIICHA =1 ON CHANGE LES POINTEURS---- C C ENTREE ITLACC POINTEUR DE LA PILE EXAMINEE C ICOLAC POINTEUR SUR LE CHAPEAU DES PILES C M1 @REMIER INDICE D EXAMEN DANS LA PILE C M2 DERNIER INDICE C IIICHA =1 ON CHANGE LES POINTEURS C---------------------------------------------------------------- C APPELE PAR EXPIL C APPELLE AJOUN C C======================================================================= C TABLEAU KCOLA : C 1 MELEME 2 CHPOIN 3 MRIGID 4 MCHAFF 5 MCHELM 6 C 7 8 MSOLUT 9 MSTRUC 10 11 MAFFEC 12 MSOSTU C 13 IMATRI 14 MJONCT 15 MATTAC 16 MMATRI 17 MDEFOR 18 MLREEL C 19 MLENTI 20 MCHARG 21 MODELE 22 MEVOLL 23 MSUPER C======================================================================= C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) logical ooovp1 -INC SMELEME -INC CCOPTIO -INC TMCOLAC -INC SMCOORD SEGMENT ICPR(XCOOR(/1)/(IDIM+1)) ICO1=KCOLA(1) ICO2=KCOLA(32) ILISSE=ILISSG SEGACT ILISSE*MOD ITLAC1=ICO2 SEGINI ICPR IFAIT = ITLAC1.ITLAC(/1) DO 710 IHU=1,IFAIT IAM=ITLAC1.ITLAC(IHU) ICPR(IAM)=IHU 710 CONTINUE DO 601 IEL=M1,M2 MELEME=ITLAC(IEL) C WRITE (IOIMP,8876) MELEME IF (MELEME.EQ.0) GO TO 601 if (.NOT.ooovp1(meleme)) goto 610 C8876 FORMAT(' MELEME',I6) SEGACT MELEME*MOD IF(LISOUS(/1).EQ.0) GO TO 602 IF (LISOUS(/1).LT.0) GOTO 610 DO 603 I=1,LISOUS(/1) IVA=LISOUS(I) if (IIICHA.EQ.1.AND..NOT.ooovp1(iva)) goto 610 CALL AJOUN(ICO1,IVA,ILISSE,1) IF(IIICHA.EQ.1)LISOUS(I)=IVA 603 CONTINUE 602 CONTINUE IF(LISREF(/1).EQ.0) GO TO 645 IF (LISREF(/1).GT.1000) GOTO 610 IF (LISREF(/1).LT.0) GOTO 610 DO 646 I=1,LISREF(/1) IVA=LISREF(I) if (IIICHA.EQ.1.AND..NOT.ooovp1(iva)) goto 610 CALL AJOUN(ICO1,IVA,ILISSE,1) IF(IIICHA.EQ.1)LISREF(I)=IVA 646 CONTINUE 645 CONTINUE IF(NUM(/2).EQ.0) GO TO 660 DO 661 K2=1,NUM(/2) DO 661 K1=1,NUM(/1) IVA=NUM(K1,K2) if (iva.gt.icpr(/1).or.iva.le.0) goto 610 IF(ICPR(IVA).EQ.0) THEN IFAIT = IFAIT + 1 ICPR(IVA)=IFAIT * ITLAC1.ITLAC(**)= IVA * CALL AJOUN(ICO2,IVA,) ENDIF IF(IIICHA.EQ.1) NUM(K1,K2)=ICPR(IVA) 661 CONTINUE 660 CONTINUE SEGDES MELEME GOTO 601 610 continue * meleme invalide. On le supprime de la pile moterr(1:8)='MAILLAGE' interr(1)=itlac(iel) call erreur(861) itlac(iel)=0 601 CONTINUE C# MC IF(IICHA.NE.1) CALL ITLACT (ICPR,ITLAC1,IFAIT) IF(IIICHA.NE.1) CALL ITLACT (ICPR,ITLAC1,IFAIT,ILISSE) SEGSUP ICPR * SEGDES ILISSE RETURN C ************ END