Download hookun.eso

Back to the list

   1 : C HOOKUN    SOURCE    AM        08/02/14    21:24:15     6050           
   2 :       SUBROUTINE HOOKUN(VALMAT,IB,IGAU,MFR,EXCEN,EPAIST,
   3 :      +    MELE,NPINT,IFOU,KCAS,NBGMAT,NELMAT,SECT,LHOOK,
   4 :      +   TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,DDHOOK,
   5 :      +   COBMA,XMOB,IRET)
   6 : C
   7 : C----------------------------------------------------------------------
   8 : C
   9 : C   Calcul de la matrice de HOOKE dans le cas d'un 
  10 : C   matériau unidirectionnel
  11 : C
  12 : C   Entrees:
  13 : C   --------
  14 : C   VALMAT   tableau de materiau
  15 : C   IB       numero de l'element
  16 : C   IGAU     numero du point de Gauss
  17 : C   MFR      numero de formulation
  18 : C   EXCEN    excentrement (coques minces avec ou sans cisail. transv)
  19 : C   EPAIST   epaisseur (coques minces avec ou sans cisail. transv)
  20 : C   MELE     numero de l'element fini
  21 : C   NPINT    coque integree ou non
  22 : C   IFOU     numero d'harmonique de Fourier
  23 : C   KCAS     = 1 si on veut la matrice pour elle-meme
  24 : C            = 2 si on veut la matrice pour l'inverser ensuite
  25 : C   NBGMAT, NELMAT tailles des tableaux
  26 : C   SECT     SECTION DE L'ELEMENT IB (<> 0 SI MFR.EQ.27)
  27 : C   LHOOK    taille de la matrice de HOOKE
  28 : C   TXR,XLOC,XGLOB,D1HOOK,ROTHOO  tableaux de travail
  29 : C
  30 : C   Sorties:
  31 : C   --------
  32 : C   DDHOOK   matrice de HOOKE
  33 : 
  34 : C   IRET     = 1 si option existante, 0 sinon
  35 : C
  36 : C---------------------------------------------------------------------
  37 : C
  38 :       IMPLICIT INTEGER(I-N)
  39 :       IMPLICIT REAL*8(A-H,O-Z)
  40 :       PARAMETER(UN=1.D0,DEUX=2.D0,UNDEMI=.5D0)
  41 :       CHARACTER*8 MATE
  42 : C
  43 : -INC CCHAMP                                                                     
  44 : -INC CCOPTIO                                                                    
  45 : C
  46 : * 
  47 :       DIMENSION VALMAT(*)                                                
  48 :       DIMENSION DDHOOK(LHOOK,*),DDHOMU(LHOOK,*)
  49 :       DIMENSION COBMA(10),COBAUX(10)
  50 :       REAL*8 D3HOO1(3,3),D3HOO2(3,3),RO1HOO(3,3)                                
  51 :       REAL*8 D2HOO1(2,2),D2HOO2(2,2),RO2HOO(2,2) 
  52 :       REAL*8 XLOC(IDIM,*),XGLOB(IDIM,*),TXR(IDIM,*)                   
  53 :       REAL*8 D1HOOK(LHOOK,*),ROTHOO(LHOOK,*)
  54 : C
  55 : C     INITIALISATION 
  56 : C                                                                               
  57 :         MATE='UNIDIREC'
  57 :         CALL ZERO(DDHOOK,LHOOK,LHOOK)
  57 :         CALL ZERO(D1HOOK,LHOOK,LHOOK)                                             
  57 :         CALL ZERO(XGLOB,IDIM,IDIM)                                                
  57 :         CALL ZERO(ROTHOO,LHOOK,LHOOK)
  57 :         CALL ZERO(COBMA,LHOOK,1)
  57 :         CALL ZERO(COBAUX,LHOOK,1)
  58 : C
  59 :        IF ((MFR.EQ.1.OR.MFR.EQ.33).AND.IGAU.LE.NBGMAT) THEN 
  60 : c
  61 : c   Formulation massive
  62 : c
  63 :        IF (MFR.EQ.1) THEN
  64 : 
  65 : C         MATRICE DE HOOKE /AXES D'ARMAURE
  66 :           D1HOOK(1,1)=VALMAT(1)
  67 : 
  68 :        ELSE
  69 : c
  70 : c  Formulation milieu poreux
  71 : c
  72 : *      elements massifs
  73 : *
  74 : 
  75 :         IF(MELE.GE.79.AND.MELE.LE.83) THEN
  75 :            CALL PORMAO(VALMAT,MATE,IFOU,IDIM,TXR,XLOC,XGLOB,
  76 :      &                 D1HOOK,ROTHOO,DDHOOK,LHOOK,
  77 :      &                 COBMA,XMOB,KCAS,IRET)
  78 :            GO TO 2035
  79 : *
  80 : *      elements joints
  81 : *
  82 :         ELSE IF(MELE.GE.108.AND.MELE.LE.110) THEN
  82 :             CALL DOUO88(VALMAT,MATE,IFOU,LHOOK,DDHOOK,IRET)
  83 : ***********  COBMA ET XMOB PAS DEFINIS !!!!
  84 :             IRET=0
  85 :             GO TO 2035
  86 :         ELSE
  87 :             IRET=0
  88 :             GO TO 2035
  89 :         ENDIF
  90 : *
  91 :        ENDIF
  92 : *
  93 : C    DEFINITION DES AXES ORTHO./AXES LOCAUX                                     
  94 :         IF(IDIM.EQ.2)THEN                                                       
  95 :           XLOC(1,1)=VALMAT(2)                                                     
  96 :           XLOC(2,1)=VALMAT(3)                                                     
  97 :           XLOC(1,2)=-XLOC(2,1)                                                  
  98 :           XLOC(2,2)=XLOC(1,1)                                                   
  99 :         ELSEIF(IDIM.EQ.3)THEN  
 100 :           XLOC(1,1)=VALMAT(2)                                                     
 101 :           XLOC(2,1)=VALMAT(3) 
 102 :           XLOC(3,1)=VALMAT(4)                                                     
 103 :           XLOC(1,2)=VALMAT(5)                                                     
 104 :           XLOC(2,2)=VALMAT(6)                                                     
 105 :           XLOC(3,2)=VALMAT(7) 
 106 : C                                                                               
 106 :          CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)                                                                                 
 107 :         ENDIF             
 108 : C 
 109 : C    DEFINITION DES AXES ORTHO./AXES GLOBAUX                                    
 110 : C                                                                               
 111 :         IF(IRET.EQ.1)THEN                                                         
 112 : C                                                                               
 113 :          DO 1045  K=1,IDIM                                                         
 114 :           DO 1045 J=1,IDIM                                                        
 115 :             DO 1045 I=1,IDIM                                                      
 116 :           XGLOB(K,J)=TXR(J,I)*XLOC(I,K)+XGLOB(K,J)                              
 117 :  1045    CONTINUE                                                                
 118 : C    MATRICE DE TRANSFORMATION                                                  
 119 :          IF(IDIM.EQ.2)THEN                                                        
 120 :            ROTHOO(1,1)=XGLOB(1,1)*XGLOB(1,1)                                      
 121 :            ROTHOO(1,2)=XGLOB(1,2)*XGLOB(1,2)                                      
 122 :            ROTHOO(1,4)=XGLOB(1,1)*XGLOB(1,2)                                      
 123 :            ROTHOO(2,1)=XGLOB(2,1)*XGLOB(2,1)                                      
 124 :            ROTHOO(2,2)=XGLOB(2,2)*XGLOB(2,2)                                      
 125 :            ROTHOO(2,4)=XGLOB(2,1)*XGLOB(2,2)                                      
 126 :            ROTHOO(3,3)=UN                                                         
 127 :            ROTHOO(4,1)=DEUX*XGLOB(1,1)*XGLOB(2,1)                                 
 128 :            ROTHOO(4,2)=DEUX*XGLOB(1,2)*XGLOB(2,2)                                 
 129 :            ROTHOO(4,4)=XGLOB(1,2)*XGLOB(2,1)+XGLOB(1,1)*XGLOB(2,2)                
 130 :            IF(IFOU.EQ.1)THEN                                                      
 131 :             ROTHOO(5,5)=XGLOB(1,1)                                                
 132 :             ROTHOO(5,6)=XGLOB(1,2)                                                
 133 :             ROTHOO(6,5)=XGLOB(2,1)                                                
 134 :             ROTHOO(6,6)=XGLOB(2,2)                                                
 135 :            ENDIF                                                                  
 136 :          ELSEIF(IDIM.EQ.3)THEN 
 137 :            DO 1050 IC=1,3                                                         
 138 :             DO 1050 IL=1,3                                                        
 139 :              ROTHOO(IL,IC)=XGLOB(IL,IC)*XGLOB(IL,IC)                              
 140 :  1050      CONTINUE                                                             
 141 : C                                                                               
 142 :            DO 1060 IL=1,3                                                         
 143 :             ROTHOO(IL,4)=XGLOB(IL,1)*XGLOB(IL,2)                                 
 144 :             ROTHOO(IL,5)=XGLOB(IL,2)*XGLOB(IL,3)                                 
 145 :             ROTHOO(IL,6)=XGLOB(IL,1)*XGLOB(IL,3)                                 
 146 :  1060      CONTINUE                                                             
 147 : C                                                                               
 148 :            DO 1065 IC=1,3                                                        
 149 :             ROTHOO(4,IC)=DEUX*XGLOB(1,IC)*XGLOB(2,IC)                            
 150 :             ROTHOO(5,IC)=DEUX*XGLOB(2,IC)*XGLOB(3,IC)                            
 151 :             ROTHOO(6,IC)=DEUX*XGLOB(1,IC)*XGLOB(3,IC)                            
 152 :  1065      CONTINUE                                                            
 153 : C                                                                               
 154 :            DO 1070 IL=4,6                                                         
 155 :             IL1=IL-3                                                              
 156 :             IL2=IL1+1                                                             
 157 :             IF(IL2.GT.3)IL2=IL2-3                                                 
 158 :             DO 1070 IC=4,6                                                        
 159 :               IC1=IC-3                                                            
 160 :               IC2=IC1+1                                                           
 161 :               IF(IC2.GT.3)IC2=IC2-3                                               
 162 :                ROTHOO(IL,IC)=XGLOB(IL1,IC1)*XGLOB(IL2,IC2)+                        
 163 :      .                       XGLOB(IL1,IC2)*XGLOB(IL2,IC1)                      
 164 :  1070      CONTINUE                                                            
 165 :             DO 1075 IC=1,6                                                       
 166 :               AA=ROTHOO(6,IC)                                                     
 167 :               ROTHOO(6,IC)=ROTHOO(5,IC)                                           
 168 :               ROTHOO(5,IC)=AA                                                     
 169 :  1075       CONTINUE                                                            
 170 :             DO 1080 IL=1,6                                                       
 171 :               AA=ROTHOO(IL,6)                                                     
 172 :               ROTHOO(IL,6)=ROTHOO(IL,5)                                           
 173 :               ROTHOO(IL,5)=AA                                                     
 174 :  1080       CONTINUE                                                            
 175 :          ENDIF   
 176 : C                                                                               
 177 : C    TRANSFORMATION DE LA MATRICE DE HOOKE ET DE COBAUX
 178 : C                                                                               
 178 :          CALL PRODT(DDHOOK,D1HOOK,ROTHOO,LHOOK,LHOOK)                            
 179 : *
 180 :          IF (MFR.EQ.33) THEN
 181 :           DO 1085 IL=1,LHOOK
 182 :            DO 1085 IC=1,LHOOK
 183 :             COBMA(IL)=COBMA(IL)+ROTHOO(IC,IL)*COBAUX(IC)
 184 :  1085     CONTINUE
 185 :          ENDIF
 186 :         ENDIF        
 187 : C
 188 :        ELSEIF (IGAU.LE.NBGMAT.AND.
 189 :      +          (IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN 
 190 : C
 191 : C  Coques minces
 192 : C
 193 :          IF(MFR.EQ.3) THEN 
 194 : C                                                                               
 195 : C     CAS DKT INTEGRE                                          
 196 : C 
 197 :           IF (NPINT.NE.0) THEN
 198 : * CAS NON ENCORE IMPLEMENTE
 199 :             IRET=0
 200 :             GOTO 2035
 201 :           ELSE
 202 : C                                                                               
 203 : C     CAS TRIDIMENSIONNEL  ET FOURIER                                           
 204 : C                                                                               
 205 :           IF(IFOU.EQ.2.OR.IFOU.EQ.1) THEN                                           
 205 :            CALL ZERO(D3HOO1,3,3)                                                  
 206 :            D3HOO1(1,1)=VALMAT(1)                                                    
 207 :            COSA=VALMAT(2)                                                           
 208 :            SINA=VALMAT(3)
 209 : C                                                                               
 210 :            COS2 = COSA**2                                                         
 211 :            SIN2 = SINA**2                                                         
 212 :            SINCOS = SINA * COSA                                                   
 213 : C                                                                               
 214 :            RO1HOO(1,1) = COS2                                                     
 215 :            RO1HOO(1,2) = SIN2                                                     
 216 :            RO1HOO(1,3) = SINCOS                                                   
 217 :            RO1HOO(2,1) = SIN2                                                     
 218 :            RO1HOO(2,2) = COS2                                                     
 219 :            RO1HOO(2,3) = - SINCOS                                                 
 220 :            RO1HOO(3,1) = - DEUX * SINCOS                                          
 221 :            RO1HOO(3,2) = DEUX * SINCOS                                            
 222 :            RO1HOO(3,3) = COS2 - SIN2                                              
 223 : C                                                                               
 224 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 224 :            CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)                                  
 225 :            DO 1090 J=1,3                                                           
 226 :               DO 1090 I=1,3                                                        
 227 :                DDHOOK(I,J) = D3HOO2(I,J)                                        
 228 :                DDHOOK(I+3,J+3) = D3HOO2(I,J)                                    
 229 :  1090      CONTINUE                                                            
 230 : C                                                                               
 231 : C     CAS AXISYMETRIQUE ET DEFORMATIONS PLANES                                  
 232 : C                                                                               
 233 :           ELSE IF(IFOU.EQ.0.OR.IFOU.EQ.-1.OR.IFOU.EQ.-3) THEN                                     
 233 :            CALL ZERO(D2HOO1,2,2)                                                  
 234 :            D2HOO1(1,1)=VALMAT(1)                                                    
 235 :            COSA=VALMAT(2)                                                           
 236 :            SINA=VALMAT(3)
 237 :             COS2 = COSA**2                                                         
 238 :             SIN2 = SINA**2                                                         
 239 :             RO2HOO(1,1) = COS2                                                     
 240 :             RO2HOO(1,2) = SIN2                                                     
 241 :             RO2HOO(2,1) = SIN2                                                     
 242 :             RO2HOO(2,2) = COS2                                                     
 243 : C                                                                               
 244 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 244 :             CALL PRODT (D2HOO2,D2HOO1,RO2HOO,2,2)                                  
 245 :             DO 1095 J=1,2                                                           
 246 :              DO 1095 I=1,2                                                        
 247 :                DDHOOK(I,J) = D2HOO2(I,J)                                        
 248 :                DDHOOK(I+2,J+2) = D2HOO2(I,J)                                    
 249 :  1095       CONTINUE 
 250 : C                                                                               
 251 : C     CAS CONTRAINTES PLANES                                                    
 252 : C                                                                               
 253 :           ELSE IF(IFOU.EQ.-2) THEN                                                  
 254 :            YG1=VALMAT(1)                                                             
 255 :            DDHOOK(1,1)=YG1                                                        
 256 :            DDHOOK(3,3)=YG1                                                        
 257 : C                                                                               
 258 :           ELSE                                                                      
 259 :             IRET=0                                                                    
 260 :           ENDIF  
 261 :           ENDIF                                                 
 262 : C
 263 : C  Coques epaisses
 264 : C
 265 :          ELSE IF(MFR.EQ.5) THEN   
 266 : C                                                                               
 267 : C     CAS TRIDIMENSIONNEL                                                       
 268 : C                                                                               
 269 :           IF(IFOU.EQ.2) THEN                                                        
 269 :             CALL ZERO(D3HOO1,3,3)                                               
 269 :             CALL ZERO(D2HOO2,2,2)                                               
 270 :             D3HOO1(1,1)=VALMAT(1)                                                 
 271 :             COSA=VALMAT(2)                                                        
 272 :             SINA=VALMAT(3)
 273 : C 
 274 :             COS2 = COSA**2                                                         
 275 :             SIN2 = SINA**2                                                         
 276 :             SINCOS = SINA * COSA                                                   
 277 :             RO1HOO(1,1) = COS2                                                     
 278 :             RO1HOO(1,2) = SIN2                                                     
 279 :             RO1HOO(1,3) = SINCOS                                                   
 280 :             RO1HOO(2,1) = SIN2                                                     
 281 :             RO1HOO(2,2) = COS2                                                     
 282 :             RO1HOO(2,3) = - SINCOS                                                 
 283 :             RO1HOO(3,1) = - DEUX * SINCOS                                          
 284 :             RO1HOO(3,2) = DEUX * SINCOS                                            
 285 :             RO1HOO(3,3) = COS2 - SIN2                                              
 286 : C                                                                               
 287 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 287 :          CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)                                  
 288 :             DO 2000 J=1,3                                                           
 289 :              DO 2000 I=1,3                                                        
 290 :                DDHOOK(I,J) = D3HOO2(I,J)                                        
 291 :  2000       CONTINUE
 292 : C              
 293 :           ELSE                                                                      
 294 :            IRET=0                                                                    
 295 :           ENDIF                                                                     
 296 : C                      
 297 : C  Coques minces avec cisaillement transverse
 298 : C
 299 :          ELSE IF(MFR.EQ.9) THEN   
 300 : C
 301 :            IF(IFOU.EQ.2) THEN                                                                                                                                       
 301 :             CALL ZERO(D3HOO1,3,3)                                               
 301 :             CALL ZERO(D2HOO2,2,2)                                               
 302 :             D3HOO1(1,1)=VALMAT(1)                                                 
 303 :             COSA=VALMAT(2)                                                        
 304 :             SINA=VALMAT(3) 
 305 : C                                                                               
 306 :             COS2 = COSA**2                                                         
 307 :             SIN2 = SINA**2                                                         
 308 :             SINCOS = SINA * COSA                                                   
 309 :             RO1HOO(1,1) = COS2                                                     
 310 :             RO1HOO(1,2) = SIN2                                                     
 311 :             RO1HOO(1,3) = SINCOS                                                   
 312 :             RO1HOO(2,1) = SIN2                                                     
 313 :             RO1HOO(2,2) = COS2                                                     
 314 :             RO1HOO(2,3) = - SINCOS                                                 
 315 :             RO1HOO(3,1) = - DEUX * SINCOS                                          
 316 :             RO1HOO(3,2) = DEUX * SINCOS                                            
 317 :             RO1HOO(3,3) = COS2 - SIN2                                              
 318 : C                                                                                
 319 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 319 :             CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)                                  
 320 :             DO 2015 J=1,3                                                           
 321 :              DO 2015 I=1,3                                                        
 322 :                DDHOOK(I,J) = D3HOO2(I,J)                                        
 323 :                DDHOOK(I+3,J+3) = D3HOO2(I,J)                                    
 324 :  2015       CONTINUE                                                            
 325 : C
 326 :            ELSE                                                                      
 327 :             IRET=0                                                                    
 328 :            ENDIF                                                                     
 329 : C
 330 : C  Cas des barres
 331 : C
 332 :          ELSE IF(MFR.EQ.27) THEN
 333 : C
 334 :           YOU=VALMAT(1)                                                               
 335 :           DDHOOK(1,1)=YOU*SECT 
 336 : C
 337 :          ELSE 
 338 :           IRET=0        
 339 :           GOTO 2035                                                      
 340 :          ENDIF
 341 :         ENDIF
 342 : C        
 343 : C  Prise en compte de l'epaisseur et de l'excentrement
 344 : C  dans le cas des coques minces avec ou sans cisaillement
 345 : C  transverse
 346 : C
 347 :         IF ((MFR.EQ.3.AND.NPINT.EQ.0).OR.MFR.EQ.9) THEN
 347 :              CALL HOOKMU(EPAIST,EXCEN,LHOOK,DDHOOK,DDHOMU)
 348 :              DO 1005 IO=1,LHOOK 
 349 :                 DO 1005 JO=1,LHOOK  
 350 :                    DDHOOK(IO,JO)=DDHOMU(IO,JO)
 351 :  1005        CONTINUE                              
 352 :         ENDIF
 353 : C
 354 :  2035 RETURN             
 355 :       END
 356 : 
 357 : 
 358 : 
 359 : 
 360 : 
 361 :  
 362 :  
 363 :  
 364 :  
 365 :  
 366 :  

© Cast3M 2003 - All rights reserved.
Disclaimer