rglili
C RGLILI SOURCE FANDEUR 22/01/03 21:15:42 11237 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C======================================================================= C CE SUBROUTINE CALCULE POUR LES SOLUTIONS STATIQUES ISOLS DE TYPE : C 1-MECA OU FLUI C LES RIGIDITES DE COUPLAGE DES LIAISONS ENTRE ELLES (FORMALISME GIBERT) C DE SOUS TYPE MASSE SI IRIG=1, DE SOUS TYPE RIGIDITE SI IRIG=2 C ECRIT PAR FARVACQUE C 2-DEPI C UNE MATRICE DE RIGIDITE NULLE ET UNE MATRICE DE MASSE IDENTITE C (FORMALISME DEPLACEMENTS IMPOSES SUR MODES BLOQUES POUR DEVO) C ECRIT PAR GUILBAUD C C ELLES S'APPUIENT SUR L ELEMENT QUI CONTIENT TOUS LES POINTS ASSOCIES C AUX LIAISONS MJONCT. C C APPELE PAR RIGI,RGBASE C APPELLE : ETALPR,MUCPRI,ETALCH,YTMX,ERREUR(235,108) C======================================================================= -INC PPARAM -INC CCOPTIO -INC SMSOLUT -INC SMRIGID -INC SMATTAC -INC SMELEME -INC SMSTRUC -INC CCHAMP SEGMENT ICPR(nbpts) SEGMENT IINC CHARACTER*(LOCOMP) CIINC(0) ENDSEGMENT SEGMENT IIDU CHARACTER*(LOCOMP) CIIDU(NNI1) ENDSEGMENT SEGMENT ITRMEC(NJONC) SEGMENT ITRDEP(NJONC) SEGMENT ITRAV(6) SEGMENT/MVA/(VA(NNI1,IPR1)*D),MVA1.MVA SEGMENT/ICONTR/(MCONTR(NNI1,IPR1)) SEGMENT IPB(IPR1) DATA KZERO/0/ CHARACTER*(LOCOMP) IDDL C IRET=0 IF(IRIG.NE.1.AND.IRIG.NE.2) GOTO 8000 MSOSTU=ISTRU MSOLUT=ISOLS SEGACT MSOLUT NIPO=MSOLIS(/1) KJONC=MSOLIS(10) KDEPL=MSOLIS(5) IF(KDEPL.NE.0) GO TO 12 MOTERR(1:8)='SOLUTION' MOTERR(9:26)='SOLUTION' MOTERR(30:38)='DEPL' SEGDES MSOLUT C ON NE TROUVE PAS LES DEPL GO TO 8000 12 CONTINUE SEGDES MSOLUT MSOLE1=KJONC SEGACT MSOLE1 NJONC=MSOLE1.ISOLEN(/1) SEGDES MSOLE1 IF(NJONC.EQ.0) GO TO 8000 C SEGINI ITRMEC,ITRDEP SEGACT MSOLE1 NJOMEC=0 NJODEP=0 DO 20 I=1,NJONC MJONCT=MSOLE1.ISOLEN(I) SEGACT MJONCT IF(MJOTYP.EQ.'MECA'.OR.MJOTYP.EQ.'FLUI') THEN NJOMEC=NJOMEC+1 ITRMEC(NJOMEC)=I ELSEIF(MJOTYP.EQ.'DEPI'.AND.IRIG.EQ.1) THEN NJODEP=NJODEP+1 ITRDEP(NJODEP)=I ENDIF SEGDES MJONCT 20 CONTINUE SEGDES MSOLE1 IF(NJOMEC.EQ.0.AND.NJODEP.EQ.0) GOTO 7000 IF(NJOMEC.EQ.0) GO TO 5000 C C **** INITIALISATION DE LA GEOMETRIE(1 ELEMENT QUI CONTIENT TOUS LES C **** POINT-LIAISONS) ET DE LA MATRICE ASSOCIEE XMATRI C **** INITIALISATION DE IMATRI ET DE DESCR C NJONC=NJOMEC LVAL=NJONC*(NJONC+1)/2 NLIGRP=NJONC NLIGRD=NJONC nelrig=1 SEGINI XMATRI * NLIGRE=NJONC SEGINI DESCR NELRIG=1 * SEGINI IMATRI * IMATTT(1)=XMATRI * SEGDES IMATRI SEGACT MSOLUT IPT1=MSOLIS(3) SEGACT IPT1 NBSOUS=0 NBREF=0 NBNN=NJONC NBELEM=1 SEGINI MELEME ITYPEL=27 MSOLEN=KDEPL C C **** PREPARATION DES OPERATIONS : A IPM ON DONNE LA FORME RECTANGLE C SEGACT MSOLEN IPM=ISOLEN(1) ICONTR=KCONTR SEGACT ICONTR IPR1=MCONTR(/2) NNI1=MCONTR(/1) SEGINI MVA KMVA=MVA SEGINI MVA KMVB=MVA SEGINI IPB KIPB=IPB IINC=KIINC SEGACT IINC SEGINI IIDU DO 50 I=1,NNI1 IDDL=CIINC(I) DO 51 J=1,LNOMDD IF(IDDL.NE.NOMDD(J)) GOTO 51 CIIDU(I)=NOMDU(J) GOTO 50 51 CONTINUE MOTERR=IDDL C ON NE TROUVE PAS IDDL DANS CCHAMP GOTO 7000 50 CONTINUE KINCDU=IIDU IF(IIMPI.NE.0)WRITE(6,8883)(CIINC(I),CIIDU(I),I=1,NNI1) 8883 FORMAT(20(1X,A4)) C C **** CAS IRIG=1 : TERMES DANS LA MATRICE MASSE : UT.M.U C IF(IRIG.NE.1) GO TO 100 SEGACT MSOSTU MATMAS=ISMASS SEGDES MSOSTU SEGACT MSOLE1,MSOLEN LTAB=ISOLEN(/1) DO 9 I=1,NJONC MJONCT=MSOLE1.ISOLEN(ITRMEC(I)) SEGACT MJONCT NOELEP(I)=I NOELED(I)=I IF(MJODDL.EQ.'LX ') GO TO 16 LISINC(I)='FBET' LISDUA(I)='BETA' GO TO 17 16 LISINC(I)='BETA' LISDUA(I)='FBET' 17 CONTINUE SEGDES MJONCT NUM(I,1)=IPT1.NUM(1,ITRMEC(I)) 9 CONTINUE C KZERO=0 DO 10 I=1,NJONC IP1=ISOLEN(I) IF(IERR.NE.0) GOTO 8000 IF(IERR.NE.0) GO TO 8000 C IF(IIMPI.EQ.0) GOTO 804 MVA=KMVB IPB=KIPB SEGACT MVA,IPB WRITE(IOIMP,7878)I 7878 FORMAT(' ************* DANS RGLILI CALCUL DE UJ.M.UI ****', 1 /,' ========== I=',I4,' ECRITURE DE M.UI SOUS LA FORME VA 1 PUIS IPB') WRITE(IOIMP,8880)((VA(KJ1,KJ2),KJ1=1,NNI1),KJ2=1,IPR1) WRITE(IOIMP,8882)(IPB(KJ2),KJ2=1,IPR1) 804 CONTINUE C DO 11 J=I,NJONC IP2=ISOLEN(J) IF(IERR.NE.0) GOTO 8000 C IF(IIMPI.EQ.0) GO TO 803 MVA=KMVA SEGACT MVA WRITE(IOIMP,7879)J 7879 FORMAT(' ========== J=',I4,' ECRITURE DE UJ SOUS LA FORME VA') WRITE(IOIMP,8880)((VA(KJ1,KJ2),KJ1=1,NNI1),KJ2=1,IPR1) 803 CONTINUE C C **** OPERATION UT . ( M.U ) C MVA=KMVA MVA1=KMVB IPB=KIPB C SEGACT MVA,MVA1,IPB XRET=0. DO 81 J1=1,NPR2 JJ1=IPB(J1) DO 81 I1=1,NNI1 XRET=XRET+VA(I1,JJ1)*MVA1.VA(I1,JJ1) 81 CONTINUE C IF(IIMPI.EQ.0) GOTO 805 WRITE(IOIMP,7877)XRET,WW 7877 FORMAT(' UI.M.UJ = ',E12.5,' PAR L''OPERATEUR YTMX ON TROUVE ' 1 ,E12.5) 805 CONTINUE C * K=(J*(J-1)/2)+I RE(J,I,1)=XRET RE(I,J,1)=XRET 11 CONTINUE 10 CONTINUE GO TO 6 C C **** CAS IRIG=2 : MATRICE RAIDEUR : LIGNE J COLONNE I: UI ET PJ C 100 CONTINUE C C **** PREMIERE BOUCLE SUR LESMJONCT. ON EN SORT MCHPOI QU ON ETALE C **** DANS MVA . C EST UI C SEGACT MSOLEN,MSOLE1 LTAB=ISOLEN(/1) DO 30 IJO1=1,NJONC MJONCT=MSOLE1.ISOLEN(ITRMEC(IJO1)) SEGACT MJONCT RLIBRE=1. IF(MJODDL.EQ.'FLX ') RLIBRE=-1. NOELEP(IJO1)=IJO1 NOELED(IJO1)=IJO1 IF(MJODDL.EQ.'LX ') GO TO 18 LISINC(IJO1)='FBET' LISDUA(IJO1)='BETA' GO TO 19 18 LISINC(IJO1)='BETA' LISDUA(IJO1)='FBET' 19 CONTINUE NUM(IJO1,1)=IPT1.NUM(1,ITRMEC(IJO1)) SEGDES MJONCT IP1=ISOLEN(ITRMEC(IJO1)) KZERO=0 IF(IERR.NE.0) GO TO 8000 IF(IIMPI.EQ.0) GO TO 800 MVA=KMVA SEGACT MVA WRITE(IOIMP,8880)((VA(KJ1,KJ2),KJ1=1,NNI1),KJ2=1,IPR1) 8880 FORMAT(8(2X,E12.5)) 800 CONTINUE C C **** 2IEME BOUCLE SUR LES MJONCT: ON EN TIRE PJ QU ON ETALE DANS MVB C DO 31 IJO2=IJO1,NJONC MJONCT=MSOLE1.ISOLEN(ITRMEC(IJO2)) SEGACT MJONCT NST=ISTRJO(/1) DO 32 IS=1,NST IF(ISTRJO(IS).NE.MSOSTU) GO TO 32 IPP2=IPCHJO(IS) IF(IERR.NE.0) GO TO 8000 IF(IIMPI.EQ.0) GO TO 801 MVA=KMVB IPB=KIPB SEGACT MVA,IPB WRITE(IOIMP,8880)((VA(KJ1,KJ2),KJ1=1,NNI1),KJ2=1,IPR1) WRITE(IOIMP,8882)(IPB(KJ2),KJ2=1,IPR1) 8882 FORMAT( 10I6) 801 CONTINUE C C **** OPERATION VA*VB C MVA=KMVA MVA1=KMVB IPB=KIPB C SEGACT MVA,MVA1,IPB C XRET=0. DO 80 J1=1,NPR2 JJ1=IPB(J1) DO 80 I1=1,NNI1 XRET=XRET+VA(I1,JJ1)*MVA1.VA(I1,JJ1) 80 CONTINUE C * K=(IJO2*(IJO2-1)/2)+IJO1 RE(IJO2,IJO1,1)=RE(IJO2,IJO1,1)+XRET*RLIBRE RE(IJO1,IJO2,1)=RE(IJO2,IJO1,1) 32 CONTINUE SEGDES MJONCT 31 CONTINUE 30 CONTINUE SEGDES MSOLE1 C 6 CONTINUE IINC=KIINC SEGSUP IINC IIDU=KINCDU SEGSUP IIDU ICPR=KICPR SEGSUP ICPR SEGSUP ICONTR SEGSUP MVA,MVA1,IPB SEGDES DESCR,MELEME,XMATRI,IPT1,MSOLUT SEGINI ITRAV ITRAV(1)=MELEME ITRAV(2)=0 ITRAV(3)=DESCR ITRAV(4)=xMATRI ITRAV(5)=NIFOUR ITRAV(6)=0 5000 CONTINUE C C LIAISON POUR DEPLACEMENT IMPOSE C IF(NJODEP.EQ.0) GO TO 6000 C C **** INITIALISATION DE LA GEOMETRIE(1 ELEMENT QUI CONTIENT TOUS LES C **** POINT-LIAISONS) ET DE LA MATRICE ASSOCIEE XMATRI C **** INITIALISATION DE IMATRI ET DE DESCR C NJONC=NJODEP * LVAL=NJONC*(NJONC+1)/2 NLIGRP=NJONC NLIGRD=NJONC nelrig=1 SEGINI XMATRI * DO 40 K=1,LVAL * RE(K)=0.D0 * 40 CONTINUE SEGINI DESCR NELRIG=1 * SEGINI IMATRI * IMATTT(1)=XMATRI * SEGDES IMATRI SEGACT MSOLUT IPT1=MSOLIS(3) SEGACT IPT1 NBSOUS=0 NBREF=0 NBNN=NJONC NBELEM=1 SEGINI MELEME ITYPEL=27 DO 41 I=1,NJONC NOELEP(I)=I NOELED(I)=I LISINC(I)='FBET' LISDUA(I)='BETA' NUM(I,1)=IPT1.NUM(1,ITRDEP(I)) RE(I,I,1)=1.D0 41 CONTINUE SEGSUP ITRDEP SEGDES DESCR,MELEME,XMATRI,MSOLUT,IPT1 C C CREATION DE MRIGID C 6000 CONTINUE NRIGEL=1 IF(NJOMEC.NE.0.AND.NJODEP.NE.0) NRIGEL=2 NRIGE=6 SEGINI MRIGID ICHOLE=0 IMGEO1=0 IMGEO2=0 IFORIG=IFOUR IF(IRIG.EQ.1) THEN MTYMAT='MASSE ' ELSE MTYMAT='RIGIDITE' ENDIF I=0 IF(NJOMEC.NE.0) THEN I=I+1 COERIG(I)=1.D0 IRIGEL(1,I)=ITRAV(1) IRIGEL(2,I)=ITRAV(2) IRIGEL(3,I)=ITRAV(3) IRIGEL(4,I)=ITRAV(4) IRIGEL(5,I)=ITRAV(5) IRIGEL(6,I)=ITRAV(6) xmatr1=itrav(4) segdes xmatr1 SEGSUP ITRAV ENDIF IF(NJODEP.NE.0) THEN I=I+1 COERIG(I)=1.D0 IRIGEL(1,I)=MELEME IRIGEL(2,I)=0 IRIGEL(3,I)=DESCR IRIGEL(4,I)=xMATRI IRIGEL(5,I)=NIFOUR IRIGEL(6,I)=0 segdes xmatri ENDIF SEGDES MRIGID IRET=MRIGID 7000 CONTINUE SEGSUP ITRMEC,ITRDEP 8000 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales