Download pormao.eso

Back to the list

   1 : C PORMAO    SOURCE    CHAT      05/01/13    02:17:57     5004           
   2 :       SUBROUTINE PORMAO(VELA,MATE,IFOU,IDIM,TXR,XLOC,
   3 :      .         XGLOB,D1HOOK,ROTHOO,DDHOOK,LHOOK,COBMA,XMOB,KCAS,IRET)
   4 : C-----------------------------------------------------------------------
   5 : C                                                                               
   6 : C  MATRICE DE HOOK DES ELEMENTS MASSIFS ORTHOTROPES OU ANISOTROPES              
   7 : C  SPECIAL POUR MILIEU POREUX
   8 : C                                                                               
   9 : C  ENTREES                                                                      
  10 : C     VELA() = materiau dans un tableau de travail                              
  11 : C     MATE   = Nom du materiau                                                  
  12 : C     IFOU   = num{ro d'harmonique de  fourier: IFOUR de CCOPTIO                
  13 : C     IDIM   = DEFINIT SI ON EST EN 2D OU 3D                                    
  14 : C     TXR  = COS-DIRECTEURS DES AXES LOCAUX /REPERE GLOBAL                      
  15 : C     LHOOK  = TAILLE DE LA MATRICE DE HOOKE                                    
  16 : C     KCAS   = 1 SI ON VEUT LA MATRICE POUR ELLE MEME                           
  17 : C            = 2 SI ON VEUT LA MATRICE POUR L'INVERSER ENSUITE                  
  18 : C    XLOC  |                                                                    
  19 : C    XGLOB |= TABLEAU DE TRAVAIL                                                
  20 : C    D1HOOK|                                                                    
  21 : C                                                                               
  22 : C  SORTIES                                                                      
  23 : C     DDHOOK(LHOOK,LHOOK) = matrice de hooke                                    
  24 : C     IRET = 1 si option existante 0 SINON                                      
  25 : C                                                                               
  26 : C    INSPIRE DE DOHMAO
  27 : C-----------------------------------------------------------------------
  28 : C                                                                               
  29 :       IMPLICIT INTEGER(I-N)
  30 :       IMPLICIT REAL*8(A-H,O-Z)                                                  
  31 :       PARAMETER(UNDEMI=.5D0,XZER=0.0D0,XK=1.2D0)                                
  32 :       PARAMETER(UN=1.D0,DEUX=2.D0)                                              
  33 :       CHARACTER*8 MATE                                                          
  34 : C                                                                               
  35 :       DIMENSION VELA(*),DDHOOK(LHOOK,*),TXR(IDIM,*)
  36 :       DIMENSION  XLOC(IDIM,*),D1HOOK(LHOOK,*)                                   
  37 :       DIMENSION XGLOB(IDIM,*),ROTHOO(LHOOK,*)                                   
  38 :       DIMENSION COBMA(*),COBAUX(10)
  39 : C                                                                               
  40 :       IRET=1                                                                    
  40 :       CALL ZERO(D1HOOK,LHOOK,LHOOK)                                             
  40 :       CALL ZERO(XGLOB,IDIM,IDIM)                                                
  40 :       CALL ZERO(ROTHOO,LHOOK,LHOOK)                                             
  40 :       CALL ZERO(DDHOOK,LHOOK,LHOOK)                                             
  40 :       CALL ZERO(COBMA,LHOOK,1)
  40 :       CALL ZERO(COBAUX,LHOOK,1)
  41 : C                                                                               
  42 :       IF(MATE.EQ.'ORTHOTRO')THEN                                                
  43 : C   MATRICE DE HOOK / AXES ORTHO                                                
  44 :        IF(IFOU.EQ.-2.AND.KCAS.EQ.1)THEN                                         
  45 : C    CONTRAINTE PLANE ET KCAS = 1
  46 :        YG1=VELA(1)                                                              
  47 :        YG2=VELA(2)                                                              
  48 :        XNU12=VELA(3)                                                            
  49 :        G12=VELA(4)                                                              
  50 :        COBAUX(1)=VELA(7)
  51 :        COBAUX(2)=VELA(8)
  52 :        XMOB    =VELA(9)
  53 :        XNU21=(YG2/YG1)*XNU12                                                    
  54 :        AUX=UN-XNU12*XNU21                                                       
  55 :        D1HOOK(1,1)=YG1/AUX                                                      
  56 :        D1HOOK(2,1)=XNU21*(YG1/AUX)                                              
  57 :        D1HOOK(1,2)=D1HOOK(2,1)                                                  
  58 :        D1HOOK(2,2)=YG2/AUX                                                      
  59 :        D1HOOK(4,4)=G12                                                          
  60 :        ELSE IF(IFOU.EQ.-2.AND.KCAS.EQ.2)THEN
  61 : C    CONTRAINTE PLANE  ET KCAS=2
  62 :        YG1=VELA(1)                                                              
  63 :        YG2=VELA(2)                                                              
  64 :        XNU12=VELA(3)                                                            
  65 :        YG3=VELA(10)
  66 :        XNU23=VELA(11)
  67 :        XNU13=VELA(12)
  68 :        G12=VELA(4)                                                              
  69 :        COBAUX(1)=VELA(7)
  70 :        COBAUX(2)=VELA(8)
  71 :        XMOB    =VELA(9)
  72 :        XNU21=(YG2/YG1)*XNU12                                                    
  73 :        XNU32=(YG3/YG2)*XNU23                                                    
  74 :        XNU31=(YG3/YG1)*XNU13                                                    
  75 :        AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31                              
  76 :      .       -DEUX*XNU21*XNU32*XNU13)                                           
  77 :        AUX1=AUX/YG1                                                             
  78 :        AUX2=AUX/YG2                                                             
  79 :        AUX3=AUX/YG3                                                             
  80 :        D1HOOK(1,1)=(UN-XNU23*XNU32)/AUX1                                        
  81 :        D1HOOK(1,2)=(XNU21+XNU31*XNU23)/AUX1                                     
  82 :        D1HOOK(2,1)=D1HOOK(1,2)                                                  
  83 :        D1HOOK(1,3)=(XNU31+XNU21*XNU32)/AUX1                                     
  84 :        D1HOOK(3,1)=D1HOOK(1,3)                                                  
  85 :        D1HOOK(2,2)=(UN-XNU13*XNU31)/AUX2                                        
  86 :        D1HOOK(2,3)=(XNU32+XNU12*XNU31)/AUX2                                     
  87 :        D1HOOK(3,2)=D1HOOK(2,3)                                                  
  88 :        D1HOOK(3,3)=(UN-XNU12*XNU21)/AUX3                                        
  89 :        D1HOOK(4,4)=G12                                                          
  90 :       ELSEIF(IFOU.EQ.-1.OR.IFOU.EQ.0) THEN
  91 : C   DEFORMATION PLANE,AXISYMETRIE                                               
  92 :        YG1=VELA(1)                                                              
  93 :        YG2=VELA(2)                                                              
  94 :        YG3=VELA(3)                                                              
  95 :        XNU12=VELA(4)                                                            
  96 :        XNU23=VELA(5)                                                            
  97 :        XNU13=VELA(6)                                                            
  98 :        G12=VELA(7)                                                              
  99 :        COBAUX(1)=VELA(10)
 100 :        COBAUX(2)=VELA(11)
 101 :        COBAUX(3)=VELA(12)
 102 :        XMOB    =VELA(13)
 103 :        XNU21=(YG2/YG1)*XNU12                                                    
 104 :        XNU32=(YG3/YG2)*XNU23                                                    
 105 :        XNU31=(YG3/YG1)*XNU13                                                    
 106 :        AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31                              
 107 :      .       -DEUX*XNU21*XNU32*XNU13)                                           
 108 :        AUX1=AUX/YG1                                                             
 109 :        AUX2=AUX/YG2                                                             
 110 :        AUX3=AUX/YG3                                                             
 111 :        D1HOOK(1,1)=(UN-XNU23*XNU32)/AUX1                                        
 112 :        D1HOOK(1,2)=(XNU21+XNU31*XNU23)/AUX1                                     
 113 :        D1HOOK(2,1)=D1HOOK(1,2)                                                  
 114 :        D1HOOK(1,3)=(XNU31+XNU21*XNU32)/AUX1                                     
 115 :        D1HOOK(3,1)=D1HOOK(1,3)                                                  
 116 :        D1HOOK(2,2)=(UN-XNU13*XNU31)/AUX2                                        
 117 :        D1HOOK(2,3)=(XNU32+XNU12*XNU31)/AUX2                                     
 118 :        D1HOOK(3,2)=D1HOOK(2,3)                                                  
 119 :        D1HOOK(3,3)=(UN-XNU12*XNU21)/AUX3                                        
 120 :        D1HOOK(4,4)=G12                                                          
 121 :       ELSEIF(IFOU.EQ.1.OR.IFOU.EQ.2)THEN                                        
 122 : C  AXISYMETRIE DE FOURIER  ET 3D
 123 :        YG1=VELA(1)                                                              
 124 :        YG2=VELA(2)                                                              
 125 :        YG3=VELA(3)                                                              
 126 :        XNU12=VELA(4)                                                            
 127 :        XNU23=VELA(5)                                                            
 128 :        XNU13=VELA(6)                                                            
 129 :        G12=VELA(7)                                                              
 130 :        G23=VELA(8)                                                              
 131 :        G13=VELA(9)                                                              
 132 : *
 133 :        IF(IFOU.EQ.1) THEN
 134 :          COBAUX(1)=VELA(12)
 135 :          COBAUX(2)=VELA(13)
 136 :          COBAUX(3)=VELA(14)
 137 :          XMOB    =VELA(15)
 138 :        ELSE IF (IFOU.EQ.2) THEN
 139 :          COBAUX(1)=VELA(16)
 140 :          COBAUX(2)=VELA(17)
 141 :          COBAUX(3)=VELA(18)
 142 :          XMOB    =VELA(19)
 143 :        ENDIF
 144 : *
 145 :        XNU21=(YG2/YG1)*XNU12                                                    
 146 :        XNU32=(YG3/YG2)*XNU23                                                    
 147 :        XNU31=(YG3/YG1)*XNU13                                                    
 148 :        AUX=(UN-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31                              
 149 :      .       -DEUX*XNU21*XNU32*XNU13)                                           
 150 :        AUX1=AUX/YG1                                                             
 151 :        AUX2=AUX/YG2                                                             
 152 :        AUX3=AUX/YG3                                                             
 153 :        D1HOOK(1,1)=(UN-XNU23*XNU32)/AUX1                                        
 154 :        D1HOOK(1,2)=(XNU21+XNU31*XNU23)/AUX1                                     
 155 :        D1HOOK(2,1)=D1HOOK(1,2)                                                  
 156 :        D1HOOK(1,3)=(XNU31+XNU21*XNU32)/AUX1                                     
 157 :        D1HOOK(3,1)=D1HOOK(1,3)                                                  
 158 :        D1HOOK(2,2)=(UN-XNU13*XNU31)/AUX2                                        
 159 :        D1HOOK(2,3)=(XNU32+XNU12*XNU31)/AUX2                                     
 160 :        D1HOOK(3,2)=D1HOOK(2,3)                                                  
 161 :        D1HOOK(3,3)=(UN-XNU12*XNU21)/AUX3                                        
 162 :        D1HOOK(4,4)=G12                                                          
 163 :        D1HOOK(5,5)=G13                                                          
 164 :        D1HOOK(6,6)=G23                                                          
 165 :       ENDIF                                                                     
 166 : C  DEFINITION DES AXES ORTHO./AXES LOCAUX                                       
 167 :       IF(IDIM.EQ.2)THEN                                                         
 168 :         IF(IFOU.EQ.-2)THEN                                                      
 169 :           XLOC(1,1)=VELA(5)                                                     
 170 :           XLOC(2,1)=VELA(6)                                                     
 171 :         ELSEIF(IFOU.EQ.-1.OR.IFOU.EQ.0)THEN                                     
 172 :           XLOC(1,1)=VELA(8)                                                     
 173 :           XLOC(2,1)=VELA(9)                                                     
 174 :          ELSEIF(IFOU.EQ.1)THEN                                                  
 175 :           XLOC(1,1)=VELA(10)                                                    
 176 :           XLOC(2,1)=VELA(11)                                                    
 177 :          ENDIF                                                                  
 178 :          XLOC(1,2)=-XLOC(2,1)                                                   
 179 :          XLOC(2,2)=XLOC(1,1)                                                    
 180 :         ELSEIF(IDIM.EQ.3)THEN                                                   
 181 :          XLOC(1,1)=VELA(10)                                                     
 182 :          XLOC(2,1)=VELA(11)                                                     
 183 :          XLOC(3,1)=VELA(12)                                                     
 184 :          XLOC(1,2)=VELA(13)                                                     
 185 :          XLOC(2,2)=VELA(14)                                                     
 186 :          XLOC(3,2)=VELA(15)                                                     
 187 : C                                                                               
 187 :          CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)                         
 188 :         ENDIF                                                                   
 189 :       ELSEIF(MATE.EQ.'ANISOTRO')THEN                                            
 190 : C                                                                               
 191 : C   MATRICE DE HOOK / AXES ORTHO                                                
 192 :        IF(IFOU.EQ.-2.AND.KCAS.EQ.1)THEN                                         
 193 : C    CONTRAINTE PLANE  ET KCAS = 1
 194 :         D11=VELA(1)                                                    
 195 :         D21=VELA(2)
 196 :         D22=VELA(3) 
 197 :         D31=VELA(13)
 198 :         D32=VELA(14)
 199 :         D33=VELA(15)
 200 :         IF (D33.EQ.0.D0) D33=D11*1.E0-6                                                      
 201 :         D41=VELA(4)                                                      
 202 :         D42=VELA(5) 
 203 :         D43=VELA(16)                                                     
 204 :         D44=VELA(6) 
 205 :         D1HOOK(1,1)=D11 - ((D31**2)/D33)                                                   
 206 :         D1HOOK(2,1)=D21 - ((D31*D32)/D33)                                                    
 207 :         D1HOOK(1,2)=D1HOOK(2,1)                                                  
 208 :         D1HOOK(2,2)=D22 - ((D32**2)/D33)                                                     
 209 :         D1HOOK(4,1)=D41 - ((D31*D43)/D33)                                                    
 210 :         D1HOOK(1,4)=D1HOOK(4,1)                                                  
 211 :         D1HOOK(4,2)=D42 - ((D32*D43)/D33)                                                    
 212 :         D1HOOK(2,4)=D1HOOK(4,2)                                                  
 213 :         D1HOOK(4,4)=D44 - ((D43**2)/D33)
 214 :         COBAUX(1)=VELA( 9)
 215 :         COBAUX(2)=VELA(10)
 216 :         COBAUX(3)=0.D0
 217 :         COBAUX(4)=VELA(11)
 218 :         XMOB    =VELA(12)
 219 :        ELSE IF(IFOU.EQ.-2.AND.KCAS.EQ.2)THEN
 220 : C    CONTRAINTE PLANE  ET KCAS = 2
 221 :        D1HOOK(1,1)=VELA(1)                                                      
 222 :        D1HOOK(2,1)=VELA(2)                                                      
 223 :        D1HOOK(1,2)=D1HOOK(2,1)                                                  
 224 :        D1HOOK(2,2)=VELA(3)                                                      
 225 :        D1HOOK(3,1)=VELA(13)
 226 :        D1HOOK(1,3)=D1HOOK(3,1)                                                  
 227 :        D1HOOK(3,2)=VELA(14)
 228 :        D1HOOK(2,3)=D1HOOK(3,2)                                                  
 229 :        D1HOOK(3,3)=VELA(15)
 230 :        D1HOOK(4,1)=VELA(4)                                                      
 231 :        D1HOOK(1,4)=D1HOOK(4,1)                                                  
 232 :        D1HOOK(4,2)=VELA(5)                                                      
 233 :        D1HOOK(2,4)=D1HOOK(4,2)                                                  
 234 :        D1HOOK(4,3)=VELA(16)
 235 :        D1HOOK(3,4)=D1HOOK(4,3)                                                  
 236 :        D1HOOK(4,4)=VELA(6)                                                      
 237 :        COBAUX(1)=VELA( 9)
 238 :        COBAUX(2)=VELA(10)
 239 :        COBAUX(3)=0.D0
 240 :        COBAUX(4)=VELA(11)
 241 :        XMOB    =VELA(12)
 242 :       ELSEIF(IFOU.EQ.-1.OR.IFOU.EQ.0) THEN
 243 : C   DEFORMATION PLANE,AXISYMETRIE                                               
 244 :        D1HOOK(1,1)=VELA(1)                                                      
 245 :        D1HOOK(2,1)=VELA(2)                                                      
 246 :        D1HOOK(1,2)=D1HOOK(2,1)                                                  
 247 :        D1HOOK(2,2)=VELA(3)                                                      
 248 :        D1HOOK(3,1)=VELA(4)                                                      
 249 :        D1HOOK(1,3)=D1HOOK(3,1)                                                  
 250 :        D1HOOK(3,2)=VELA(5)                                                      
 251 :        D1HOOK(2,3)=D1HOOK(3,2)                                                  
 252 :        D1HOOK(3,3)=VELA(6)                                                      
 253 :        D1HOOK(4,1)=VELA(7)                                                      
 254 :        D1HOOK(1,4)=D1HOOK(4,1)                                                  
 255 :        D1HOOK(4,2)=VELA(8)                                                      
 256 :        D1HOOK(2,4)=D1HOOK(4,2)                                                  
 257 :        D1HOOK(4,3)=VELA(9)                                                      
 258 :        D1HOOK(3,4)=D1HOOK(4,3)                                                  
 259 :        D1HOOK(4,4)=VELA(10)                                                     
 260 :        COBAUX(1)=VELA(13)
 261 :        COBAUX(2)=VELA(14)
 262 :        COBAUX(3)=VELA(16)
 263 :        COBAUX(4)=VELA(15)
 264 :        XMOB    =VELA(17)
 265 :       ELSEIF(IFOU.EQ.1.OR.IFOU.EQ.2)THEN                                        
 266 : C  AXISYMETRIE DE FOURIER , 3D                                                  
 267 :        D1HOOK(1,1)=VELA(1)                                                      
 268 :        D1HOOK(2,1)=VELA(2)                                                      
 269 :        D1HOOK(1,2)=D1HOOK(2,1)                                                  
 270 :        D1HOOK(2,2)=VELA(3)                                                      
 271 :        D1HOOK(3,1)=VELA(4)                                                      
 272 :        D1HOOK(1,3)=D1HOOK(3,1)                                                  
 273 :        D1HOOK(3,2)=VELA(5)                                                      
 274 :        D1HOOK(2,3)=D1HOOK(3,2)                                                  
 275 :        D1HOOK(3,3)=VELA(6)                                                      
 276 :        D1HOOK(4,1)=VELA(7)                                                      
 277 :        D1HOOK(1,4)=D1HOOK(4,1)                                                  
 278 :        D1HOOK(4,2)=VELA(8)                                                      
 279 :        D1HOOK(2,4)=D1HOOK(4,2)                                                  
 280 :        D1HOOK(4,3)=VELA(9)                                                      
 281 :        D1HOOK(3,4)=D1HOOK(4,3)                                                  
 282 :        D1HOOK(4,4)=VELA(10)                                                     
 283 :        IF(IFOU.EQ.1)THEN                                                        
 284 :          D1HOOK(5,5)=VELA(11)                                                   
 285 :          D1HOOK(6,5)=VELA(12)                                                   
 286 :          D1HOOK(5,6)=D1HOOK(6,5)                                                
 287 :          D1HOOK(6,6)=VELA(13)                                                   
 288 :          COBAUX(1)=VELA(16)
 289 :          COBAUX(2)=VELA(17)
 290 :          COBAUX(3)=VELA(19)
 291 :          COBAUX(4)=VELA(18)
 292 :          XMOB    =VELA(20)
 293 :        ELSE                                                                     
 294 :          D1HOOK(5,1)=VELA(11)                                                   
 295 :          D1HOOK(1,5)=D1HOOK(5,1)                                                
 296 :          D1HOOK(5,2)=VELA(12)                                                   
 297 :          D1HOOK(2,5)=D1HOOK(5,2)                                                
 298 :          D1HOOK(5,3)=VELA(13)                                                   
 299 :          D1HOOK(3,5)=D1HOOK(5,3)                                                
 300 :          D1HOOK(5,4)=VELA(14)                                                   
 301 :          D1HOOK(4,5)=D1HOOK(5,4)                                                
 302 :          D1HOOK(5,5)=VELA(15)                                                   
 303 :          D1HOOK(6,1)=VELA(16)                                                   
 304 :          D1HOOK(1,6)=D1HOOK(6,1)                                                
 305 :          D1HOOK(6,2)=VELA(17)                                                   
 306 :          D1HOOK(2,6)=D1HOOK(6,2)                                                
 307 :          D1HOOK(6,3)=VELA(18)                                                   
 308 :          D1HOOK(3,6)=D1HOOK(6,3)                                                
 309 :          D1HOOK(6,4)=VELA(19)                                                   
 310 :          D1HOOK(4,6)=D1HOOK(6,4)                                                
 311 :          D1HOOK(6,5)=VELA(20)                                                   
 312 :          D1HOOK(5,6)=D1HOOK(6,5)                                                
 313 :          D1HOOK(6,6)=VELA(21)                                                   
 314 :          COBAUX(1)=VELA(28)
 315 :          COBAUX(2)=VELA(29)
 316 :          COBAUX(3)=VELA(30)
 317 :          COBAUX(4)=VELA(31)
 318 :          COBAUX(5)=VELA(32)
 319 :          COBAUX(6)=VELA(33)
 320 :          XMOB    =VELA(34)
 321 :        ENDIF                                                                    
 322 :       ENDIF                                                                     
 323 : C  DEFINITION DES AXES ORTHO./AXES LOCAUX                                       
 324 :       IF(IDIM.EQ.2)THEN                                                         
 325 :         IF(IFOU.EQ.-2)THEN                                                      
 326 :           XLOC(1,1)=VELA(7)                                                     
 327 :           XLOC(2,1)=VELA(8)                                                     
 328 :         ELSEIF(IFOU.EQ.-1.OR.IFOU.EQ.0)THEN                                     
 329 :           XLOC(1,1)=VELA(11)                                                    
 330 :           XLOC(2,1)=VELA(12)                                                    
 331 :          ELSEIF(IFOU.EQ.1)THEN                                                  
 332 :           XLOC(1,1)=VELA(14)                                                    
 333 :           XLOC(2,1)=VELA(15)                                                    
 334 :          ENDIF                                                                  
 335 :          XLOC(1,2)=-XLOC(2,1)                                                   
 336 :          XLOC(2,2)=XLOC(1,1)                                                    
 337 :         ELSEIF(IDIM.EQ.3)THEN                                                   
 338 :          XLOC(1,1)=VELA(22)                                                     
 339 :          XLOC(2,1)=VELA(23)                                                     
 340 :          XLOC(3,1)=VELA(24)                                                     
 341 :          XLOC(1,2)=VELA(25)                                                     
 342 :          XLOC(2,2)=VELA(26)                                                     
 343 :          XLOC(3,2)=VELA(27)                                                     
 344 : C                                                                               
 344 :          CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)                         
 345 :         ENDIF                                                                   
 346 :       ELSEIF(MATE.EQ.'UNIDIREC')THEN                                            
 347 : C      MATRICE DE HOOKE /AXES D'ARMAURE                                         
 348 :         D1HOOK(1,1)=VELA(1)                                                     
 349 :         COBAUX(1)=VELA(4)
 350 :         XMOB    =VELA(5)
 351 : C    DEFINITION DES AXES ORTHO./AXES LOCAUX                                     
 352 :         IF(IDIM.EQ.2)THEN                                                       
 353 :           XLOC(1,1)=VELA(2)                                                     
 354 :           XLOC(2,1)=VELA(3)                                                     
 355 :           XLOC(1,2)=-XLOC(2,1)                                                  
 356 :           XLOC(2,2)=XLOC(1,1)                                                   
 357 :         ELSEIF(IDIM.EQ.3)THEN 
 358 :           XLOC(1,1)=VELA(2)                                                     
 359 :           XLOC(2,1)=VELA(3) 
 360 :           XLOC(3,1)=VELA(4)                                                     
 361 :           XLOC(1,2)=VELA(5)                                                     
 362 :           XLOC(2,2)=VELA(6)                                                     
 363 :           XLOC(3,2)=VELA(7) 
 364 : C                                                                               
 364 :          CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)                                                                                 
 365 :         ENDIF                                                                   
 366 :       ELSE                                                                      
 367 :         IRET=0                                                                  
 368 :       ENDIF                                                                     
 369 : C                                                                               
 370 : C    DEFINITION DES AXES ORTHO./AXES GLOBAUX                                    
 371 : C                                                                               
 372 :       IF(IRET.EQ.1)THEN                                                         
 373 : C                                                                               
 374 :         DO 90  K=1,IDIM                                                         
 375 :           DO 90 J=1,IDIM                                                        
 376 :             DO 90 I=1,IDIM                                                      
 377 :           XGLOB(K,J)=TXR(J,I)*XLOC(I,K)+XGLOB(K,J)                              
 378 :   90    CONTINUE                                                                
 379 : C    MATRICE DE TRANSFORMATION                                                  
 380 :        IF(IDIM.EQ.2)THEN                                                        
 381 :          ROTHOO(1,1)=XGLOB(1,1)*XGLOB(1,1)                                      
 382 :          ROTHOO(1,2)=XGLOB(1,2)*XGLOB(1,2)                                      
 383 :          ROTHOO(1,4)=XGLOB(1,1)*XGLOB(1,2)                                      
 384 :          ROTHOO(2,1)=XGLOB(2,1)*XGLOB(2,1)                                      
 385 :          ROTHOO(2,2)=XGLOB(2,2)*XGLOB(2,2)                                      
 386 :          ROTHOO(2,4)=XGLOB(2,1)*XGLOB(2,2)                                      
 387 :          ROTHOO(3,3)=UN                                                         
 388 :          ROTHOO(4,1)=DEUX*XGLOB(1,1)*XGLOB(2,1)                                 
 389 :          ROTHOO(4,2)=DEUX*XGLOB(1,2)*XGLOB(2,2)                                 
 390 :          ROTHOO(4,4)=XGLOB(1,2)*XGLOB(2,1)+XGLOB(1,1)*XGLOB(2,2)                
 391 :          IF(IFOU.EQ.1)THEN                                                      
 392 :           ROTHOO(5,5)=XGLOB(1,1)                                                
 393 :           ROTHOO(5,6)=XGLOB(1,2)                                                
 394 :           ROTHOO(6,5)=XGLOB(2,1)                                                
 395 :           ROTHOO(6,6)=XGLOB(2,2)                                                
 396 :          ENDIF                                                                  
 397 :         ELSEIF(IDIM.EQ.3)THEN                                                   
 398 :           DO 100 IC=1,3                                                         
 399 :            DO 100 IL=1,3                                                        
 400 :            ROTHOO(IL,IC)=XGLOB(IL,IC)*XGLOB(IL,IC)                              
 401 :  100       CONTINUE                                                             
 402 : C                                                                               
 403 :           DO 110 IL=1,3                                                         
 404 :            ROTHOO(IL,4)=XGLOB(IL,1)*XGLOB(IL,2)                                 
 405 :            ROTHOO(IL,5)=XGLOB(IL,2)*XGLOB(IL,3)                                 
 406 :            ROTHOO(IL,6)=XGLOB(IL,1)*XGLOB(IL,3)                                 
 407 :   110      CONTINUE                                                             
 408 : C                                                                               
 409 :            DO 120 IC=1,3                                                        
 410 :            ROTHOO(4,IC)=DEUX*XGLOB(1,IC)*XGLOB(2,IC)                            
 411 :            ROTHOO(5,IC)=DEUX*XGLOB(2,IC)*XGLOB(3,IC)                            
 412 :            ROTHOO(6,IC)=DEUX*XGLOB(1,IC)*XGLOB(3,IC)                            
 413 :   120       CONTINUE                                                            
 414 : C                                                                               
 415 :           DO 130 IL=4,6                                                         
 416 :           IL1=IL-3                                                              
 417 :           IL2=IL1+1                                                             
 418 :           IF(IL2.GT.3)IL2=IL2-3                                                 
 419 :            DO 130 IC=4,6                                                        
 420 :             IC1=IC-3                                                            
 421 :             IC2=IC1+1                                                           
 422 :             IF(IC2.GT.3)IC2=IC2-3                                               
 423 :             ROTHOO(IL,IC)=XGLOB(IL1,IC1)*XGLOB(IL2,IC2)+                        
 424 :      .                       XGLOB(IL1,IC2)*XGLOB(IL2,IC1)                      
 425 :  130        CONTINUE                                                            
 426 :             DO 135 IC=1,6                                                       
 427 :             AA=ROTHOO(6,IC)                                                     
 428 :             ROTHOO(6,IC)=ROTHOO(5,IC)                                           
 429 :             ROTHOO(5,IC)=AA                                                     
 430 :  135        CONTINUE                                                            
 431 :             DO 136 IL=1,6                                                       
 432 :             AA=ROTHOO(IL,6)                                                     
 433 :             ROTHOO(IL,6)=ROTHOO(IL,5)                                           
 434 :             ROTHOO(IL,5)=AA                                                     
 435 :  136        CONTINUE                                                            
 436 :         ENDIF                                                                   
 437 : C                                                                               
 438 : C    TRANSFORMATION DE LA MATRICE DE HOOKE ET DE COBAUX
 439 : C                                                                               
 439 :         CALL PRODT(DDHOOK,D1HOOK,ROTHOO,LHOOK,LHOOK)                            
 440 : *
 441 :         DO 140 IL=1,LHOOK
 442 :           DO 140 IC=1,LHOOK
 443 :             COBMA(IL)=COBMA(IL)+ROTHOO(IC,IL)*COBAUX(IC)
 444 :  140    CONTINUE
 445 :       ENDIF                                                                     
 446 :       RETURN                                                                    
 447 :       END                                                                       
 448 :  
 449 :  
 450 :  

© Cast3M 2003 - All rights reserved.
Disclaimer