chanl2
C CHANL2 SOURCE GOUNAND 24/10/08 21:15:02 12025 SUBROUTINE CHANL2(IPT1,IPT2) * * ce sub fait passer tous les elemnts quadratique en lineaire, * il conserve le nombre d'elements * modif SG 01/2014 : passage des QUAFs aux linéaires IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMELEME logical ltelq SEGMENT INOO INTEGER INOU(NA) ENDSEGMENT MELEME=IPT1 NBNN= NUM(/1) NBELEM=NUM(/2) NBSOUS=LISOUS(/1) NBREF=0 NA= MAX(NBSOUS,1) SEGINI INOO DO 100 I=1,MAX(IPT1.LISOUS(/1),1) IF( IPT1.LISOUS(/1).NE.0) THEN MELEME=IPT1.LISOUS(I) ENDIF NBELEM=NUM(/2) NBSOUS=0 NBREF=0 IF( ITYPEL.EQ.3)THEN * cas des seg3 ---> seg2 NBNN=2 SEGINI IPT2 IPT2.ITYPEL=2 INOU(I) = IPT2 DO 1 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.ICOLOR(K)=ICOLOR(K) 1 CONTINUE ELSEIF( ITYPEL.EQ.6. OR. ITYPEL.EQ.7) THEN * cas des tri6,tri7 ---> tri3 NBNN=3 SEGINI IPT2 IPT2.ITYPEL=4 INOU(I) = IPT2 DO 2 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(5,K) IPT2.ICOLOR(K)=ICOLOR(K) 2 CONTINUE ELSEIF( ITYPEL.EQ.10 . OR. ITYPEL.EQ.11) THEN * cas des qua8,qua9-----> qua4 NBNN=4 SEGINI IPT2 IPT2.ITYPEL=8 INOU(I) = IPT2 DO 3 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(5,K) IPT2.NUM(4,K)=NUM(7,K) IPT2.ICOLOR(K)=ICOLOR(K) 3 CONTINUE ELSEIF( ITYPEL.EQ.13) THEN *4 cas des rac3 ---> rac2 NBNN=4 SEGINI IPT2 IPT2.ITYPEL=12 INOU(I) = IPT2 DO 4 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(4,K) IPT2.NUM(4,K)=NUM(6,K) IPT2.ICOLOR(K)=ICOLOR(K) 4 CONTINUE ELSEIF( ITYPEL.EQ.15.OR.ITYPEL.EQ.33) THEN *5 cas des cu20, cu27 ---> cub8 NBNN=8 SEGINI IPT2 IPT2.ITYPEL=14 INOU(I) = IPT2 DO 5 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(5,K) IPT2.NUM(4,K)=NUM(7,K) IPT2.NUM(5,K)=NUM(13,K) IPT2.NUM(6,K)=NUM(15,K) IPT2.NUM(7,K)=NUM(17,K) IPT2.NUM(8,K)=NUM(19,K) IPT2.ICOLOR(K)=ICOLOR(K) 5 CONTINUE ELSEIF( ITYPEL.EQ.17.OR.ITYPEL.EQ.34) THEN *6 cas des pr15, pr21 ---> pri6 NBNN=6 SEGINI IPT2 IPT2.ITYPEL=16 INOU(I) = IPT2 DO 6 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(5,K) IPT2.NUM(4,K)=NUM(10,K) IPT2.NUM(5,K)=NUM(12,K) IPT2.NUM(6,K)=NUM(14,K) IPT2.ICOLOR(K)=ICOLOR(K) 6 CONTINUE ELSEIF( ITYPEL.EQ.20. OR. itypel.eq.21) THEN *7 cas des lia6,lia8 ---> lia3,lia4 NBNN=6 IF(ITYPEL.EQ.21) NBNN=8 SEGINI IPT2 IPT2.ITYPEL=18 IF(ITYPEL.EQ.21)IPT2.ITYPEL=19 INOU(I) = IPT2 DO 7 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(5,K) IPT2.NUM(4,K)=NUM(7,K) IPT2.NUM(5,K)=NUM(9,K) IPT2.NUM(6,K)=NUM(11,K) IPT2.ICOLOR(K)=ICOLOR(K) IF( ITYPEL.EQ.21) THEN IPT2.NUM(7,K)=NUM(13,K) IPT2.NUM(8,K)=NUM(15,K) ENDIF 7 CONTINUE SEGDES IPT2 ELSEIF( ITYPEL.EQ.24.OR.ITYPEL.EQ.35) THEN *8 cas des te10, te15 ---> te4 NBNN=4 SEGINI IPT2 IPT2.ITYPEL=23 INOU(I) = IPT2 DO 8 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(5,K) IPT2.NUM(4,K)=NUM(10,K) IPT2.ICOLOR(K)=ICOLOR(K) 8 CONTINUE SEGDES IPT2 ELSEIF( ITYPEL.EQ.26.OR.ITYPEL.EQ.36) THEN *9 cas des py13, py19 ---> pyr5 NBNN=5 SEGINI IPT2 IPT2.ITYPEL=25 INOU(I) = IPT2 DO 9 K=1,NBELEM IPT2.NUM(1,K)=NUM(1,K) IPT2.NUM(2,K)=NUM(3,K) IPT2.NUM(3,K)=NUM(5,K) IPT2.NUM(4,K)=NUM(7,K) IPT2.NUM(5,K)=NUM(13,K) IPT2.ICOLOR(K)=ICOLOR(K) 9 CONTINUE ELSE *tous les autres elements : on engrange INOU(I) = MELEME ENDIF 100 CONTINUE * on fusionne les sous parties II=INOU(/1) IRETOU=INOU(1) IF(II.EQ.1) GO TO 15 DO 16 J=2,II INN=INOU(J) ltelq=.false. IRETOU=IPT5 16 CONTINUE 15 CONTINUE IPT2=IRETOU RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales