Download elfele.eso

Back to the list

   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