1 : C DYNE01 SOURCE CHAT 09/10/09 21:17:29 6519 2 : SUBROUTINE DYNE01(ICHOLX,IRSCPR,IPRIGM,IVEC) 3 : IMPLICIT INTEGER(I-N) 4 : IMPLICIT REAL*8(A-H,O-Z) 5 : ************************************************************************ 6 : * 7 : * D Y N E 0 1 8 : * ----------- 9 : * 10 : * FONCTION: 11 : * --------- 12 : * UTILITAIRE DE L'OPERATEUR "DYNE" 13 : * LUMPAGE ET INVERSION DE LA MATRICE MASSE 14 : * 15 : * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) 16 : * ----------- 17 : * 18 : * ICHOLX (E) POINTEUR SUR LE SEGMENT MMATRI ( ACTIF ) 19 : * IRSCPR (E) POINTEUR SUR LE SEGMENT ICPR ( ACTIF ) 20 : * IPRIGM (E) POINTEUR SUR L'OBJET RIGIDITE M 21 : * IVEC (S) VECTEUR CONTENANT LA MATRICE LUMPEE INVERSEE 22 : * ( LAISSE ACTIF ) 23 : * 24 : * REMARQUES: 25 : * ---------- 26 : * ATTENTION : ON NE LUMPE QUE LES TERMES RELATIFS AUX DDL 27 : * DE TRANSLATION ; EN CE QUI CONCERNE LES DDL DE ROTATION, 28 : * SEULS LES TERMES DIAGONAUX SONT PRIS EN COMPTE. 29 : * 30 : * AUTEUR, DATE DE CREATION: 31 : * ------------------------- 32 : * DENIS ROBERT, LE 15 NOVEMBRE 1988. 33 : * 34 : * MODIF 03/89 : SUPPRESSION DU TEST SUR LA VALEUR DU TERME LUMPE 35 : * ( E DE LANGRE) 36 : * 37 : * LANGAGE: 38 : * -------- 39 : * ESOPE + FORTRAN77 40 : * 41 : ************************************************************************ 42 : * 43 : * MODULES UTILISES: 44 : * 45 : -INC CCOPTIO 46 : -INC SMELEME 47 : -INC SMRIGID 48 : -INC SMMATRI 49 : -INC SMVECTD 50 : -INC SMCOORD 51 : * 52 : PARAMETER ( UN = 1.D0 ) 53 : PARAMETER ( EPS = 1.D-10 ) 54 : PARAMETER ( ZERO = 0.D0 ) 55 : * 56 : CHARACTER*4 NI 57 : * 58 : *--- SEGMENTS DE TRAVAIL 59 : * 60 : SEGMENT MUITRA(NLIGRE) 61 : SEGMENT ICPR(XCOOR(/1)/(IDIM+1)) 62 : * 63 : MVECTD=IVEC 64 : MMATRI=ICHOLX 65 : MINCPO=IINCPO 66 : SEGACT,MINCPO 67 : MIMIK=IIMIK 68 : SEGACT,MIMIK 69 : MIDUA=IIDUA 70 : SEGACT,MIDUA 71 : MHARK=IHARK 72 : SEGACT,MHARK 73 : ICPR=IRSCPR 74 : ININC=IMIK(/2) 75 : * 76 : *--- BOUCLE SUR LES ZONES ELEMENTAIRES DE LA RIGIDITE 77 : * 78 : MRIGID=IPRIGM 79 : NRIGEL=IRIGEL(/2) 80 : DO 20 IRI=1,NRIGEL 81 : MELEME=IRIGEL(1,IRI) 82 : SEGACT,MELEME 83 : DESCR=IRIGEL(3,IRI) 84 : SEGACT,DESCR 85 : * 86 : *--- ON REMPLIT MUITRA(IN)=IJ QUI DIT QUE LA IEME INCONNUE 87 : *--- DE LA MATRICE ELEMENTAIRE EST LA JEME DE ININC 88 : * 89 : NLIGRE=LISINC(/2) 90 : SEGINI MUITRA 91 : DO 21 IN=1,NLIGRE 92 : NI=LISINC(IN) 93 : DO 22 IJ=1,ININC 94 : IF(NI.EQ.IMIK(IJ)) GO TO 23 95 : 22 CONTINUE 96 : * END DO 97 : 23 CONTINUE 98 : IF (NI(1:1).EQ.'R') THEN 99 : MUITRA(IN)=-IJ 100 : ELSE 101 : MUITRA(IN)=IJ 102 : ENDIF 103 : 21 CONTINUE 104 : * END DO 105 : * 106 : *--- BOUCLE SUR LES MATRICES TRES ELEMENTAIRES 107 : * 108 : N1=NUM(/1) 109 : N2=NUM(/2) 110 : xMATRI=IRIGEL(4,IRI) 111 : COER=COERIG(IRI) 112 : SEGACT,xMATRI 113 : DO 30 I2=1,N2 114 : * 115 : *--- ON REMPLIT LE VECTEUR CONTENANT LA MATRICE LUMPEE 116 : * 117 : * XMATRI=IMATTT(I2) 118 : * SEGACT,XMATRI 119 : DO 33 IN=1,NLIGRE 120 : J2=ICPR(NUM(NOELEP(IN),I2)) 121 : J1=MUITRA(IN) 122 : RR=ZERO 123 : IF (J1.LT.0) THEN 124 : * IKO=(IN+1)*IN/2 125 : RR=RE(IN,IN,i2)*COER 126 : J1=-J1 127 : ELSE 128 : DO 34 JN=1,NLIGRE 129 : * IF (JN.GT.IN) THEN 130 : * IKO=(JN-1)*JN/2+IN 131 : * RR=RR+RE(iko)*COER 132 : * ELSE 133 : * IKO=(IN-1)*IN/2+JN 134 : RR=RR+RE(JN,IN,i2)*COER 135 : * ENDIF 136 : 34 CONTINUE 137 : * END DO 138 : ENDIF 139 : IKI=INCPO(J1,J2) 140 : * ---- ON NE FAIT PLUS DE TEST SUR RR 141 : VECTBB(IKI)=VECTBB(IKI)+RR 142 : 33 CONTINUE 143 : * END DO 144 : * SEGDES,XMATRI 145 : 30 CONTINUE 146 : * END DO 147 : SEGDES,xMATRI,DESCR,MELEME 148 : SEGSUP,MUITRA 149 : 20 CONTINUE 150 : * END DO 151 : * 152 : *--- INVERSION DE LA MATRICE LUMPEE 153 : * 154 : LIV=VECTBB(/1) 155 : DO 100 IV=1,LIV 156 : VECTBB(IV)=UN/VECTBB(IV) 157 : 100 CONTINUE 158 : * END DO 159 : SEGDES,MRIGID 160 : * 161 : END 162 : 163 : 164 : 165 : 166 : 167 : 168 : 169 : 170 :
© Cast3M 2003 - All rights reserved.
Disclaimer