Download hookor.eso

Back to the list

   1 : C HOOKOR    SOURCE    AM        13/08/06    21:15:00     7814           
   2 :       SUBROUTINE HOOKOR(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 orthotrope
  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 : C   IRET     = 1 si option existante, 0 sinon
  34 : C
  35 : C---------------------------------------------------------------------
  36 : C
  37 :       IMPLICIT INTEGER(I-N)
  38 :       IMPLICIT REAL*8(A-H,O-Z)
  39 :       PARAMETER(UN=1.D0,DEUX=2.D0,UNDEMI=.5D0)
  40 :       PARAMETER(XZER=0.D0,XK=1.2D0)
  41 :       CHARACTER*8 MATE
  42 : C
  43 : -INC CCHAMP                                                                     
  44 : -INC CCOPTIO                                                                    
  45 : C
  46 :       DIMENSION VALMAT(*)
  47 :       DIMENSION DDHOOK(LHOOK,*),DDHOMU(LHOOK,*)
  48 :       DIMENSION COBMA(*),COBAUX(10)
  49 :       REAL*8 D3HOO1(3,3),D3HOO2(3,3),RO1HOO(3,3)                                
  50 :       REAL*8 D2HOO1(2,2),D2HOO2(2,2),RO2HOO(2,2) 
  51 :       REAL*8 XLOC(IDIM,*),XGLOB(IDIM,*),TXR(IDIM,*)                   
  52 :       REAL*8 D1HOOK(LHOOK,*),ROTHOO(LHOOK,*)
  53 : C
  54 : C  INITIALISATIONS
  55 : C
  56 :         MATE='ORTHOTRO'
  56 :         CALL ZERO(DDHOOK,LHOOK,LHOOK)
  56 :         CALL ZERO(D1HOOK,LHOOK,LHOOK)                                             
  56 :         CALL ZERO(XGLOB,IDIM,IDIM)                                                
  56 :         CALL ZERO(COBMA,LHOOK,1)
  56 :         CALL ZERO(COBAUX,LHOOK,1)
  57 : *
  58 : C
  59 : C    JOINT UNIDIMENSIONNEL JOI1
  60 : C
  61 :        IF (MFR.EQ.75) THEN
  62 :          IF(IDIM.EQ.3)THEN
  63 :           DDHOOK(1,1)=VALMAT(7)                                                                               
  64 :           DDHOOK(2,2)=VALMAT(8)                                                                              
  65 :           DDHOOK(3,3)=VALMAT(9)                                                                               
  66 :           DDHOOK(4,4)=VALMAT(10)                                         
  67 :           DDHOOK(5,5)=VALMAT(11)                                      
  68 :           DDHOOK(6,6)=VALMAT(12)
  69 :          ELSE IF(IDIM.EQ.2)THEN
  70 :           DDHOOK(1,1)=VALMAT(3)                                                                               
  71 :           DDHOOK(2,2)=VALMAT(4)                                                                              
  72 :           DDHOOK(3,3)=VALMAT(5)
  73 :          ELSE
  74 :           IRET=0
  75 :          ENDIF
  76 :           GOTO 2035
  77 :        ENDIF
  78 : *
  79 :        IF ( (MFR.EQ.1.OR.MFR.EQ.33.OR.MFR.EQ.31) .AND.
  80 :      &      IGAU.LE.NBGMAT ) THEN 
  81 : C
  82 : C  Formulation massive
  83 : C 
  84 :         IF (MFR.EQ.1 .OR. MFR.EQ.31) THEN
  85 : C
  86 : C      contraintes planes et KCAS=1
  87 : C
  88 :          IF(IFOU.EQ.-2.AND.KCAS.EQ.1)THEN 
  89 :           YG1=VALMAT(1)   
  90 :           YG2=VALMAT(2)   
  91 :           XNU12=VALMAT(3) 
  92 :           G12=VALMAT(4) 
  93 :           XNU21=(YG2/YG1)*XNU12    
  94 :           AUX=UN-XNU12*XNU21      
  95 :           D1HOOK(1,1)=YG1/AUX    
  96 :           D1HOOK(2,1)=XNU21*(YG1/AUX) 
  97 :           D1HOOK(1,2)=D1HOOK(2,1)    
  98 :           D1HOOK(2,2)=YG2/AUX       
  99 :           D1HOOK(4,4)=G12 
 100 : C         
 101 : C     contraintes planes et KCAS=2
 102 : C          
 103 :          ELSEIF(IFOU.EQ.-2.AND.KCAS.EQ.2)THEN
 104 : *
 105 :           YG1=VALMAT(1)                                                              
 106 :           YG2=VALMAT(2)                                                              
 107 :           XNU12=VALMAT(3)                                                            
 108 :           G12=VALMAT(4)                                                              
 109 :           YG3=VALMAT(7)
 110 :           XNU23=VALMAT(8)
 111 :           XNU13=VALMAT(9)
 112 :           XNU21=(YG2/YG1)*XNU12                                                    
 113 :           XNU32=(YG3/YG2)*XNU23                                                    
 114 :           XNU31=(YG3/YG1)*XNU13 
 115 :           AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31                              
 116 :      .       -DEUX*XNU21*XNU32*XNU13)                                           
 117 :           AUX1=AUX/YG1                                                             
 118 :           AUX2=AUX/YG2                                                             
 119 :           AUX3=AUX/YG3                                                             
 120 :           D1HOOK(1,1)=(UN-XNU23*XNU32)/AUX1                                        
 121 :           D1HOOK(1,2)=(XNU21+XNU31*XNU23)/AUX1                                     
 122 :           D1HOOK(2,1)=D1HOOK(1,2)                                                  
 123 :           D1HOOK(1,3)=(XNU31+XNU21*XNU32)/AUX1                                     
 124 :           D1HOOK(3,1)=D1HOOK(1,3)                                                  
 125 :           D1HOOK(2,2)=(UN-XNU13*XNU31)/AUX2                                        
 126 :           D1HOOK(2,3)=(XNU32+XNU12*XNU31)/AUX2                                     
 127 :           D1HOOK(3,2)=D1HOOK(2,3)                                                  
 128 :           D1HOOK(3,3)=(UN-XNU12*XNU21)/AUX3                                        
 129 :           D1HOOK(4,4)=G12 
 130 : C
 131 : C     deformations planes et axisymetrie
 132 : C
 133 :         ELSEIF(IFOU.EQ.-1.OR.IFOU.EQ.0.OR.IFOU.EQ.-3) THEN
 134 :           YG1=VALMAT(1)                                                              
 135 :           YG2=VALMAT(2)                                                              
 136 :           YG3=VALMAT(3)                                                              
 137 :           XNU12=VALMAT(4)                                                            
 138 :           XNU23=VALMAT(5)                                                            
 139 :           XNU13=VALMAT(6)                                                            
 140 :           G12=VALMAT(7) 
 141 :           XNU21=(YG2/YG1)*XNU12                                                    
 142 :           XNU32=(YG3/YG2)*XNU23                                                    
 143 :           XNU31=(YG3/YG1)*XNU13 
 144 :           AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31                              
 145 :      .       -DEUX*XNU21*XNU32*XNU13)                                           
 146 :           AUX1=AUX/YG1                                                             
 147 :           AUX2=AUX/YG2                                                             
 148 :           AUX3=AUX/YG3                                                             
 149 :           D1HOOK(1,1)=(UN-XNU23*XNU32)/AUX1                                        
 150 :           D1HOOK(1,2)=(XNU21+XNU31*XNU23)/AUX1                                     
 151 :           D1HOOK(2,1)=D1HOOK(1,2)                                                  
 152 :           D1HOOK(1,3)=(XNU31+XNU21*XNU32)/AUX1                                     
 153 :           D1HOOK(3,1)=D1HOOK(1,3)                                                  
 154 :           D1HOOK(2,2)=(UN-XNU13*XNU31)/AUX2                                        
 155 :           D1HOOK(2,3)=(XNU32+XNU12*XNU31)/AUX2                                     
 156 :           D1HOOK(3,2)=D1HOOK(2,3)                                                  
 157 :           D1HOOK(3,3)=(UN-XNU12*XNU21)/AUX3                                        
 158 :           D1HOOK(4,4)=G12 
 159 : C
 160 : C       serie de fourier et 3D
 161 : C
 162 :        ELSEIF(IFOU.EQ.1.OR.IFOU.EQ.2)THEN
 163 :           YG1=VALMAT(1)                                                              
 164 :           YG2=VALMAT(2)                                                              
 165 :           YG3=VALMAT(3)                                                              
 166 :           XNU12=VALMAT(4)                                                            
 167 :           XNU23=VALMAT(5)                                                            
 168 :           XNU13=VALMAT(6)                                                            
 169 :           G12=VALMAT(7)                                                              
 170 :           G23=VALMAT(8)                                                              
 171 :           G13=VALMAT(9)                                                              
 172 :           XNU21=(YG2/YG1)*XNU12                                                    
 173 :           XNU32=(YG3/YG2)*XNU23                                                    
 174 :           XNU31=(YG3/YG1)*XNU13                                                    
 175 :           AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31                              
 176 :      .       -DEUX*XNU21*XNU32*XNU13)                                           
 177 :           AUX1=AUX/YG1                                                             
 178 :           AUX2=AUX/YG2                                                             
 179 :           AUX3=AUX/YG3   
 180 :           if (lhook.lt.6) then
 181 :            iret=0
 182 :            goto 2035
 183 :           endif                                                                                                              
 184 :           D1HOOK(1,1)=(UN-XNU23*XNU32)/AUX1                                        
 185 :           D1HOOK(1,2)=(XNU21+XNU31*XNU23)/AUX1                                     
 186 :           D1HOOK(2,1)=D1HOOK(1,2)                                                  
 187 :           D1HOOK(1,3)=(XNU31+XNU21*XNU32)/AUX1                                     
 188 :           D1HOOK(3,1)=D1HOOK(1,3)                                                  
 189 :           D1HOOK(2,2)=(UN-XNU13*XNU31)/AUX2                                        
 190 :           D1HOOK(2,3)=(XNU32+XNU12*XNU31)/AUX2                                     
 191 :           D1HOOK(3,2)=D1HOOK(2,3)                                                  
 192 :           D1HOOK(3,3)=(UN-XNU12*XNU21)/AUX3                                        
 193 :           D1HOOK(4,4)=G12                                                          
 194 :           D1HOOK(5,5)=G13                                                          
 195 :           D1HOOK(6,6)=G23                                                          
 196 : 
 197 : C= -> Modes de calcul 1D
 198 : C=    On calcule directement DDHOOK car les directions d'ORTHOTROPIE
 199 : C=    correspondent aux direction du repere GLOBAL
 200 :         ELSE IF (IFOU.GE.3.AND.IFOU.LE.15) THEN
 201 :           IF (IFOU.EQ.6.AND.KCAS.EQ.1) THEN
 202 :             DDHOOK(1,1)=VALMAT(1)
 203 :           ELSE IF ((IFOU.EQ.5.OR.IFOU.EQ.10.OR.IFOU.EQ.13).AND.
 204 :      .             KCAS.EQ.1) THEN
 205 :             YG1=VALMAT(1)
 206 :             YG3=VALMAT(3)
 207 :             XNU13=VALMAT(6)
 208 :             XNU31=(YG3/YG1)*XNU13
 209 :             AUX=UN/(UN-XNU13*XNU31)
 210 :             DDHOOK(1,1)=YG1*AUX
 211 :             DDHOOK(3,1)=XNU13*YG3*AUX
 212 :             DDHOOK(1,3)=DDHOOK(3,1)
 213 :             DDHOOK(3,3)=YG3*AUX
 214 :           ELSE IF ((IFOU.EQ.4.OR.IFOU.EQ.8).AND.KCAS.EQ.1) THEN
 215 :             YG1=VALMAT(1)
 216 :             YG2=VALMAT(2)
 217 :             XNU12=VALMAT(4)
 218 :             XNU21=(YG2/YG1)*XNU12
 219 :             AUX=UN/(UN-XNU12*XNU21)
 220 :             DDHOOK(1,1)=YG1*AUX
 221 :             DDHOOK(2,1)=XNU21*YG1*AUX
 222 :             DDHOOK(1,2)=DDHOOK(2,1)
 223 :             DDHOOK(2,2)=YG2*AUX
 224 :           ELSE
 225 :             YG1=VALMAT(1)
 226 :             YG2=VALMAT(2)
 227 :             YG3=VALMAT(3)
 228 :             XNU12=VALMAT(4)
 229 :             XNU23=VALMAT(5)
 230 :             XNU13=VALMAT(6)
 231 :             XNU21=(YG2/YG1)*XNU12
 232 :             XNU32=(YG3/YG2)*XNU23
 233 :             XNU31=(YG3/YG1)*XNU13
 234 :             AUX=UN/(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
 235 :      .              -DEUX*XNU12*XNU23*XNU31)
 236 :             AUX1=AUX*YG1
 237 :             AUX2=AUX*YG2
 238 :             DDHOOK(1,1)=(UN-XNU23*XNU32)*AUX1
 239 :             DDHOOK(2,1)=(XNU21+XNU23*XNU31)*AUX1
 240 :             DDHOOK(3,1)=(XNU31+XNU32*XNU21)*AUX1
 241 :             DDHOOK(1,2)=DDHOOK(2,1)
 242 :             DDHOOK(2,2)=(UN-XNU13*XNU31)*AUX2
 243 :             DDHOOK(3,2)=(XNU32+XNU31*XNU12)*AUX2
 244 :             DDHOOK(1,3)=DDHOOK(3,1)
 245 :             DDHOOK(2,3)=DDHOOK(3,2)
 246 :             DDHOOK(3,3)=(UN-XNU12*XNU21)*AUX*YG3
 247 :           ENDIF
 248 :           RETURN
 249 : 
 250 :         ENDIF                                                                     
 251 : C
 252 :        ELSE
 253 : C        
 254 : C  Formulation milieu poreux
 255 : *
 256 : *        elements massifs
 257 : *
 258 :           IF(MELE.GE.79.AND.MELE.LE.83) THEN
 258 :             CALL PORMAO(VALMAT,MATE,IFOU,IDIM,TXR,XLOC,
 259 :      &                  XGLOB,D1HOOK,ROTHOO,DDHOOK,LHOOK,
 260 :      &                  COBMA,XMOB,KCAS,IRET)
 261 :             GO TO 2035
 262 : *
 263 : *        elements joints
 264 : *
 265 :           ELSE IF(MELE.GE.108.AND.MELE.LE.110) THEN
 265 :             CALL DOUO88(VALMAT,MATE,IFOU,LHOOK,DDHOOK,IRET)
 266 : ***********  COBMA ET XMOB PAS DEFINIS !!!!
 267 :              IRET=0
 268 :             GO TO 2035
 269 :           ELSE
 270 :             IRET=0
 271 :             GO TO 2035
 272 :           ENDIF
 273 : *
 274 :         ENDIF                                                                     
 275 : C  DEFINITION DES AXES ORTHO./AXES LOCAUX 
 276 :         IF(IDIM.EQ.2)THEN                                                         
 277 :          IF(IFOU.EQ.-2)THEN                                                      
 278 :           XLOC(1,1)=VALMAT(5)                                                     
 279 :           XLOC(2,1)=VALMAT(6)                                                     
 280 :          ELSEIF(IFOU.EQ.-1.OR.IFOU.EQ.0.OR.
 281 :      +          ((MFR.EQ.1.OR.MFR.EQ.31).AND.IFOU.EQ.-3)) THEN
 282 :           XLOC(1,1)=VALMAT(8)                                                     
 283 :           XLOC(2,1)=VALMAT(9)                                                     
 284 :          ELSEIF(IFOU.EQ.1)THEN                                                  
 285 :           XLOC(1,1)=VALMAT(10)                                                    
 286 :           XLOC(2,1)=VALMAT(11)                                                    
 287 :          ENDIF                                                                  
 288 :          XLOC(1,2)=-XLOC(2,1)                                                   
 289 :          XLOC(2,2)=XLOC(1,1)                                                    
 290 :         ELSEIF(IDIM.EQ.3)THEN                                                   
 291 :          XLOC(1,1)=VALMAT(10)                                                     
 292 :          XLOC(2,1)=VALMAT(11)                                                     
 293 :          XLOC(3,1)=VALMAT(12)                                                     
 294 :          XLOC(1,2)=VALMAT(13)                                                     
 295 :          XLOC(2,2)=VALMAT(14)                                                     
 296 :          XLOC(3,2)=VALMAT(15)                                                     
 297 : C                                                                               
 297 :          CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)                         
 298 :         ENDIF                                                                   
 299 : C 
 300 : C    DEFINITION DES AXES ORTHO./AXES GLOBAUX                                    
 301 : C                                                                               
 302 :         IF(IRET.EQ.1)THEN                                                         
 303 : C 
 304 :          DO 1045  K=1,IDIM                                                         
 305 :           DO 1045 J=1,IDIM                                                        
 306 :             DO 1045 I=1,IDIM                                                      
 307 :           XGLOB(K,J)=TXR(J,I)*XLOC(I,K)+XGLOB(K,J)
 308 :  1045    CONTINUE                                                                
 309 : C    MATRICE DE TRANSFORMATION                                                  
 310 :          IF(IDIM.EQ.2)THEN                                                        
 311 :            ROTHOO(1,1)=XGLOB(1,1)*XGLOB(1,1)                                      
 312 :            ROTHOO(1,2)=XGLOB(1,2)*XGLOB(1,2)                                      
 313 :            ROTHOO(1,4)=XGLOB(1,1)*XGLOB(1,2)                                      
 314 :            ROTHOO(2,1)=XGLOB(2,1)*XGLOB(2,1)                                      
 315 :            ROTHOO(2,2)=XGLOB(2,2)*XGLOB(2,2)                                      
 316 :            ROTHOO(2,4)=XGLOB(2,1)*XGLOB(2,2)                                      
 317 :            ROTHOO(3,3)=UN                                                         
 318 :            ROTHOO(4,1)=DEUX*XGLOB(1,1)*XGLOB(2,1)                                 
 319 :            ROTHOO(4,2)=DEUX*XGLOB(1,2)*XGLOB(2,2)                                 
 320 :            ROTHOO(4,4)=XGLOB(1,2)*XGLOB(2,1)+XGLOB(1,1)*XGLOB(2,2)                
 321 :            IF(IFOU.EQ.1)THEN                                                      
 322 :             ROTHOO(5,5)=XGLOB(1,1)                                                
 323 :             ROTHOO(5,6)=XGLOB(1,2)                                                
 324 :             ROTHOO(6,5)=XGLOB(2,1)                                                
 325 :             ROTHOO(6,6)=XGLOB(2,2)                                                
 326 :            ENDIF                                                                  
 327 :          ELSEIF(IDIM.EQ.3)THEN                                                   
 328 :            DO 1050 IC=1,3                                                         
 329 :             DO 1050 IL=1,3                                                        
 330 :              ROTHOO(IL,IC)=XGLOB(IL,IC)*XGLOB(IL,IC)                              
 331 :  1050      CONTINUE                                                     
 332 : C                                                                       
 333 :            if (lhook.lt.6) then
 334 :              iret=0
 335 :              goto 2035
 336 :            endif 
 337 :            DO 1060 IL=1,3                                               
 338 :             ROTHOO(IL,4)=XGLOB(IL,1)*XGLOB(IL,2)                        
 339 :             ROTHOO(IL,5)=XGLOB(IL,2)*XGLOB(IL,3)                        
 340 :             ROTHOO(IL,6)=XGLOB(IL,1)*XGLOB(IL,3)                        
 341 :  1060      CONTINUE                                                     
 342 : C                                                                       
 343 :            DO 1065 IC=1,3                                               
 344 :             ROTHOO(4,IC)=DEUX*XGLOB(1,IC)*XGLOB(2,IC)                   
 345 :             ROTHOO(5,IC)=DEUX*XGLOB(2,IC)*XGLOB(3,IC)                   
 346 :             ROTHOO(6,IC)=DEUX*XGLOB(1,IC)*XGLOB(3,IC)                   
 347 :  1065      CONTINUE                                                     
 348 : C                                                                       
 349 :            DO 1070 IL=4,6                                                         
 350 :             IL1=IL-3                                                              
 351 :             IL2=IL1+1                                                             
 352 :             IF(IL2.GT.3)IL2=IL2-3                                                 
 353 :             DO 1070 IC=4,6                                                        
 354 :               IC1=IC-3                                                            
 355 :               IC2=IC1+1                                                           
 356 :               IF(IC2.GT.3)IC2=IC2-3                                               
 357 :                ROTHOO(IL,IC)=XGLOB(IL1,IC1)*XGLOB(IL2,IC2)+                        
 358 :      .                       XGLOB(IL1,IC2)*XGLOB(IL2,IC1)                      
 359 :  1070      CONTINUE                                                            
 360 :             DO 1075 IC=1,6                                                       
 361 :               AA=ROTHOO(6,IC)                                                     
 362 :               ROTHOO(6,IC)=ROTHOO(5,IC)                                           
 363 :               ROTHOO(5,IC)=AA                                                     
 364 :  1075       CONTINUE                                                            
 365 :             DO 1080 IL=1,6                                                       
 366 :               AA=ROTHOO(IL,6)                                                     
 367 :               ROTHOO(IL,6)=ROTHOO(IL,5)                                           
 368 :               ROTHOO(IL,5)=AA                                                     
 369 :  1080       CONTINUE                                                            
 370 :          ENDIF                                                                   
 371 : C                                                                               
 372 : C    TRANSFORMATION DE LA MATRICE DE HOOKE ET DE COBAUX
 373 : C                                                                               
 373 :          CALL PRODT(DDHOOK,D1HOOK,ROTHOO,LHOOK,LHOOK)                            
 374 : *
 375 :          IF (MFR.EQ.33) THEN
 376 :           DO 1085 IL=1,LHOOK
 377 :            DO 1085 IC=1,LHOOK
 378 :             COBMA(IL)=COBMA(IL)+ROTHOO(IC,IL)*COBAUX(IC)
 379 :  1085     CONTINUE
 380 :          ENDIF
 381 :        ENDIF
 382 : C
 383 :        ELSEIF (IGAU.LE.NBGMAT.AND.
 384 :      +          (IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN 
 385 : C
 386 : C  Coques minces
 387 : C
 388 :          IF(MFR.EQ.3) THEN 
 389 : C                                                                               
 390 : C     CAS DKT INTEGRE                                          
 391 : C 
 392 :           IF (NPINT.NE.0) THEN
 393 : * CAS NON ENCORE IMPLEMENTE
 394 :             IRET=0
 395 :             GOTO 2035
 396 :           ELSE
 397 : C                                                                               
 398 : C     CAS TRIDIMENSIONNEL  ET FOURIER                                           
 399 : C                                                                               
 400 :            IF(IFOU.EQ.2.OR.IFOU.EQ.1) THEN 
 401 :             YG1 =VALMAT(1)                                                              
 402 :             YG2 = VALMAT(2)                                                          
 403 :             XNU12 = VALMAT(3)                                                        
 404 :             G12 = VALMAT(4)                                                          
 405 :             COSA = VALMAT(5)                                                         
 406 :             SINA = VALMAT(6) 
 407 : C                                                                               
 408 :             X1NUNU = UN - (XNU12**2) * YG2 / YG1                                   
 409 : C                                                                               
 410 :             D3HOO1(1,1) = YG1 / X1NUNU                                             
 411 :             D3HOO1(2,2) = YG2 / X1NUNU                                             
 412 :             D3HOO1(1,2) = XNU12 * D3HOO1(2,2)                                      
 413 :             D3HOO1(2,1) = D3HOO1(1,2)                                              
 414 :             D3HOO1(3,3) = G12                                                      
 415 :             D3HOO1(1,3) = XZER                                                     
 416 :             D3HOO1(2,3) = XZER                                                     
 417 :             D3HOO1(3,1) = XZER                                                     
 418 :             D3HOO1(3,2) = XZER
 419 : C                                                                               
 420 :             COS2 = COSA**2                                                         
 421 :             SIN2 = SINA**2                                                         
 422 :             SINCOS = SINA * COSA                                                   
 423 : C                                                                                
 424 :             RO1HOO(1,1) = COS2                                                     
 425 :             RO1HOO(1,2) = SIN2                                                     
 426 :             RO1HOO(1,3) = SINCOS                                                   
 427 :             RO1HOO(2,1) = SIN2                                                     
 428 :             RO1HOO(2,2) = COS2                                                     
 429 :             RO1HOO(2,3) = - SINCOS                                                 
 430 :             RO1HOO(3,1) = - DEUX * SINCOS                                          
 431 :             RO1HOO(3,2) = DEUX * SINCOS                                            
 432 :             RO1HOO(3,3) = COS2 - SIN2                                              
 433 : C                                                                               
 434 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 434 :             CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)                                  
 435 :             DO 1090 J=1,3                                                           
 436 :               DO 1090 I=1,3                                                        
 437 :                DDHOOK(I,J) = D3HOO2(I,J) 
 438 :                DDHOOK(I+3,J+3) = D3HOO2(I,J) 
 439 :  1090       CONTINUE 
 440 : C                                                                               
 441 : C     CAS AXISYMETRIQUE ET DEFORMATIONS PLANES                                  
 442 : C                                                                               
 443 :            ELSE IF(IFOU.EQ.0.OR.IFOU.EQ.-1.OR.IFOU.EQ.-3) THEN                                     
 444 :             YG1 = VALMAT(1)                                                          
 445 :             YG2 = VALMAT(2)                                                          
 446 :             XNU12 = VALMAT(3)                                                        
 447 :             COSA = VALMAT(5)                                                         
 448 :             SINA = VALMAT(6)                                                         
 449 : C                                                                               
 450 :             X1NUNU = UN - (XNU12**2) * YG2 / YG1                                   
 451 : C                                                                               
 452 :             D2HOO1(1,1) = YG1 / X1NUNU                                             
 453 :             D2HOO1(2,2) = YG2 / X1NUNU                                             
 454 :             D2HOO1(1,2) = XNU12 * D2HOO1(2,2)                                      
 455 :             D2HOO1(2,1) = D2HOO1(1,2)                                              
 456 : C                                                                               
 457 :             COS2 = COSA**2                                                         
 458 :             SIN2 = SINA**2                                                         
 459 :             RO2HOO(1,1) = COS2                                                     
 460 :             RO2HOO(1,2) = SIN2                                                     
 461 :             RO2HOO(2,1) = SIN2                                                     
 462 :             RO2HOO(2,2) = COS2                                                     
 463 : C                                                                               
 464 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 464 :             CALL PRODT (D2HOO2,D2HOO1,RO2HOO,2,2)                                  
 465 :             DO 1095 J=1,2                                                           
 466 :              DO 1095 I=1,2                                                        
 467 :                DDHOOK(I,J) = D2HOO2(I,J)                                        
 468 :                DDHOOK(I+2,J+2) = D2HOO2(I,J)                                    
 469 :  1095       CONTINUE                                                            
 470 : C                                                                               
 471 : C     CAS CONTRAINTES PLANES                                                    
 472 : C                                                                               
 473 :            ELSE IF(IFOU.EQ.-2) THEN                                                  
 474 :             YG1=VALMAT(1)                                                             
 475 :             DDHOOK(1,1)=YG1                                                        
 476 :             DDHOOK(3,3)=YG1                                                        
 477 : C                                                                               
 478 :            ELSE                                                                      
 479 :             IRET=0                                                                    
 480 :            ENDIF  
 481 :           ENDIF                                                
 482 : C
 483 : C  Coques epaisses
 484 : C
 485 :          ELSE IF(MFR.EQ.5) THEN   
 486 : C                                                                               
 487 : C     CAS TRIDIMENSIONNEL                                                       
 488 : C                                                                               
 489 :           IF(IFOU.EQ.2) THEN                                                        
 490 :             YG1 = VALMAT(1)                                                       
 491 :             YG2 = VALMAT(2)                                                       
 492 :             XNU12 = VALMAT(3)                                                     
 493 :             G12 = VALMAT(4)                                                       
 494 :             G23 = VALMAT(5)                                                       
 495 :             G13 = VALMAT(6)                                                       
 496 :             COSA = VALMAT(7)                                                      
 497 :             SINA = VALMAT(8)                                                      
 498 :             X1NUNU = UN - (XNU12**2) * YG2 / YG1                                
 499 : C                                                                               
 500 :             D3HOO1(1,1) = YG1 / X1NUNU                                          
 501 :             D3HOO1(2,2) = YG2 / X1NUNU                                          
 502 :             D3HOO1(1,2) = XNU12 * D3HOO1(2,2)                                   
 503 :             D3HOO1(2,1) = D3HOO1(1,2)                                           
 504 :             D3HOO1(3,3) = G12                                                   
 505 :             D3HOO1(1,3) = XZER                                                  
 506 :             D3HOO1(2,3) = XZER                                                  
 507 :             D3HOO1(3,1) = XZER                                                  
 508 :             D3HOO1(3,2) = XZER                                                  
 509 :             D2HOO1(1,1) = G13/XK                                                
 510 :             D2HOO1(2,2) = G23/XK                                                
 511 :             D2HOO1(1,2) = XZER                                                  
 512 :             D2HOO1(2,1) = XZER
 513 : C 
 514 :             COS2 = COSA**2                                                         
 515 :             SIN2 = SINA**2                                                         
 516 :             SINCOS = SINA * COSA                                                   
 517 :             RO1HOO(1,1) = COS2                                                     
 518 :             RO1HOO(1,2) = SIN2                                                     
 519 :             RO1HOO(1,3) = SINCOS                                                   
 520 :             RO1HOO(2,1) = SIN2                                                     
 521 :             RO1HOO(2,2) = COS2                                                     
 522 :             RO1HOO(2,3) = - SINCOS                                                 
 523 :             RO1HOO(3,1) = - DEUX * SINCOS                                          
 524 :             RO1HOO(3,2) = DEUX * SINCOS                                            
 525 :             RO1HOO(3,3) = COS2 - SIN2                                              
 526 : C                                                                               
 527 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 527 :          CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)                                  
 528 :             DO 2000 J=1,3                                                           
 529 :              DO 2000 I=1,3                                                        
 530 :                DDHOOK(I,J) = D3HOO2(I,J)                                        
 531 :  2000       CONTINUE
 532 :             RO2HOO(1,1) = COSA                                                   
 533 :             RO2HOO(1,2) = SINA                                                   
 534 :             RO2HOO(2,1) = -SINA                                                  
 535 :             RO2HOO(2,2) = COSA                                                   
 535 :             CALL PRODT (D2HOO2,D2HOO1,RO2HOO,2,2)                                
 536 : C                                                                               
 537 :             DO 2005 J=1,2                                                           
 538 :              DO 2005 I=1,2                                                        
 539 :                DDHOOK(3+I,3+J) = D2HOO2(I,J)                                    
 540 :  2005       CONTINUE                                                            
 541 : C              
 542 :           ELSE                                                                      
 543 :            IRET=0                                                                    
 544 :           ENDIF                                                                     
 545 : C                      
 546 : C  Coques minces avec cisaillement transverse
 547 : C
 548 :          ELSE IF(MFR.EQ.9) THEN   
 549 : C
 550 :           YG1 = VALMAT(1)                                                       
 551 :           YG2 = VALMAT(2)                                                       
 552 :           XNU12 = VALMAT(3)                                                     
 553 :           G12 = VALMAT(4)                                                       
 554 :           G23 = VALMAT(5)                                                       
 555 :           G13 = VALMAT(6)     
 556 : C                   
 557 : C                                                                               
 558 : C     CAS TRIDIMENSIONNEL                                                       
 559 : C                                                                               
 560 :            IF(IFOU.EQ.2) THEN 
 561 :             COSA = VALMAT(7) 
 562 :             SINA = VALMAT(8)
 563 : C                           
 564 :             X1NUNU = UN - (XNU12**2) * YG2 / YG1                               
 565 :             D3HOO1(1,1) = YG1 / X1NUNU                                         
 566 :             D3HOO1(2,2) = YG2 / X1NUNU                                         
 567 :             D3HOO1(1,2) = XNU12 * D3HOO1(2,2)                                  
 568 :             D3HOO1(2,1) = D3HOO1(1,2)                                          
 569 :             D3HOO1(3,3) = G12                                                  
 570 :             D3HOO1(1,3) = XZER                                                 
 571 :             D3HOO1(2,3) = XZER                                                 
 572 :             D3HOO1(3,1) = XZER                                                 
 573 :             D3HOO1(3,2) = XZER                                                 
 574 :             D2HOO1(1,1) = G13/XK                                               
 575 :             D2HOO1(2,2) = G23/XK                                               
 576 :             D2HOO1(1,2) = XZER                                                 
 577 :             D2HOO1(2,1) = XZER 
 578 : C                                                                               
 579 :             COS2 = COSA**2                                                         
 580 :             SIN2 = SINA**2                                                         
 581 :             SINCOS = SINA * COSA                                                   
 582 :             RO1HOO(1,1) = COS2                                                     
 583 :             RO1HOO(1,2) = SIN2                                                     
 584 :             RO1HOO(1,3) = SINCOS                                                   
 585 :             RO1HOO(2,1) = SIN2                                                     
 586 :             RO1HOO(2,2) = COS2                                                     
 587 :             RO1HOO(2,3) = - SINCOS                                                 
 588 :             RO1HOO(3,1) = - DEUX * SINCOS                                          
 589 :             RO1HOO(3,2) = DEUX * SINCOS                                            
 590 :             RO1HOO(3,3) = COS2 - SIN2                                              
 591 : C                                                                                
 592 : C        PASSAGE DANS LE REPERE DE L'ELEMENT:                                   
 592 :             CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)                                  
 593 :             DO 2015 J=1,3                                                           
 594 :              DO 2015 I=1,3                                                        
 595 :                DDHOOK(I,J) = D3HOO2(I,J)                                        
 596 :                DDHOOK(I+3,J+3) = D3HOO2(I,J)                                    
 597 :  2015       CONTINUE                                                            
 598 : C                                                                               
 599 :             RO2HOO(1,1) = COSA                                                    
 600 :             RO2HOO(1,2) = SINA                                                    
 601 :             RO2HOO(2,1) = -SINA                                                   
 602 :             RO2HOO(2,2) = COSA                                                    
 602 :             CALL PRODT (D2HOO2,D2HOO1,RO2HOO,2,2)                                 
 603 :             DO 2020 J=1,2                                                            
 604 :              DO 2020 I=1,2                                                     
 605 :                 DDHOOK(6+I,6+J) = D2HOO2(I,J)                                    
 606 :  2020       CONTINUE                                                         
 607 :            ELSE                                                                      
 608 :             IRET=0                                                                    
 609 : *           ENDIF                                                                     
 610 :           ENDIF  
 611 : C
 612 : C  Cas des barres
 613 : C
 614 :          ELSE IF(MFR.EQ.27) THEN
 615 : C
 616 :           YOU=VALMAT(1)                                                               
 617 :           DDHOOK(1,1)=YOU*SECT 
 618 : C
 619 : C  Elements joints JOT3, JOI4 et JOI2
 620 : C
 621 :          ELSE IF(MFR.EQ.35) THEN   
 622 : C                                                                               
 623 : C     CAS TRIDIMENSIONNEL                                                       
 624 : C                                                                               
 625 :           IF(IFOU.EQ.2) THEN                                                        
 626 :            ZK1 =VALMAT(1)
 627 :            ZK2 =VALMAT(2)
 628 :            ZK3 =VALMAT(3)
 629 :            COSA=VALMAT(4)
 630 :            SINA=VALMAT(5) 
 631 : C                                                                       
 632 :            D3HOO1(1,1)=ZK1                                              
 633 :            D3HOO1(2,2)=ZK2                                              
 634 :            D3HOO1(3,3)=ZK3
 635 :            D3HOO1(1,2)=XZER                                                 
 636 :            D3HOO1(1,3)=XZER                                                 
 637 :            D3HOO1(2,1)=XZER                                                 
 638 :            D3HOO1(2,3)=XZER                                                 
 639 :            D3HOO1(3,1)=XZER 
 640 :            D3HOO1(3,2)=XZER 
 641 : C                                                                       
 642 :            RO1HOO(1,1) =  COSA                                          
 643 :            RO1HOO(1,2) = -SINA                                          
 644 :            RO1HOO(1,3) =  0.0D0                                         
 645 :            RO1HOO(2,1) =  SINA                                          
 646 :            RO1HOO(2,2) =  COSA                                          
 647 :            RO1HOO(2,3) =  0.0D0                                             
 648 :            RO1HOO(3,1) =  0.0D0                                          
 649 :            RO1HOO(3,2) =  0.0D0                                            
 650 :            RO1HOO(3,3) =  1.0D0
 651 : C                                     
 652 : C       PASSAGE DANS LE REPERE DE L'ELEMENT:
 653 : C                                   
 653 :            CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3)                        
 654 :            DO 2025 J=1,3                                                           
 655 :             DO 2025 I=1,3  
 656 :              DDHOOK(I,J) = D3HOO2(I,J)
 657 :  2025     CONTINUE
 658 : C
 659 :           ELSE
 660 :            IRET=0     
 661 :           ENDIF   
 662 : C
 663 :          ELSE 
 664 :           IRET=0        
 665 :           GOTO 2035    
 666 :          ENDIF
 667 :         ENDIF
 668 : C        
 669 : C  Prise en compte de l'epaisseur et de l'excentrement
 670 : C  dans le cas des coques minces avec ou sans cisaillement
 671 : C  transverse
 672 : C
 673 :         IF ((MFR.EQ.3.AND.NPINT.EQ.0).OR.MFR.EQ.9) THEN
 673 :              CALL HOOKMU(EPAIST,EXCEN,LHOOK,DDHOOK,DDHOMU) 
 674 :              DO 1005 IO=1,LHOOK 
 675 :                 DO 1005 JO=1,LHOOK  
 676 :                    DDHOOK(IO,JO)=DDHOMU(IO,JO)
 677 :  1005        CONTINUE 
 678 :         ENDIF 
 679 : C
 680 : *
 681 :  2035 RETURN             
 682 :       END
 683 : 
 684 :  
 685 :  
 686 :  

© Cast3M 2003 - All rights reserved.
Disclaimer