elftr2
C ELFTR2 SOURCE CHAT 05/01/12 23:32:48 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C C ==================================================================== C = APPELE PAR ELFE = C = REGROUPEMENT DES JONCTIONS RELIEES PAR DES ELEMENTS RIGIDES EN = C = UNE SEULE = C = CREATION : 22/07/87 = C = PROGRAMMEUR : GUILBAUD = C ==================================================================== C -INC PPARAM -INC CCOPTIO -INC SMATTAC C SEGMENT MNREFE INTEGER NREFE(8,NSTR) INTEGER NTANBN INTEGER NIDNCN INTEGER NTVN POINTEUR NREPA.MPASS POINTEUR NRECA.MCARA POINTEUR NRENO.MNORM POINTEUR NRECPR.ICPR POINTEUR NREMEL.MELEME POINTEUR NREDEN.MDEN ENDSEGMENT C C NSTR : NOMBRE D'ELEMENTS C NREFE(1,I) : MELEME C NREFE(2,I) : MSOSTU C NREFE(3,I) : TYPE DE L'ELEMENT C NREFE(4,I) : NOMBRE DE POINTS DU MELEME C NREFE(5,I) : NOMBRE DE DDL PAR POINT C NREFE(6,I)=IVN :LE 1ER DDL DE L'ELEMENT EST LE IVN+1 IEME DE VN C NREFE(7,I)=IAN :LE 1ER TERME DE LA MATRICE A EST LE IAN IEME DE ANBN C NREFE(8,I)= 1 :LE IEME ELEMENT EST RIGIDE (OU PARTIELLEMENT) SINON 0 C NTANBN : NOMBRE DE TERMES DES MATRICES A ET B POUR TOUS LES ELEMENTS C NIDNCN : NOMBRE TOTAL D'INCONNUES DE DNCN C NTVN : LONGUEUR DU TABLEAU VN C SEGMENT /JTRAI/(ITRAI(NN)) SEGMENT /JTRAL/(ITRAL(NSOUMA)) SEGMENT /JDEJL/(IDEJL(NSOUMA)) SEGMENT /JDEJA/(IDEJA(NN)) SEGMENT /JTRAV/(ITRAV(NN)) C WRITE(IOIMP,*) ' DEBUT DE ELFTR2 ' C MNREFE=KNREFE NSTR=NREFE(/2) NN=NSTR SEGINI JTRAV NN=0 DO 10 N=1,NSTR IF(NREFE(8,N).EQ.1) THEN NN=NN+1 ITRAV(NN)=NREFE(2,N) ENDIF 10 CONTINUE IF(NN.EQ.0) THEN SEGSUP JTRAV RETURN ENDIF SEGADJ JTRAV SEGINI JDEJA SEGINI JTRAI DO 9 I=1,NN IDEJA(I)=0 9 CONTINUE SEGACT MATTAC NSOUMA=LISATT(/1) SEGINI JDEJL,JTRAL DO 11 I=1,NSOUMA IDEJL(I)=0 11 CONTINUE N=NSOUMA SEGINI MATTA1 C C BOUCLE SUR LES ELEMENTS RIGIDES C NKK=0 DO 130 NE=1,NN IF(IDEJA(NE).EQ.0) THEN WRITE(IOIMP,*) ' ELEMENT RIGIDE NE = ',NE NI1=1 ITRAI(NI1)=NE NLL=0 NL1=1 IDEJA(NE)=1 15 CONTINUE C C 1 - RECHERCHE DE TOUTES LES NOUVELLES LIAISONS QUI S'APPUIENT SUR C LES DERNIERS ELEMENTS RIGIDES TROUVES C MSOST1=ITRAV(NK) IDEJA(NK)=1 DO 40 NSOU=1,NSOUMA IF(IDEJL(NSOU).EQ.0) THEN MSOUMA=LISATT(NSOU) SEGACT MSOUMA NJON=IATREL(/1) DO 30 NJ=1,NJON MJONCT=IATREL(NJ) SEGACT MJONCT NTJ=ISTRJO(/1) DO 20 J=1,NTJ MSOSTU=ISTRJO(J) IF(MSOSTU.EQ.MSOST1) THEN NLL=NLL+1 ITRAL(NLL)=NSOU SEGDES MJONCT,MSOUMA IDEJL(NSOU)=1 GOTO 40 ENDIF 20 CONTINUE SEGDES MJONCT 30 CONTINUE SEGDES MSOUMA ENDIF 40 CONTINUE 60 CONTINUE WRITE(IOIMP,*) ' ITRAL ',(ITRAL(NLLL),NLLL=1,NLL) WRITE(IOIMP,*) ' IDEJA ',(IDEJA(NLLL),NLLL=1,NN) C C 2 - RECHERCHE DE TOUS LES NOUVEAUX ELEMENTS RIGIDES SUR LESQUELS C S'APPUIENT LES DERNIERES LIAISONS TROUVEES C DO 100 NL=NL1,NLL NSOU=ITRAL(NL) MSOUMA=LISATT(NSOU) SEGACT MSOUMA NJON=IATREL(/1) DO 90 NJ=1,NJON MJONCT=IATREL(NJ) SEGACT MJONCT NTJ=ISTRJO(/1) DO 80 J=1,NTJ MSOSTU=ISTRJO(J) DO 70 KK=1,NN IF(IDEJA(KK).EQ.0.AND.MSOSTU.EQ.ITRAV(KK)) THEN IDEJA(KK)=1 GOTO 80 ENDIF 70 CONTINUE 80 CONTINUE SEGDES MJONCT 90 CONTINUE SEGDES MSOUMA C IDEJL(NSOU)=1 100 CONTINUE WRITE(IOIMP,*) ' NL1 NLL ',NL1,NLL WRITE(IOIMP,*) ' IDEJL ',(IDEJL(NLLL),NLLL=1,NSOUMA) NL1=NLL+1 M=0 N=0 SEGINI MSOUM1 MSOUM1.IGEOCH=0 MSOUM1.IPHYCH=0 MSOUM1.ITYATT='MECA' NJJ=0 DO 120 NL=1,NLL NSOU=ITRAL(NL) MSOUMA=LISATT(NSOU) SEGACT MSOUMA NJON=IATREL(/1) N=NJJ+NJON SEGADJ MSOUM1 DO 110 NJ=1,NJON NJJ=NJJ+1 MSOUM1.IATREL(NJJ)=IATREL(NJ) 110 CONTINUE SEGSUP MSOUMA 120 CONTINUE SEGDES MSOUM1 NKK=NKK+1 MATTA1.LISATT(NKK)=MSOUM1 ENDIF 130 CONTINUE DO 140 NSOU=1,NSOUMA IF(IDEJL(NSOU).EQ.0) THEN NKK=NKK+1 MATTA1.LISATT(NKK)=LISATT(NSOU) ENDIF 140 CONTINUE N=NKK SEGADJ MATTA1 SEGSUP MATTAC,JTRAL,JDEJL,JDEJA,JTRAV,JTRAI MATTAC=MATTA1 C IF(IIMPI.EQ.1) THEN WRITE(IOIMP,105) MATTAC 105 FORMAT(/,10X,' CREATION DE L''OBJET ATTACHE ',I4///) NATTA=LISATT(/1) WRITE(IOIMP,101) 101 FORMAT(10X,28('*')) WRITE(IOIMP,102) 102 FORMAT(10X,'* MSOUMA * ITYATT * IATREL *') WRITE(IOIMP,101) DO 160 IL=1,NATTA MSOUMA=LISATT(IL) SEGACT MSOUMA WRITE(IOIMP,103) MSOUMA,ITYATT,IATREL(1) 103 FORMAT(10X,'* ',I4,' * ',A4,' * ',I4,' * ') NRELA=IATREL(/1) DO 150 IN=2,NRELA WRITE(IOIMP,104) IATREL(IN) 104 FORMAT(10X,2('* '),'* ',I4,' *') 150 CONTINUE SEGDES MSOUMA WRITE(IOIMP,101) 160 CONTINUE ENDIF SEGDES MATTAC WRITE(IOIMP,*) ' FIN DE ELFTR2 ' RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales