1 : C ELLP12 SOURCE CHAT 05/01/12 23:35:16 5004 2 : SUBROUTINE ELLP12(CORRES,XCL,FLAG,NUMERO,MASS,NMAS, 3 : * NP,NP24,NNT,ZA1,ZSM) 4 : C 5 : IMPLICIT INTEGER(I-N) 6 : IMPLICIT REAL*8 (A-H,O-Y) 7 : IMPLICIT COMPLEX*16 (Z) 8 : C 9 : C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 10 : C 11 : C OPERATEUR ELFE LAPLACE POUTRE 12 : C 13 : C PROGRAMME APPELE PAR ELLP11 : CALCUL LA DEUXIEME PARTIE DE LA 14 : C MATRICE ZA1 ET DE SECOND MEMBRE ZSM 15 : C 16 : C 17 : C 18 : C PARAMETRES : 19 : C 20 : C ENTREE : 21 : C 22 : C CORRES : TABLEAU D'ENTIER DES NUMEROS DES NOEUDS REELS 23 : C POUR CHAQUE NOEUD FICTIF 24 : C XCL : TABLEAU DES VALEURS DES CONDITIONS AUX LIMITES 25 : C FLAG : TABLEAU DE POINTEURS SUR XCL 26 : C NUMERO : TABLEAU DE TRANSFORMATION NUMERO GLOBAL <--> NUMERO LOCAL 27 : C 28 : C NP : NOMBRE DE POUTRES 29 : C NNT : NOMBRE DE NOEUDS REELS 30 : C 31 : C 32 : C SORTIES : 33 : C 34 : C ZA1 : TABLEAU COMPLEXE REPRESENTANT LA MATRICE DE "RIGIDITE" 35 : C ZSM : VECTEUR COMPLEXE SECOND MEMBRE 36 : C 37 : C 38 : C AUTEUR : SAINT-DIZIER 39 : C DATE : 22 DECEMBRE 1989 (VERSION DU 03 AVRIL 1990) 40 : C 41 : C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 42 : C 43 : COMPLEX*16 ZA1(NP24,*),ZSM(*) 44 : REAL*8 XCL(12,*) 45 : INTEGER FLAG(*),CORRES(*),NUMERO(*),MASS(NNT,4) 46 : C 47 : C ********************************************************************** 48 : C REMPLISSAGE DE LA 2EME PARTIE DE ZA1 (INDEPENDANT DE W) 49 : C + 2EME PARTIE DU SECOND MEMBRE 50 : C ********************************************************************** 51 : C 52 : ZI = 1.D0 53 : C 54 : IZA1 = 12 * NP + 1 55 : NP2 = 2 * NP 56 : C 57 : C 58 : C --------------------- CONDITION DE NOEUDS IDENTIQUES 59 : C 60 : DO 10 I = 1 , NNT 61 : C 62 : ITEST = 0 63 : J = 0 64 : C 65 : 11 J = J + 1 66 : C 67 : IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.0)) THEN 68 : J0 = J 69 : ITEST = 1 70 : ELSE IF ((CORRES(J).EQ.NUMERO(I)).AND.(ITEST.EQ.1)) THEN 71 : ZA1 (IZA1 , 12*(J0-1)+1 ) = ZI 72 : ZA1 (IZA1+1 , 12*(J0-1)+2 ) = ZI 73 : ZA1 (IZA1+2 , 12*(J0-1)+3 ) = ZI 74 : ZA1 (IZA1+3 , 12*(J0-1)+4 ) = ZI 75 : ZA1 (IZA1+4 , 12*(J0-1)+5 ) = ZI 76 : ZA1 (IZA1+5 , 12*(J0-1)+6 ) = ZI 77 : C 78 : ZA1 (IZA1 , 12*(J-1)+1 ) = -ZI 79 : ZA1 (IZA1+1 , 12*(J-1)+2 ) = -ZI 80 : ZA1 (IZA1+2 , 12*(J-1)+3 ) = -ZI 81 : ZA1 (IZA1+3 , 12*(J-1)+4 ) = -ZI 82 : ZA1 (IZA1+4 , 12*(J-1)+5 ) = -ZI 83 : ZA1 (IZA1+5 , 12*(J-1)+6 ) = -ZI 84 : IZA1 = IZA1 + 6 85 : C 86 : ENDIF 87 : C 88 : IF (J.NE.NP2) GOTO 11 89 : C 90 : 10 CONTINUE 91 : C 92 : C 93 : DO 100 I = 1 , NNT 94 : C 95 : C --------------------- CONDITION AUX LIMITES SUR LE DEPLACEMENT 96 : C 97 : IF (FLAG((I-1)*12+1).EQ.I) THEN 98 : C 99 : J = 0 100 : ISTOP = 0 101 : 20 J = J + 1 102 : IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN 103 : C 104 : ZA1 (IZA1 , 12*(J-1)+1 ) = ZI 105 : ZSM ( IZA1 ) = CMPLX(XCL ( 1,I)) 106 : C 107 : IZA1 = IZA1 + 1 108 : ISTOP = 1 109 : C 110 : ENDIF 111 : C 112 : IF (J.NE.NP2) GO TO 20 113 : C 114 : END IF 115 : C 116 : C 117 : IF (FLAG((I-1)*12+2).EQ.I) THEN 118 : C 119 : J = 0 120 : ISTOP = 0 121 : 21 J = J + 1 122 : IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN 123 : C 124 : ZA1 (IZA1 , 12*(J-1)+2 ) = ZI 125 : ZSM ( IZA1 ) = CMPLX(XCL ( 2,I)) 126 : C 127 : IZA1 = IZA1 + 1 128 : ISTOP = 1 129 : C 130 : ENDIF 131 : C 132 : IF (J.NE.NP2) GO TO 21 133 : C 134 : END IF 135 : C 136 : C 137 : IF (FLAG((I-1)*12+3).EQ.I) THEN 138 : C 139 : J = 0 140 : ISTOP = 0 141 : 22 J = J + 1 142 : IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN 143 : C 144 : ZA1 (IZA1 , 12*(J-1)+3 ) = ZI 145 : ZSM ( IZA1 ) = CMPLX(XCL ( 3,I)) 146 : C 147 : IZA1 = IZA1 + 1 148 : ISTOP = 1 149 : C 150 : ENDIF 151 : C 152 : IF (J.NE.NP2) GO TO 22 153 : C 154 : END IF 155 : C 156 : C --------------------- CONDITION AUX LIMITES SUR LA ROTATION 157 : C 158 : IF (FLAG((I-1)*12+4).EQ.I) THEN 159 : C 160 : J = 0 161 : ISTOP = 0 162 : 30 J = J + 1 163 : IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN 164 : C 165 : ZA1 (IZA1 , 12*(J-1)+4 ) = ZI 166 : ZSM ( IZA1 ) = CMPLX(XCL ( 4,I)) 167 : C 168 : IZA1 = IZA1 + 1 169 : ISTOP = 1 170 : C 171 : ENDIF 172 : C 173 : IF (J.NE.NP2) GO TO 30 174 : C 175 : END IF 176 : C 177 : C 178 : IF (FLAG((I-1)*12+5).EQ.I) THEN 179 : C 180 : J = 0 181 : ISTOP = 0 182 : 31 J = J + 1 183 : IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN 184 : C 185 : ZA1 (IZA1 , 12*(J-1)+5 ) = ZI 186 : ZSM ( IZA1 ) = CMPLX(XCL ( 5,I)) 187 : C 188 : IZA1 = IZA1 + 1 189 : ISTOP = 1 190 : C 191 : ENDIF 192 : C 193 : IF (J.NE.NP2) GO TO 31 194 : C 195 : END IF 196 : C 197 : C 198 : IF (FLAG((I-1)*12+6).EQ.I) THEN 199 : C 200 : J = 0 201 : ISTOP = 0 202 : 32 J = J + 1 203 : IF ((CORRES(J).EQ.NUMERO(I)).AND.(ISTOP.EQ.0)) THEN 204 : C 205 : ZA1 (IZA1 , 12*(J-1)+6 ) = ZI 206 : ZSM ( IZA1 ) = CMPLX(XCL ( 6,I)) 207 : C 208 : IZA1 = IZA1 + 1 209 : ISTOP = 1 210 : C 211 : ENDIF 212 : C 213 : IF (J.NE.NP2) GO TO 32 214 : C 215 : END IF 216 : C 217 : C --------------------- CONDITION AUX LIMITES SUR LA FORCE 218 : C 219 : IF (FLAG((I-1)*12+1).EQ.0) THEN 220 : C 221 : DO 40 J = 1 , 2*NP 222 : IF (CORRES(J).EQ.NUMERO(I)) THEN 223 : C 224 : ZA1 (IZA1 , 12*(J-1)+7 ) = ZI 225 : C 226 : END IF 227 : 40 CONTINUE 228 : C 229 : ZSM ( IZA1 ) = CMPLX(XCL(7,I)) 230 : C 231 : IF (NMAS.GT.0) THEN 232 : DO 41 I1 = 1 , NMAS 233 : IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN 234 : MASS(I1,4) = IZA1 235 : END IF 236 : 41 CONTINUE 237 : END IF 238 : C 239 : IZA1 = IZA1 + 1 240 : C 241 : END IF 242 : C 243 : C 244 : IF (FLAG((I-1)*12+2).EQ.0) THEN 245 : C 246 : DO 42 J = 1 , 2*NP 247 : IF (CORRES(J).EQ.NUMERO(I)) THEN 248 : ZA1 (IZA1 , 12*(J-1)+8 ) = ZI 249 : C 250 : END IF 251 : 42 CONTINUE 252 : C 253 : ZSM ( IZA1 ) = CMPLX(XCL(8,I)) 254 : C 255 : IF (NMAS.GT.0) THEN 256 : DO 43 I1 = 1 , NMAS 257 : IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN 258 : MASS(I1,4) = IZA1-1 259 : END IF 260 : 43 CONTINUE 261 : END IF 262 : C 263 : IZA1 = IZA1 + 1 264 : C 265 : END IF 266 : C 267 : C 268 : IF (FLAG((I-1)*12+3).EQ.0) THEN 269 : C 270 : DO 44 J = 1 , 2*NP 271 : IF (CORRES(J).EQ.NUMERO(I)) THEN 272 : ZA1 (IZA1 , 12*(J-1)+9 ) = ZI 273 : C 274 : END IF 275 : 44 CONTINUE 276 : C 277 : ZSM ( IZA1 ) = CMPLX(XCL(9,I)) 278 : C 279 : IF (NMAS.GT.0) THEN 280 : DO 45 I1 = 1 , NMAS 281 : IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN 282 : MASS(I1,4) = IZA1-2 283 : END IF 284 : 45 CONTINUE 285 : END IF 286 : C 287 : IZA1 = IZA1 + 1 288 : C 289 : END IF 290 : C 291 : C --------------------- CONDITION AUX LIMITES SUR LE MOMENT 292 : C 293 : IF (FLAG((I-1)*12+4).EQ.0) THEN 294 : C 295 : DO 50 J = 1 , 2*NP 296 : IF (CORRES(J).EQ.NUMERO(I)) THEN 297 : ZA1 (IZA1 , 12*(J-1)+10) = ZI 298 : END IF 299 : 50 CONTINUE 300 : C 301 : ZSM ( IZA1 ) = CMPLX(XCL(10,I)) 302 : C 303 : IF (NMAS.GT.0) THEN 304 : DO 51 I1 = 1 , NMAS 305 : IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN 306 : MASS(I1,4) = IZA1-3 307 : END IF 308 : 51 CONTINUE 309 : END IF 310 : C 311 : IZA1 = IZA1 + 1 312 : C 313 : END IF 314 : C 315 : C 316 : IF (FLAG((I-1)*12+5).EQ.0) THEN 317 : C 318 : DO 52 J = 1 , 2*NP 319 : IF (CORRES(J).EQ.NUMERO(I)) THEN 320 : ZA1 (IZA1 , 12*(J-1)+11) = ZI 321 : END IF 322 : 52 CONTINUE 323 : C 324 : ZSM ( IZA1 ) = CMPLX(XCL(11,I)) 325 : C 326 : IF (NMAS.GT.0) THEN 327 : DO 53 I1 = 1 , NMAS 328 : IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN 329 : MASS(I1,4) = IZA1-4 330 : END IF 331 : 53 CONTINUE 332 : END IF 333 : C 334 : IZA1 = IZA1 + 1 335 : C 336 : END IF 337 : C 338 : C 339 : IF (FLAG((I-1)*12+6).EQ.0) THEN 340 : C 341 : DO 54 J = 1 , 2*NP 342 : IF (CORRES(J).EQ.NUMERO(I)) THEN 343 : ZA1 (IZA1 , 12*(J-1)+12) = ZI 344 : END IF 345 : 54 CONTINUE 346 : C 347 : ZSM ( IZA1 ) = CMPLX(XCL(12,I)) 348 : C 349 : IF (NMAS.GT.0) THEN 350 : DO 55 I1 = 1 , NMAS 351 : IF (CORRES(MASS(I1,1)).EQ.NUMERO(I)) THEN 352 : MASS(I1,4) = IZA1-5 353 : END IF 354 : 55 CONTINUE 355 : END IF 356 : C 357 : IZA1 = IZA1 + 1 358 : C 359 : END IF 360 : C 361 : C 362 : 100 CONTINUE 363 : C 364 : END 365 :
© Cast3M 2003 - All rights reserved.
Disclaimer