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