Download dohmao.eso

Back to the list

   1 : C DOHMAO    SOURCE    CHAT      05/01/12    22:53:41     5004           
   2 : 
   3 : C=======================================================================
   4 : C=                            D O H M A O                              =
   5 : C=                            -----------                              =
   6 : C=                                                                     =
   7 : C=  Fonction :                                                         =
   8 : C=  ----------                                                         =
   9 : C=  Calcul de la matrice de Hooke (elasticite lineaire) dans le cas    =
  10 : C=  des materiaux orthotropes et anisotropes                           =
  11 : C=                                                                     =
  12 : C=  Parametres :  (E)=Entree  (S)=Sortie                               =
  13 : C=  ------------                                                       =
  14 : C=   VELA     (E)   Valeurs des parametres elastiques du materiau      =
  15 : C=   MATE     (E)   Chaine contenant le type du materiau               =
  16 : C=   IFOU     (E)   Mode de calcul (cf. IFOUR de CCOPTIO)              =
  17 : C=   IDIM     (E)   Dimension du probleme (1,2,3) (cf. CCOPTIO)        =
  18 : C=   TXR      (E)   Cosinus directeurs des axes LOCAUX / repere GLOBAL =
  19 : C=   XLOC     (S)   Tableau de travail contenant ...                   =
  20 : C=   XGLOB    (S)   Tableau de travail contenant ...                   =
  21 : C=   D1HOOK   (S)   Matrice de Hooke dans le repere LOCAL d'orthotropie=
  22 : C=   DDHOOK   (S)   Matrice de Hooke dans le repere GLOBAL             =
  23 : C=   LHOOK    (S)   Dimension de la matrice de Hooke                   =
  24 : C=   KCAS     (E)   =1 si on veut la matrice de Hooke associee au mode =
  25 : C=                  de calcul (non necessairement inversible)          =
  26 : C=                  =2 si on veut la matrice de Hooke complete pour    =
  27 : C=                  l'inverser par la suite (matrice de souplesse)     =
  28 : C=   IRET     (S)   =1 si option existante , =0 sinon                  =
  29 : C=                                                                     =
  30 : C=  Remarque : En DIMEnsion 1, on calcule directement la matrice DDHOOK=
  31 : C=  ---------- car les directions d'ORTHOTROPIE correspondent a celles =
  32 : C=             du repere GLOBAL.                                       =
  33 : C=======================================================================
  34 : 
  35 :       SUBROUTINE DOHMAO (VELA,MATE,IFOU,IDIM,TXR,XLOC,XGLOB,
  36 :      .                   D1HOOK,ROTHOO,DDHOOK,LHOOK,KCAS,IRET)
  37 : 
  38 :       IMPLICIT INTEGER(I-N)
  39 :       IMPLICIT REAL*8 (A-H,O-Z)
  40 : 
  41 :       PARAMETER (XZero=0.,XUn=1.,XDeux=2.)
  42 : 
  43 :       DIMENSION VELA(*),DDHOOK(LHOOK,*),D1HOOK(LHOOK,*),ROTHOO(LHOOK,*),
  44 :      .          TXR(IDIM,*),XLOC(IDIM,*),XGLOB(IDIM,*)
  45 :       CHARACTER*(*) MATE
  46 : 
  47 :       IRET=1
  47 :       CALL ZERO(DDHOOK,LHOOK,LHOOK)
  48 : 
  49 : C  1 - MATERIAU ORTHOTROPE
  50 : C =========================
  51 :       IF (MATE.EQ.'ORTHOTRO') THEN
  52 : C =====
  53 : C  1.1 - Definition de la matrice de HOOKE dans les axes d'ORTHOTROPIE
  54 : C =====
  55 : C= -> Contraintes planes et KCAS=1
  56 :         IF (IFOU.EQ.-2.AND.KCAS.EQ.1) THEN
  56 :           CALL ZERO(D1HOOK,LHOOK,LHOOK)
  57 :           YG1=VELA(1)
  58 :           YG2=VELA(2)
  59 :           XNU12=VELA(3)
  60 :           XNU21=(YG2/YG1)*XNU12
  61 :           AUX=XUn/(XUn-XNU12*XNU21)
  62 :           D1HOOK(1,1)=YG1*AUX
  63 :           D1HOOK(2,1)=XNU21*YG1*AUX
  64 :           D1HOOK(1,2)=D1HOOK(2,1)
  65 :           D1HOOK(2,2)=YG2*AUX
  66 :           D1HOOK(4,4)=VELA(4)
  67 : C= -> Contraintes planes et KCAS=2
  68 :         ELSE IF (IFOU.EQ.-2.AND.KCAS.EQ.2) THEN
  68 :           CALL ZERO(D1HOOK,LHOOK,LHOOK)
  69 :           YG1=VELA(1)
  70 :           YG2=VELA(2)
  71 :           YG3=VELA(7)
  72 :           XNU12=VELA(3)
  73 :           XNU23=VELA(8)
  74 :           XNU13=VELA(9)
  75 :           XNU21=(YG2/YG1)*XNU12
  76 :           XNU32=(YG3/YG2)*XNU23
  77 :           XNU31=(YG3/YG1)*XNU13
  78 :           AUX=XUn/( XUn-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
  79 :      .             -XDeux*XNU12*XNU23*XNU31)
  80 :           AUX1=AUX*YG1
  81 :           AUX2=AUX*YG2
  82 :           D1HOOK(1,1)=(XUn-XNU23*XNU32)*AUX1
  83 :           D1HOOK(2,1)=(XNU21+XNU23*XNU31)*AUX1
  84 :           D1HOOK(3,1)=(XNU31+XNU32*XNU21)*AUX1
  85 :           D1HOOK(1,2)=D1HOOK(2,1)
  86 :           D1HOOK(2,2)=(XUn-XNU13*XNU31)*AUX2
  87 :           D1HOOK(3,2)=(XNU32+XNU31*XNU12)*AUX2
  88 :           D1HOOK(1,3)=D1HOOK(3,1)
  89 :           D1HOOK(2,3)=D1HOOK(3,2)
  90 :           D1HOOK(3,3)=(XUn-XNU12*XNU21)*AUX*YG3
  91 :           D1HOOK(4,4)=VELA(4)
  92 : C= -> Deformations planes, Axisymetrie, Serie de Fourier et 3D
  93 :         ELSE IF (IFOU.EQ.-1.OR.IFOU.EQ.-3.OR.
  94 :      .           IFOU.EQ.0.OR.IFOU.EQ.1.OR.IFOU.EQ.2) THEN
  94 :           CALL ZERO(D1HOOK,LHOOK,LHOOK)
  95 :           YG1=VELA(1)
  96 :           YG2=VELA(2)
  97 :           YG3=VELA(3)
  98 :           XNU12=VELA(4)
  99 :           XNU23=VELA(5)
 100 :           XNU13=VELA(6)
 101 :           XNU21=(YG2/YG1)*XNU12
 102 :           XNU32=(YG3/YG2)*XNU23
 103 :           XNU31=(YG3/YG1)*XNU13
 104 :           AUX=XUn/( XUn-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
 105 :      .             -XDeux*XNU12*XNU23*XNU31)
 106 :           AUX1=AUX*YG1
 107 :           AUX2=AUX*YG2
 108 :           D1HOOK(1,1)=(XUn-XNU23*XNU32)*AUX1
 109 :           D1HOOK(2,1)=(XNU21+XNU23*XNU31)*AUX1
 110 :           D1HOOK(3,1)=(XNU31+XNU32*XNU21)*AUX1
 111 :           D1HOOK(1,2)=D1HOOK(2,1)
 112 :           D1HOOK(2,2)=(XUn-XNU13*XNU31)*AUX2
 113 :           D1HOOK(3,2)=(XNU32+XNU31*XNU12)*AUX2
 114 :           D1HOOK(1,3)=D1HOOK(3,1)
 115 :           D1HOOK(2,3)=D1HOOK(3,2)
 116 :           D1HOOK(3,3)=(XUn-XNU12*XNU21)*AUX*YG3
 117 :           D1HOOK(4,4)=VELA(7)
 118 :           IF (IFOU.EQ.1.OR.IFOU.EQ.2) THEN
 119 :             D1HOOK(5,5)=VELA(9)
 120 :             D1HOOK(6,6)=VELA(8)
 121 :           ENDIF
 122 : C= -> Modes de calcul 1D
 123 : C=    On calcule directement DDHOOK car les directions d'ORTHOTROPIE
 124 : C=    correspondent aux direction du repere GLOBAL
 125 :         ELSE IF (IFOU.GE.3.AND.IFOU.LE.15) THEN
 126 :           IF (IFOU.EQ.6.AND.KCAS.EQ.1) THEN
 127 :             DDHOOK(1,1)=VELA(1)
 128 :           ELSE IF ((IFOU.EQ.5.OR.IFOU.EQ.10.OR.IFOU.EQ.13).AND.
 129 :      .             KCAS.EQ.1) THEN
 130 :             YG1=VELA(1)
 131 :             YG3=VELA(3)
 132 :             XNU13=VELA(6)
 133 :             XNU31=(YG3/YG1)*XNU13
 134 :             AUX=XUn/(XUn-XNU13*XNU31)
 135 :             DDHOOK(1,1)=YG1*AUX
 136 :             DDHOOK(3,1)=XNU13*YG3*AUX
 137 :             DDHOOK(1,3)=DDHOOK(3,1)
 138 :             DDHOOK(3,3)=YG3*AUX
 139 :           ELSE IF ((IFOU.EQ.4.OR.IFOU.EQ.8).AND.KCAS.EQ.1) THEN
 140 :             YG1=VELA(1)
 141 :             YG2=VELA(2)
 142 :             XNU12=VELA(4)
 143 :             XNU21=(YG2/YG1)*XNU12
 144 :             AUX=XUn/(XUn-XNU12*XNU21)
 145 :             DDHOOK(1,1)=YG1*AUX
 146 :             DDHOOK(2,1)=XNU21*YG1*AUX
 147 :             DDHOOK(1,2)=DDHOOK(2,1)
 148 :             DDHOOK(2,2)=YG2*AUX
 149 :           ELSE
 150 :             YG1=VELA(1)
 151 :             YG2=VELA(2)
 152 :             YG3=VELA(3)
 153 :             XNU12=VELA(4)
 154 :             XNU23=VELA(5)
 155 :             XNU13=VELA(6)
 156 :             XNU21=(YG2/YG1)*XNU12
 157 :             XNU32=(YG3/YG2)*XNU23
 158 :             XNU31=(YG3/YG1)*XNU13
 159 :             AUX=XUn/(XUn-XNU12*XNU21-XNU23*XNU32-XNU13*XNU31
 160 :      .              -XDeux*XNU12*XNU23*XNU31)
 161 :             AUX1=AUX*YG1
 162 :             AUX2=AUX*YG2
 163 :             DDHOOK(1,1)=(XUn-XNU23*XNU32)*AUX1
 164 :             DDHOOK(2,1)=(XNU21+XNU23*XNU31)*AUX1
 165 :             DDHOOK(3,1)=(XNU31+XNU32*XNU21)*AUX1
 166 :             DDHOOK(1,2)=DDHOOK(2,1)
 167 :             DDHOOK(2,2)=(XUn-XNU13*XNU31)*AUX2
 168 :             DDHOOK(3,2)=(XNU32+XNU31*XNU12)*AUX2
 169 :             DDHOOK(1,3)=DDHOOK(3,1)
 170 :             DDHOOK(2,3)=DDHOOK(3,2)
 171 :             DDHOOK(3,3)=(XUn-XNU12*XNU21)*AUX*YG3
 172 :           ENDIF
 173 : C= -> Cas non prevus actuellement
 174 :         ELSE
 175 :           IRET=0
 176 :           RETURN
 177 :         ENDIF
 178 : C =====
 179 : C  1.2 - Definition de la matrice de passage des axes d'ORTHOTROPIE
 180 : C        aux axes LOCAUX au point considere (dimensions 2 et 3)
 181 : C =====
 182 :         IF (IDIM.EQ.2) THEN
 183 :           IF (IFOU.EQ.-2) THEN
 184 :             XLOC(1,1)=VELA(5)
 185 :             XLOC(2,1)=VELA(6)
 186 :           ELSE IF (IFOU.EQ.-1.OR.IFOU.EQ.-3.OR.IFOU.EQ.0) THEN
 187 :             XLOC(1,1)=VELA(8)
 188 :             XLOC(2,1)=VELA(9)
 189 :           ELSE IF (IFOU.EQ.1) THEN
 190 :             XLOC(1,1)=VELA(10)
 191 :             XLOC(2,1)=VELA(11)
 192 :           ENDIF
 193 :           XLOC(1,2)=-XLOC(2,1)
 194 :           XLOC(2,2)=XLOC(1,1)
 195 :         ELSE IF (IDIM.EQ.3) THEN
 196 :           XLOC(1,1)=VELA(10)
 197 :           XLOC(2,1)=VELA(11)
 198 :           XLOC(3,1)=VELA(12)
 199 :           XLOC(1,2)=VELA(13)
 200 :           XLOC(2,2)=VELA(14)
 201 :           XLOC(3,2)=VELA(15)
 201 :           CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)
 202 :         ENDIF
 203 : 
 204 : C  2 - MATERIAU ANISOTROPE
 205 : C =========================
 206 :       ELSE IF (MATE.EQ.'ANISOTRO') THEN
 207 : C =====
 208 : C  2.1 - Definition de la matrice de HOOKE dans les axes d'ANISOTROPIE
 209 : C =====
 209 :         CALL ZERO(D1HOOK,LHOOK,LHOOK)
 210 : C= -> Contraintes planes et KCAS=1
 211 :         IF (IFOU.EQ.-2.AND.KCAS.EQ.1) THEN
 212 :           D11=VELA(1)
 213 :           D21=VELA(2)
 214 :           D22=VELA(3)
 215 :           D31=VELA(9)
 216 :           D32=VELA(10)
 217 :           D33=VELA(11)
 218 :           IF (D33.EQ.XZero) D33=D11*1.E-6
 219 :           D41=VELA(4)
 220 :           D42=VELA(5)
 221 :           D43=VELA(12)
 222 :           D44=VELA(6)
 223 :           D1HOOK(1,1)=D11-(D31*D31/D33)
 224 :           D1HOOK(2,1)=D21-(D31*D32/D33)
 225 :           D1HOOK(4,1)=D41-(D31*D43/D33)
 226 :           D1HOOK(1,2)=D1HOOK(2,1)
 227 :           D1HOOK(2,2)=D22-(D32*D32/D33)
 228 :           D1HOOK(4,2)=D42-(D32*D43/D33)
 229 :           D1HOOK(1,4)=D1HOOK(4,1)
 230 :           D1HOOK(2,4)=D1HOOK(4,2)
 231 :           D1HOOK(4,4)=D44-(D43*D43/D33)
 232 : C= -> Contraintes planes et KCAS=2
 233 :         ELSE IF (IFOU.EQ.-2.AND.KCAS.EQ.2) THEN
 234 :           D1HOOK(1,1)=VELA(1)
 235 :           D1HOOK(2,1)=VELA(2)
 236 :           D1HOOK(3,1)=VELA(9)
 237 :           D1HOOK(4,1)=VELA(4)
 238 :           D1HOOK(1,2)=D1HOOK(2,1)
 239 :           D1HOOK(2,2)=VELA(3)
 240 :           D1HOOK(3,2)=VELA(10)
 241 :           D1HOOK(4,2)=VELA(5)
 242 :           D1HOOK(3,3)=VELA(11)
 243 :           D1HOOK(1,3)=D1HOOK(3,1)
 244 :           D1HOOK(2,3)=D1HOOK(3,2)
 245 :           D1HOOK(4,3)=VELA(12)
 246 :           D1HOOK(1,4)=D1HOOK(4,1)
 247 :           D1HOOK(2,4)=D1HOOK(4,2)
 248 :           D1HOOK(3,4)=D1HOOK(4,3)
 249 :           D1HOOK(4,4)=VELA(6)
 250 : C= -> Deformations planes et Axisymetrie
 251 :         ELSE IF (IFOU.EQ.-1.OR.IFOU.EQ.-3.OR.IFOU.EQ.0) THEN
 252 :           D1HOOK(1,1)=VELA(1)
 253 :           D1HOOK(2,1)=VELA(2)
 254 :           D1HOOK(3,1)=VELA(4)
 255 :           D1HOOK(4,1)=VELA(7)
 256 :           D1HOOK(1,2)=D1HOOK(2,1)
 257 :           D1HOOK(2,2)=VELA(3)
 258 :           D1HOOK(3,2)=VELA(5)
 259 :           D1HOOK(4,2)=VELA(8)
 260 :           D1HOOK(1,3)=D1HOOK(3,1)
 261 :           D1HOOK(2,3)=D1HOOK(3,2)
 262 :           D1HOOK(3,3)=VELA(6)
 263 :           D1HOOK(4,3)=VELA(9)
 264 :           D1HOOK(1,4)=D1HOOK(4,1)
 265 :           D1HOOK(2,4)=D1HOOK(4,2)
 266 :           D1HOOK(3,4)=D1HOOK(4,3)
 267 :           D1HOOK(4,4)=VELA(10)
 268 : C= -> Serie de Fourier et 3D
 269 :         ELSE IF (IFOU.EQ.1.OR.IFOU.EQ.2) THEN
 270 :           D1HOOK(1,1)=VELA(1)
 271 :           D1HOOK(2,1)=VELA(2)
 272 :           D1HOOK(3,1)=VELA(4)
 273 :           D1HOOK(4,1)=VELA(7)
 274 :           D1HOOK(1,2)=D1HOOK(2,1)
 275 :           D1HOOK(2,2)=VELA(3)
 276 :           D1HOOK(3,2)=VELA(5)
 277 :           D1HOOK(4,2)=VELA(8)
 278 :           D1HOOK(1,3)=D1HOOK(3,1)
 279 :           D1HOOK(2,3)=D1HOOK(3,2)
 280 :           D1HOOK(3,3)=VELA(6)
 281 :           D1HOOK(4,3)=VELA(9)
 282 :           D1HOOK(1,4)=D1HOOK(4,1)
 283 :           D1HOOK(2,4)=D1HOOK(4,2)
 284 :           D1HOOK(3,4)=D1HOOK(4,3)
 285 :           D1HOOK(4,4)=VELA(10)
 286 :           IF (IFOU.EQ.1) THEN
 287 :             D1HOOK(5,5)=VELA(11)
 288 :             D1HOOK(6,5)=VELA(12)
 289 :             D1HOOK(5,6)=D1HOOK(6,5)
 290 :             D1HOOK(6,6)=VELA(13)
 291 :           ELSE
 292 :             D1HOOK(5,1)=VELA(11)
 293 :             D1HOOK(6,1)=VELA(16)
 294 :             D1HOOK(5,2)=VELA(12)
 295 :             D1HOOK(6,2)=VELA(17)
 296 :             D1HOOK(5,3)=VELA(13)
 297 :             D1HOOK(6,3)=VELA(18)
 298 :             D1HOOK(5,4)=VELA(14)
 299 :             D1HOOK(6,4)=VELA(19)
 300 :             D1HOOK(1,5)=D1HOOK(5,1)
 301 :             D1HOOK(2,5)=D1HOOK(5,2)
 302 :             D1HOOK(3,5)=D1HOOK(5,3)
 303 :             D1HOOK(4,5)=D1HOOK(5,4)
 304 :             D1HOOK(5,5)=VELA(15)
 305 :             D1HOOK(6,5)=VELA(20)
 306 :             D1HOOK(1,6)=D1HOOK(6,1)
 307 :             D1HOOK(2,6)=D1HOOK(6,2)
 308 :             D1HOOK(3,6)=D1HOOK(6,3)
 309 :             D1HOOK(4,6)=D1HOOK(6,4)
 310 :             D1HOOK(5,6)=D1HOOK(6,5)
 311 :             D1HOOK(6,6)=VELA(21)
 312 :           ENDIF
 313 : C= -> Cas non prevus actuellement
 314 :         ELSE
 315 :           IRET=0
 316 :           RETURN
 317 :         ENDIF
 318 : C =====
 319 : C  2.2 - Definition de la matrice de passage des axes d'ANSIOTROPIE
 320 : C        aux axes LOCAUX au point considere (dimensions 2 et 3)
 321 : C =====
 322 :         IF (IDIM.EQ.2) THEN
 323 :           IF (IFOU.EQ.-2) THEN
 324 :             XLOC(1,1)=VELA(7)
 325 :             XLOC(2,1)=VELA(8)
 326 :           ELSE IF (IFOU.EQ.-3.OR.IFOU.EQ.-1.OR.IFOU.EQ.0) THEN
 327 :             XLOC(1,1)=VELA(11)
 328 :             XLOC(2,1)=VELA(12)
 329 :           ELSE IF (IFOU.EQ.1) THEN
 330 :             XLOC(1,1)=VELA(14)
 331 :             XLOC(2,1)=VELA(15)
 332 :           ENDIF
 333 :           XLOC(1,2)=-XLOC(2,1)
 334 :           XLOC(2,2)=XLOC(1,1)
 335 :         ELSE IF (IDIM.EQ.3) THEN
 336 :           XLOC(1,1)=VELA(22)
 337 :           XLOC(2,1)=VELA(23)
 338 :           XLOC(3,1)=VELA(24)
 339 :           XLOC(1,2)=VELA(25)
 340 :           XLOC(2,2)=VELA(26)
 341 :           XLOC(3,2)=VELA(27)
 341 :           CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)
 342 :         ENDIF
 343 : 
 344 : C  3 - MATERIAU UNIDIRECTIONNEL
 345 : C ==============================
 346 :       ELSE IF (MATE.EQ.'UNIDIREC') THEN
 347 : C =====
 348 : C  3.1 - Definition de la matrice de HOOKE dans les axes d'ANISOTROPIE
 349 : C =====
 349 :         CALL ZERO(D1HOOK,LHOOK,LHOOK)
 350 :         D1HOOK(1,1)=VELA(1)
 351 : C =====
 352 : C  3.2 - Definition de la matrice de passage des axes d'ANISOTROPIE
 353 : C        aux axes LOCAUX au point considere (dimensions 2 et 3)
 354 : C =====
 355 :         IF (IDIM.EQ.2) THEN
 356 :           XLOC(1,1)=VELA(2)
 357 :           XLOC(2,1)=VELA(3)
 358 :           XLOC(1,2)=-XLOC(2,1)
 359 :           XLOC(2,2)=XLOC(1,1)
 360 :         ELSE IF (IDIM.EQ.3) THEN
 361 :           XLOC(1,1)=VELA(2)
 362 :           XLOC(2,1)=VELA(3)
 363 :           XLOC(3,1)=VELA(4)
 364 :           XLOC(1,2)=VELA(5)
 365 :           XLOC(2,2)=VELA(6)
 366 :           XLOC(3,2)=VELA(7)
 366 :           CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR)
 367 :         ENDIF
 368 : 
 369 : C  4 - MATERIAUX NON PREVUS
 370 : C ==========================
 371 :       ELSE
 372 :         IRET=0
 373 :         RETURN
 374 :       ENDIF
 375 : 
 376 : C  5 - DEFINITION DE LA MATRICE DE PASSAGE DES AXES
 377 : C      D'ORTHO/ANISOTROPIE AUX AXES DU REPERE GLOBAL
 378 : C ===================================================
 379 :       IF (IDIM.EQ.1) RETURN
 379 :       CALL ZERO(XGLOB,IDIM,IDIM)
 379 :       CALL ZERO(ROTHOO,LHOOK,LHOOK)
 380 :       DO j=1,IDIM
 381 :         DO k=1,IDIM
 382 :           cc=XZero
 383 :           DO i=1,IDIM
 384 :             cc=cc+TXR(j,i)*XLOC(i,k)
 385 :           ENDDO
 386 :           XGLOB(k,j)=cc
 387 :         ENDDO
 388 :       ENDDO
 389 :       IF (IDIM.EQ.2) THEN
 390 :         ROTHOO(1,1)=XGLOB(1,1)*XGLOB(1,1)
 391 :         ROTHOO(2,1)=XGLOB(2,1)*XGLOB(2,1)
 392 :         ROTHOO(4,1)=XDeux*XGLOB(1,1)*XGLOB(2,1)
 393 :         ROTHOO(1,2)=XGLOB(1,2)*XGLOB(1,2)
 394 :         ROTHOO(2,2)=XGLOB(2,2)*XGLOB(2,2)
 395 :         ROTHOO(4,2)=XDeux*XGLOB(1,2)*XGLOB(2,2)
 396 :         ROTHOO(3,3)=XUn
 397 :         ROTHOO(1,4)=XGLOB(1,1)*XGLOB(1,2)
 398 :         ROTHOO(2,4)=XGLOB(2,1)*XGLOB(2,2)
 399 :         ROTHOO(4,4)=XGLOB(1,2)*XGLOB(2,1)+XGLOB(1,1)*XGLOB(2,2)
 400 :         IF (IFOU.EQ.1) THEN
 401 :           ROTHOO(5,5)=XGLOB(1,1)
 402 :           ROTHOO(6,5)=XGLOB(2,1)
 403 :           ROTHOO(5,6)=XGLOB(1,2)
 404 :           ROTHOO(6,6)=XGLOB(2,2)
 405 :         ENDIF
 406 :       ELSE IF (IDIM.EQ.3) THEN
 407 :         IF (LHOOK.LT.6) THEN
 408 :           IRET=0
 409 :           RETURN
 410 :         ENDIF
 411 :         DO i=1,3
 412 :           ROTHOO(1,i)=XGLOB(1,i)*XGLOB(1,i)
 413 :           ROTHOO(2,i)=XGLOB(2,i)*XGLOB(2,i)
 414 :           ROTHOO(3,i)=XGLOB(3,i)*XGLOB(3,i)
 415 :           ROTHOO(i,4)=XGLOB(i,1)*XGLOB(i,2)
 416 :           ROTHOO(i,5)=XGLOB(i,2)*XGLOB(i,3)
 417 :           ROTHOO(i,6)=XGLOB(i,1)*XGLOB(i,3)
 418 :           ROTHOO(4,i)=XDeux*XGLOB(1,i)*XGLOB(2,i)
 419 :           ROTHOO(5,i)=XDeux*XGLOB(2,i)*XGLOB(3,i)
 420 :           ROTHOO(6,i)=XDeux*XGLOB(1,i)*XGLOB(3,i)
 421 :         ENDDO
 422 :         DO j=4,6
 423 :           j1=j-3
 424 :           j2=j1+1
 425 :           IF (j2.GT.3) j2=j2-3
 426 :           DO i=4,6
 427 :             i1=i-3
 428 :             i2=i1+1
 429 :             IF (i2.GT.3) i2=i2-3
 430 :             ROTHOO(i,j)= XGLOB(i1,j1)*XGLOB(i2,j2)
 431 :      .                  +XGLOB(i1,j2)*XGLOB(i2,j1)
 432 :           ENDDO
 433 :         ENDDO
 434 :         DO i=1,6
 435 :           AA=ROTHOO(6,i)
 436 :           ROTHOO(6,i)=ROTHOO(5,i)
 437 :           ROTHOO(5,i)=AA
 438 :         ENDDO
 439 :         DO i=1,6
 440 :           AA=ROTHOO(i,6)
 441 :           ROTHOO(i,6)=ROTHOO(i,5)
 442 :           ROTHOO(i,5)=AA
 443 :         ENDDO
 444 :       ENDIF
 445 : 
 446 : C  6 - CALCUL DE LA MATRICE DE HOOKE DANS LE REPERE GLOBAL
 447 : C =========================================================
 447 :       CALL PRODT(DDHOOK,D1HOOK,ROTHOO,LHOOK,LHOOK)
 448 : 
 449 :       RETURN
 450 :       END
 451 : 
 452 :  
 453 :  

© Cast3M 2003 - All rights reserved.
Disclaimer