1 : C ELFELE SOURCE FANDEUR 10/12/14 21:16:00 6812 2 : C 3 : SUBROUTINE ELFELE(MSTRUC,KNREFE) 4 : C 5 : C ===================================================================== 6 : C APPELE PAR ELFE POUR TRAITER LES ELEMENTS DE POUTRES. 7 : C LE SOUS-PROGRAMME ELFELE CREE LE SEGMENT DE TRAVAIL MNREFE 8 : C A PARTIR DE L'OBJET STRUCTURE. 9 : C 10 : C VERSION : 24/10/86 11 : C PROGRAMMEUR : GUILBAUD 12 : C 13 : C ===================================================================== 14 : C 15 : IMPLICIT INTEGER(I-N) 16 : IMPLICIT REAL*8(A-H,O-Z) 17 : C 18 : -INC CCOPTIO 19 : C 20 : -INC SMCHAML 21 : -INC SMCOORD 22 : -INC SMELEME 23 : -INC SMSTRUC 24 : C 25 : SEGMENT MNREFE 26 : INTEGER NREFE(8,NSTR) 27 : INTEGER NTANBN 28 : INTEGER NIDNCN 29 : INTEGER NTVN 30 : POINTEUR NREPA.MPASS 31 : POINTEUR NRECA.MCARA 32 : POINTEUR NRENO.MNORM 33 : POINTEUR NRECPR.ICPR 34 : POINTEUR NREMEL.MELEME 35 : POINTEUR NREDEN.MDEN 36 : ENDSEGMENT 37 : C 38 : C NSTR : NOMBRE D'ELEMENTS 39 : C NREFE(1,I) : MELEME 40 : C NREFE(2,I) : MSOSTU 41 : C NREFE(3,I) : TYPE DE L'ELEMENT 42 : C NREFE(4,I) : NOMBRE DE POINTS DU MELEME 43 : C NREFE(5,I) : NOMBRE DE DDL PAR POINT 44 : C NREFE(6,I)=IVN :LE 1ER DDL DE L'ELEMENT EST LE IVN+1 IEME DE VN 45 : C NREFE(7,I)=IAN :LE 1ER TERME DE LA MATRICE A EST LE IAN IEME DE ANBN 46 : C NREFE(8,I)= 1 :LE IEME ELEMENT EST RIGIDE (OU PARTIELLEMENT) SINON 0 47 : C NTANBN : NOMBRE DE TERMES DES MATRICES A ET B POUR TOUS LES ELEMENTS 48 : C NIDNCN : NOMBRE TOTAL D'INCONNUES DE DNCN 49 : C NTVN : LONGUEUR DU TABLEAU VN 50 : C 51 : SEGMENT MPASS 52 : REAL*8 PASS(9*NSTR) 53 : ENDSEGMENT 54 : C 55 : C PASS(9) : MATRICE DE CHANGEMENT DE REPERE POUR L'ELEMENT I 56 : C 57 : SEGMENT MCARA 58 : REAL*8 CARA(LCAR*NSTR) 59 : ENDSEGMENT 60 : C 61 : C LCAR : NOMBRE DE CARACTERISTIQUES DE L'ELEMENT 62 : C 63 : SEGMENT MNORM 64 : REAL*8 DNORM(LNORM) 65 : ENDSEGMENT 66 : C 67 : C DNORM : VECTEUR DE NORMALISATION 68 : C 69 : SEGMENT ICPR(XCOOR(/1)/(IDIM+1)) 70 : C 71 : C IKID=ICPR(NUM(I,J))+K 72 : C LA COMPOSANTE NOMD(K) DU POINT NUM EST LE IKID-IEME DDL DE DNCN( , ,1 73 : C 74 : SEGMENT MDEN 75 : INTEGER IDEN(INS) 76 : ENDSEGMENT 77 : C 78 : C IL Y A INS STRUCTURES AYANT DES CARACTERISTIQUES DIFFERENTES 79 : C IDEN CONTIENT LEUR NUMERO D'ORDRE DANS MNREFE 80 : C 81 : DIMENSION XE(2),YE(2),ZE(2),VECT(3),P(3,3) 82 : DATA L11/11/,L6/6/,L24/24/,L28/28/ 83 : C 84 : WRITE(IOIMP,*) ' DEBUT DE ELFELE ' 85 : EPS=1.D-3 86 : SEGACT MSTRUC 87 : NSTR= LISTRU(/1) 88 : LCAR=L11 89 : SEGINI MNREFE,ICPR,MPASS,MCARA 90 : DO 5 I=1,XCOOR(/1)/(IDIM+1) 91 : ICPR(I)=-1 92 : 5 CONTINUE 93 : NRECPR=ICPR 94 : NREPA=MPASS 95 : NRECA=MCARA 96 : C 97 : C BOUCLE SUR LES ELEMENTS 98 : C 99 : INS=NSTR 100 : SEGINI MDEN 101 : NREDEN=MDEN 102 : INS=0 103 : NTVN=0 104 : NIDNCN=0 105 : NTANBN=1 106 : NBELEM=2*NSTR 107 : NBNN=1 108 : NBSOUS=0 109 : NBREF=0 110 : SEGINI IPT1 111 : IPT1.ITYPEL=1 112 : LBP=0 113 : NRG=0 114 : LNORM=L24*NSTR 115 : SEGINI MNORM 116 : NRENO=MNORM 117 : DO 30 NS=1,NSTR 118 : MSOSTU =LISTRU(NS) 119 : SEGACT MSOSTU 120 : MCHELM=ISCHAM(1) 121 : MCHEL1=ISCHAM(2) 122 : SEGDES MSOSTU 123 : IF(MCHELM.EQ.0.OR.MCHEL1.EQ.0) THEN 124 : C *** LA SOUS-STRUCTURE DOIT ETRE DEFINIE A PARTIR DES CHAMPS PAR ELEMEN 125 : INTERR(1)=MSOSTU 125 : CALL ERREUR(376) 126 : RETURN 127 : ENDIF 128 : SEGACT MCHELM,MCHEL1 129 : NSOUS=IMACHE(/1) 130 : IF(NSOUS.NE.1) THEN 131 : C *** LA SOUS-STRUCTURE DOIT ETRE COMPOSEE D'UNE SEULE ZONE D'ELEMENTS 132 : INTERR(1)=MSOSTU 132 : CALL ERREUR(377) 133 : RETURN 134 : ENDIF 135 : MELEME=IMACHE(1) 136 : SEGACT MELEME 137 : IF(ITYPEL.NE.2) THEN 138 : C *** LA SOUS-STRUCTURE DOIT ETRE COMPOSEE D'ELEMENTS SEG2 139 : INTERR(1)=MSOSTU 139 : CALL ERREUR(378) 140 : RETURN 141 : ENDIF 142 : NBELEM=NUM(/2) 143 : IF(NBELEM.NE.1) THEN 144 : C *** LA SOUS-STRUCTURE DOIT ETRE COMPOSEE D'UN SEUL ELEMENT 145 : INTERR(1)=MSOSTU 145 : CALL ERREUR(379) 146 : RETURN 147 : ENDIF 148 : C 149 : C LES DIMENSIONS SUIVANTES SONT POUR LES ELEMENTS POUTRES : 150 : C 151 : NDDL=L6 152 : NTAEL=L28 153 : C 154 : C REMPLISSAGE DE ICPR 155 : C 156 : NBNOE=NUM(/1) 157 : DO 10 NB=1,NBNOE 158 : IP=NUM(NB,1) 159 : IF(ICPR(IP).NE.-1) THEN 160 : C *** LA SOUS-STRUCTURE POSSEDE DES NOEUDS EN COMMUN AVEC LES PRECEDENTE 161 : INTERR(1)=MSOSTU 161 : CALL ERREUR(380) 162 : RETURN 163 : ENDIF 164 : ICPR(IP)=NIDNCN 165 : NIDNCN=NIDNCN+2*NDDL 166 : LBP=LBP+1 167 : IPT1.NUM(1,LBP)=IP 168 : 10 CONTINUE 169 : NREFE(1,NS)=MELEME 170 : NREFE(2,NS)=MSOSTU 171 : NREFE(3,NS)=ITYPEL 172 : NREFE(4,NS)=NBNOE 173 : NREFE(5,NS)=NDDL 174 : NREFE(6,NS)=NTVN 175 : NTVN=NTVN+NDDL*NBNOE 176 : C 177 : C RECUPERATION DES CARACTERISTIQUES DYNAMIQUES DE L'ELEMENT 178 : C REMPLISSAGE DE CARA 179 : C 180 : MCHAML=ICHAML(1) 181 : SEGACT,MCHAML 182 : MELVAL=IELVAL(1) 183 : SEGACT,MELVAL 184 : E=VELCHE(1,1) 185 : SEGDES,MELVAL 186 : MELVAL=IELVAL(2) 187 : SEGACT,MELVAL 188 : ANU=VELCHE(1,1) 189 : SEGDES,MELVAL 190 : MELVAL=IELVAL(3) 191 : SEGACT,MELVAL 192 : RHO=VELCHE(1,1) 193 : SEGDES,MELVAL 194 : SEGDES,MCHAML 195 : 196 : MCHAML=MCHEL1.ICHAML(1) 197 : SEGACT,MCHAML 198 : MELVAL=IELVAL(1) 199 : SEGACT,MELVAL 200 : TORS=VELCHE(1,1) 201 : SEGDES,MELVAL 202 : MELVAL=IELVAL(2) 203 : SEGACT,MELVAL 204 : AINRY=VELCHE(1,1) 205 : SEGDES,MELVAL 206 : MELVAL=IELVAL(3) 207 : SEGACT,MELVAL 208 : AINRZ=VELCHE(1,1) 209 : SEGDES,MELVAL 210 : MELVAL=IELVAL(4) 211 : SEGACT,MELVAL 212 : SECT=VELCHE(1,1) 213 : SEGDES,MELVAL 214 : MELVAL=IELVAL(7) 215 : SEGACT,MELVAL 216 : VX=VELCHE(1,1) 217 : SEGDES,MELVAL 218 : MELVAL=IELVAL(8) 219 : SEGACT,MELVAL 220 : VY=VELCHE(1,1) 221 : SEGDES,MELVAL 222 : MELVAL=IELVAL(9) 223 : SEGACT,MELVAL 224 : VZ=VELCHE(1,1) 225 : SEGDES,MELVAL 226 : SEGDES,MCHAML 227 : C 228 : C CALCUL DES CARACTERISTIQUES DYNAMIQUES 229 : C 230 : ES=E*SECT 231 : AIP=AINRY+AINRZ 232 : AMU=E/(2.D0*(1.D0+ANU)) 233 : CTC= SQRT(E/RHO) 234 : C POUR UNE POUTRE DE SECTION CIRCULAIRE SEULEMENT 235 : CTO=SQRT(AMU/RHO) 236 : RTC=SQRT(AIP/SECT) 237 : RTO=SQRT(TORS*2.D0*(1.D0+ANU)/SECT) 238 : RFY=SQRT(AINRY/SECT) 239 : RFZ=SQRT(AINRZ/SECT) 240 : NCOO1=(NUM(1,1)-1)*(IDIM+1) 241 : NCOO2=(NUM(2,1)-1)*(IDIM+1) 242 : XE(1)=XCOOR(NCOO1+1) 243 : XE(2)=XCOOR(NCOO2+1) 244 : YE(1)=XCOOR(NCOO1+2) 245 : YE(2)=XCOOR(NCOO2+2) 246 : ZE(1)=XCOOR(NCOO1+3) 247 : ZE(2)=XCOOR(NCOO2+3) 248 : XL=XE(2)-XE(1) 249 : YL=YE(2)-YE(1) 250 : ZL=ZE(2)-ZE(1) 251 : DL=SQRT(XL*XL+YL*YL+ZL*ZL) 252 : C 253 : C CREATION DE MCARA 254 : C 255 : NCA=LCAR*(NS-1) 256 : CARA(NCA+1)=DL 257 : CARA(NCA+2)=RTC 258 : CARA(NCA+3)=RTO 259 : CARA(NCA+4)=RFY 260 : CARA(NCA+5)=RFZ 261 : CARA(NCA+6)=CTC 262 : CARA(NCA+7)=CTO 263 : CARA(NCA+8)=RHO 264 : CARA(NCA+9)=SECT 265 : CARA(NCA+10)=AIP 266 : CARA(NCA+11)=0.D0 267 : C 268 : C EXISTE-T-IL DES STRUCTURES DE MEME CARACTERISTIQUE ? 269 : C 270 : NS1=NS-1 271 : DO 25 NSP=1,NS1 272 : NCAP=LCAR*(NSP-1) 273 : DO 20 JK=1,7 274 : DIF=ABS(CARA(NCAP+JK)-CARA(NCA+JK)) 275 : IF(DIF.GT.EPS) GOTO 25 276 : 20 CONTINUE 277 : NREFE(7,NS)=NREFE(7,NSP) 278 : GOTO 27 279 : 25 CONTINUE 280 : NREFE(7,NS)=NTANBN 281 : NTANBN=NTANBN+NTAEL 282 : INS=INS+1 283 : IDEN(INS)=NS 284 : 27 CONTINUE 285 : C 286 : C CREATION DE LA MATRICE DE PASSAGE REPERE LOCAL-REPERE GLOBAL 287 : C 288 : VECT(1)=VX 289 : VECT(2)=VY 290 : VECT(3)=VZ 291 : MP=9*(NS-1)+1 291 : CALL POUPAS(XE,YE,ZE,VECT,PASS(MP),KERRE) 292 : IF(KERRE.NE.0) THEN 293 : C *** L'ELEMENT EST DE LONGUEUR NULLE 294 : INTERR(1)=MSOSTU 294 : CALL ERREUR(381) 295 : ENDIF 296 : C 297 : C CREATION DU VECTEUR DE NORMALISATION 298 : C 299 : DO 50 IEXTR=1,2 300 : DNORM(NRG+1)=RTC 301 : DNORM(NRG+2)=RFZ 302 : DNORM(NRG+3)=RFY 303 : DNORM(NRG+4)=1.D0 304 : DNORM(NRG+5)=1.D0 305 : DNORM(NRG+6)=1.D0 306 : DNORM(NRG+7)=ES 307 : DNORM(NRG+8)=ES 308 : DNORM(NRG+9)=ES 309 : DNORM(NRG+10)=ES*RTO 310 : DNORM(NRG+11)=ES*RFZ 311 : DNORM(NRG+12)=ES*RFY 312 : NRG=NRG+2*NDDL 313 : 50 CONTINUE 314 : C 315 : SEGDES MELEME 316 : SEGDES MCHELM,MCHEL1 317 : 30 CONTINUE 318 : NTANBN=NTANBN-1 319 : SEGADJ MDEN 320 : NBELEM=LBP 321 : SEGADJ IPT1 322 : NREMEL=IPT1 323 : KNREFE=MNREFE 324 : C 325 : IF(IIMPI.EQ.1) THEN 326 : WRITE(IOIMP,1000) NSTR 327 : 1000 FORMAT(1X,///' NOMBRE D''ELEMENTS ',I5//) 328 : DO 40 NS=1,NSTR 329 : WRITE(IOIMP,1012) NREFE(1,NS) 330 : WRITE(IOIMP,1013) NREFE(2,NS) 331 : WRITE(IOIMP,1014) NREFE(3,NS) 332 : WRITE(IOIMP,1015) NREFE(4,NS) 333 : WRITE(IOIMP,1016) NREFE(5,NS) 334 : WRITE(IOIMP,1017) NREFE(6,NS) 335 : WRITE(IOIMP,1018) NREFE(7,NS) 336 : 1012 FORMAT(1X,' MELEME ',I5) 337 : 1013 FORMAT(1X,' MSOSTU ',I5) 338 : 1014 FORMAT(1X,' ITYPEL ',I5) 339 : 1015 FORMAT(1X,' NBNOE ',I5) 340 : 1016 FORMAT(1X,' NDDL ',I5) 341 : 1017 FORMAT(1X,' IVN ',I5) 342 : 1018 FORMAT(1X,' IAN ',I5,//) 343 : NCA=LCAR*(NS-1) 344 : WRITE(IOIMP,1001) CARA(NCA+1) 345 : WRITE(IOIMP,1002) CARA(NCA+2) 346 : WRITE(IOIMP,1003) CARA(NCA+3) 347 : WRITE(IOIMP,1004) CARA(NCA+4) 348 : WRITE(IOIMP,1005) CARA(NCA+5) 349 : WRITE(IOIMP,1006) CARA(NCA+6) 350 : WRITE(IOIMP,1007) CARA(NCA+7) 351 : WRITE(IOIMP,1008) CARA(NCA+8) 352 : WRITE(IOIMP,1009) CARA(NCA+9) 353 : 1001 FORMAT(1X,' DL ',1PE12.5) 354 : 1002 FORMAT(1X,' RTC ',1PE12.5) 355 : 1003 FORMAT(1X,' RTO ',1PE12.5) 356 : 1004 FORMAT(1X,' RFY ',1PE12.5) 357 : 1005 FORMAT(1X,' EIZ ',1PE12.5) 358 : 1006 FORMAT(1X,' CTC ',1PE12.5) 359 : 1007 FORMAT(1X,' CTO ',1PE12.5) 360 : 1008 FORMAT(1X,' RHO ',1PE12.5) 361 : 1009 FORMAT(1X,' SECT ',1PE12.5) 362 : WRITE(IOIMP,1022) 363 : 1022 FORMAT(1X,' MATRICE DE CHANGEMENT DE REPERE '/) 364 : MP=9*(NS-1) 365 : WRITE(IOIMP,1019)(PASS(MP+I),I=1,9) 366 : 1019 FORMAT(1X,6(1PE12.5,1X)) 367 : 40 CONTINUE 368 : WRITE(IOIMP,1122) 369 : 1122 FORMAT(1X,' VECTEURS DE NORMALISATION '/) 370 : WRITE(IOIMP,1019) (DNORM(I),I=1,LNORM) 371 : WRITE(IOIMP,1020) 372 : 1020 FORMAT(1X/,' ICPR '/) 373 : WRITE(IOIMP,1021)(ICPR(I),I=1,ICPR(/1)) 374 : 1021 FORMAT(1X,20(I5,1X)) 375 : WRITE(IOIMP,*) 'NTANBN',NTANBN,'NIDNCN',NIDNCN,'NTVN',NTVN 376 : ENDIF 377 : SEGDES MSTRUC 378 : WRITE (IOIMP,*) ' FIN DE ELFELE ' 379 : RETURN 380 : END 381 : 382 :
© Cast3M 2003 - All rights reserved.
Disclaimer