1 : C DOHOTA SOURCE FANDEUR 09/09/23 21:15:09 6374 2 : SUBROUTINE DOHOTA(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART,TRAC, 3 : & LTRAC,ALPHA,EP1,IGAU,IB,MATE,MAPL,XPREC,DTPS, 4 : & IFOU,LHOOK,DDHOOK,IRET) 5 : *_______________________________________________________________________ 6 : * 7 : * entrees : 8 : * -------- 9 : * 10 : * ivamat pointeur sur un segment mptval contenant les materiaux 11 : * nmatt nombre de composantes du materiau 12 : * ivacon pointeur sur un segment mptval contenant les contraintes 13 : * nstrs nombre de composantes de contraintes 14 : * ivari pointeur sur un segment mptval contenant les variables 15 : * internes 16 : * nvart nombre de composantes de variables internes 17 : * trac courbe de traction 18 : * ltrac taille du tableau trac 19 : * alpha coefficient alpha pour les coques minces 20 : * ep1 epaisseur pour les coques minces 21 : * igau numero du point de gauss ou l'on veut le mat. de hooke 22 : * il numero de l'element ou l'on veut le mat. de hooke 23 : * mate numeror du materiau lineaire 24 : * mapl numero du materiau plastique 25 : * xprec flottant precision 26 : * dtps flottant pas de temps pour les modeles visqueux 27 : * ifou option ifour de ccoptio 28 : * lhook taille de la matrice de hooke 29 : * 30 : * sorties : 31 : * -------- 32 : * 33 : * ddhook matrice de hooke tangente pour l'element ib 34 : * iret = 1 si ok 35 : * = 0 si formulation indisponible 36 : * = -1 si hors courbe 37 : * 38 : * passage aux nouveaux chamelem par jm campenon le 05/91 39 : *_______________________________________________________________________ 40 : * 41 : IMPLICIT INTEGER(I-N) 42 : IMPLICIT REAL*8(A-H,O-Z) 43 : * 44 : -INC CCOPTIO 45 : -INC SMCHAML 46 : * 47 : SEGMENT MPTVAL 48 : INTEGER IPOS(NS) ,NSOF(NS) 49 : INTEGER IVAL(NCOSOU) 50 : CHARACTER*16 TYVAL(NCOSOU) 51 : ENDSEGMENT 52 : * 53 : SEGMENT WRK5 54 : INTEGER NTRAT,NTRAC 55 : ENDSEGMENT 56 : * 57 : SEGMENT WTRAV 58 : REAL*8 TXR(IDIM,IDIM) 59 : ENDSEGMENT 60 : * 61 : PARAMETER(XZER=0.D0,UN=1.D0,DEUX=2.D0,TROIS=3.D0) 62 : PARAMETER(CINQ=5.D0,SIX=6.D0,HUIT=8.D0,XNEUF=9.D0,DOUZE=12.D0) 63 : PARAMETER(UNTIER=.33333 33333 33333D0,TRDEMI=1.5D0) 64 : PARAMETER(DETIER=.66666 66666 66666D0,UNDEMI=0.5D0) 65 : PARAMETER(UNQU=.25D0) 66 : * 67 : DIMENSION DDHOOK(LHOOK,*) 68 : DIMENSION TRAC(*) 69 : 70 : DIMENSION XSTRS(12),XVARI(12) 71 : DIMENSION DDF(8),DDG(8),DHDF(8),DHDG(8) 72 : DIMENSION PMATRIC(6,6),GMATRIC(6,6),GDMATR(6,6),GINV(6,6),COEF3(6) 73 : * matrice P pour le modele viscoplastique parfait 74 : * la matrice sert a passer de la contrainte a la contrainte deviatorique 75 : DATA PMATRIC /2.D0,-1.D0,-1.D0,0.D0,0.D0,0.D0, 76 : & -1.D0,2.D0,-1.D0,0.D0,0.D0,0.D0, 77 : & -1.D0,-1.D0,2.D0,0.D0,0.D0,0.D0, 78 : & 0.D0, 0.D0,0.D0,6.D0,0.D0,0.D0, 79 : & 0.D0, 0.D0,0.D0,0.D0,6.D0,0.D0, 80 : & 0.D0, 0.D0,0.D0,0.D0,0.D0,6.D0/ 81 : * 82 : DATA COEF3 /1.D0,1.D0,1.D0,2.D0,2.D0,2.D0/ 83 : *_______________________________________________________________________ 84 : * 85 : * formulation coques minces 86 : * (formulation massive dans dohot1.eso) 87 : *_______________________________________________________________________ 88 : * 89 : ENTRY DOHOT3(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART, 90 : & TRAC,LTRAC,ALPHA,EP1,IGAU,IB,MATE,MAPL, 91 : & XPREC,DTPS,IFOU,LHOOK,DDHOOK,IRET) 92 : * 93 : * Transformation des efforts generalises en contraintes : 94 : * 95 : MFR=3 96 : XXHH=XZER 97 : SIGY=XZER 98 : ALP =XZER 99 : * 100 : IRET=1 101 : ALPHAP=ALPHA*SIX/EP1 102 : ALPH2=ALPHAP*ALPHAP 103 : ALPH4=ALPH2*ALPH2 103 : CALL ZERO(DDHOOK,LHOOK,LHOOK) 104 : * 105 : * materiau elastique isotrope plastique parfait et bilineaire 106 : * 107 : IF(MATE.EQ.1) THEN 108 : MPTVAL=IVAMAT 109 : MELVAL=IVAL(1) 110 : IGMN=MIN(IGAU,VELCHE(/1)) 111 : IBMN=MIN(IB ,VELCHE(/2)) 112 : YOU =VELCHE(IGMN,IBMN) 113 : * 114 : MELVAL=IVAL(2) 115 : IGMN=MIN(IGAU,VELCHE(/1)) 116 : IBMN=MIN(IB ,VELCHE(/2)) 117 : XNU =VELCHE(IGMN,IBMN) 118 : * 119 : IF (MAPL.EQ.1.OR.MAPL.EQ.3.OR.MAPL.EQ.4) THEN 120 : MELVAL=IVAL(3) 121 : IGMN=MIN(IGAU,VELCHE(/1)) 122 : IBMN=MIN(IB ,VELCHE(/2)) 123 : SIGY = VELCHE(IGMN,IBMN) 124 : * 125 : IF (MAPL.EQ.3) THEN 126 : MELVAL=IVAL(4) 127 : IGMN=MIN(IGAU,VELCHE(/1)) 128 : IBMN=MIN(IB ,VELCHE(/2)) 129 : ALP = VELCHE(IGMN,IBMN) 130 : ELSE IF (MAPL.EQ.4) THEN 131 : MELVAL=IVAL(4) 132 : IGMN=MIN(IGAU,VELCHE(/1)) 133 : IBMN=MIN(IB ,VELCHE(/2)) 134 : XXHH = VELCHE(IGMN,IBMN) 135 : ENDIF 136 : ENDIF 137 : * 138 : * Transformation des efforts generalises en contraintes : 139 : * 140 : MPTVAL=IVACON 141 : DO 70 ICOMP=1,NSTRS 142 : MELVAL=IVAL(ICOMP) 143 : IGMN=MIN(IGAU,VELCHE(/1)) 144 : IBMN=MIN(IB ,VELCHE(/2)) 145 : XSTRS(ICOMP) = VELCHE(IGMN,IBMN) 146 : 70 CONTINUE 146 : CALL EFCONT(EP1,0.D0,NSTRS,XSTRS) 147 : * 148 : MPTVAL=IVARI 149 : MELVAL=IVAL(1) 150 : IGMN=MIN(IGAU,VELCHE(/1)) 151 : IBMN=MIN(IB ,VELCHE(/2)) 152 : EPS = VELCHE(IGMN,IBMN) 153 : * 154 : * Transformation des vints generalisees en vints : 155 : * 156 : IF (NVART.EQ.NSTRS+1) THEN 157 : DO 80 ICOMP=1,NSTRS 158 : MELVAL=IVAL(1+ICOMP) 159 : IGMN=MIN(IGAU,VELCHE(/1)) 160 : IBMN=MIN(IB ,VELCHE(/2)) 161 : XVARI(ICOMP) = VELCHE(IGMN,IBMN) 162 : 80 CONTINUE 162 : CALL EFCONT(EP1,0.D0,NSTRS,XVARI) 163 : * Calcul des contraintes effectives 164 : DO ICOMP=1,NSTRS 165 : XSTRS(ICOMP) = XSTRS(ICOMP) - XVARI(ICOMP) 166 : ENDDO 167 : ENDIF 168 : * 168 : CALL PENTE(EPS,YOU,SIGY,XXHH,ALPHA,ALP,TRAC,LTRAC,XSTRS, 169 : & NSTRS,MAPL,MFR,XPREC,YOUTA,ILOGEL) 170 : * 171 : IF(ILOGEL.EQ.-1) THEN 172 : IRET=-1 173 : RETURN 174 : ENDIF 175 : * 176 : * matrice tangente 177 : * 178 : AUX1=YOU/(UN - XNU* XNU) 179 : AUX2=XNU*AUX1 180 : AUX3=YOU*UNDEMI/(UN+XNU) 181 : AUX4=UNTIER/(UN-XNU*XNU) 182 : EP2=EP1*EP1/SIX 183 : EP3=EP1*EP1*EP1/DOUZE 184 : EP4=EP3/TROIS 185 : * 186 : IF (IFOU.EQ.2.OR.IFOU.EQ.1) THEN 187 : * 188 : DDHOOK(1,1)=AUX1*EP1 189 : DDHOOK(2,2)=AUX1*EP1 190 : DDHOOK(1,2)=AUX2*EP1 191 : DDHOOK(2,1)=AUX2*EP1 192 : DDHOOK(3,3)=AUX3*EP1 193 : * 194 : DDHOOK(4,4)=AUX1*EP3 195 : DDHOOK(5,5)=AUX1*EP3 196 : DDHOOK(4,5)=AUX2*EP3 197 : DDHOOK(5,4)=AUX2*EP3 198 : DDHOOK(6,6)=AUX3*EP3 199 : * 200 : * on retranche le partie deviateur 201 : * 202 : IF (ILOGEL.EQ.1) THEN 203 : XSTRS(1)=XSTRS(1)*EP1 204 : XSTRS(2)=XSTRS(2)*EP1 205 : XSTRS(3)=XSTRS(3)*EP1 206 : XSTRS(4)=XSTRS(4)*EP2 207 : XSTRS(5)=XSTRS(5)*EP2 208 : XSTRS(6)=XSTRS(6)*EP2 209 : * 210 : UM=(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)- 211 : & XSTRS(1)))*AUX4 212 : VM=(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)- 213 : & XSTRS(2)))*AUX4 214 : WM=XSTRS(3)/(UN+XNU) 215 : * 216 : UF=(DEUX*XSTRS(4)-XSTRS(5)+XNU*(DEUX*XSTRS(5)- 217 : & XSTRS(4)))*AUX4 218 : VF=(DEUX*XSTRS(5)-XSTRS(4)+XNU*(DEUX*XSTRS(4)- 219 : & XSTRS(5)))*AUX4 220 : WF=XSTRS(6)/(UN+XNU) 221 : * 222 : UM=UM*EP1 223 : VM=VM*EP1 224 : WM=WM*EP1 225 : * 226 : UF=UF*EP3*ALPH2 227 : VF=VF*EP3*ALPH2 228 : WF=WF*EP3*ALPH2 229 : * 230 : XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2) 231 : XXX1=XSTRS(4)*XSTRS(4)+XSTRS(5)*XSTRS(5) 232 : XXXA=XXXX*EP1+XXX1*ALPH4*EP3 233 : XXXB=XXXX*EP1+XXX1*ALPH2*EP4 234 : * 235 : YYYY=XSTRS(1)*XSTRS(2) 236 : YYY1=XSTRS(4)*XSTRS(5) 237 : YYYA=YYYY*EP1+YYY1*ALPH4*EP3 238 : YYYB=YYYY*EP1+YYY1*ALPH2*EP4 239 : * 240 : ZZZZ=XSTRS(3)*XSTRS(3) 241 : ZZZ1=XSTRS(6)*XSTRS(6) 242 : ZZZA=ZZZZ*EP1+ZZZ1*ALPH4*EP3 243 : ZZZB=ZZZZ*EP1+ZZZ1*ALPH2*EP4 244 : * 245 : A= CINQ*XXXA - HUIT*YYYA 246 : B= CINQ*YYYA - DEUX*XXXA 247 : C= DETIER*(XXXA-YYYA)+DEUX*ZZZA 248 : D= (A+DEUX*XNU*B)*AUX4 + SIX*ZZZA/(UN+XNU) 249 : * 250 : XNUM=TROIS*YOU*(YOU-YOUTA) 251 : DENOM=DEUX*YOUTA*C + ( YOU - YOUTA ) * D 252 : BETA=XNUM/DENOM 253 : * 254 : DDHOOK(1,1)=DDHOOK(1,1)-BETA*UM*UM 255 : DDHOOK(2,1)=DDHOOK(2,1)-BETA*VM*UM 256 : DDHOOK(3,1)=DDHOOK(3,1)-BETA*WM*UM 257 : * 258 : DDHOOK(4,1)= -BETA*UF*UM 259 : DDHOOK(5,1)= -BETA*VF*UM 260 : DDHOOK(6,1)= -BETA*WF*UM 261 : * 262 : DDHOOK(1,2)=DDHOOK(1,2)-BETA*UM*VM 263 : DDHOOK(2,2)=DDHOOK(2,2)-BETA*VM*VM 264 : DDHOOK(3,2)=DDHOOK(3,2)-BETA*WM*VM 265 : * 266 : DDHOOK(4,2)= -BETA*UF*VM 267 : DDHOOK(5,2)= -BETA*VF*VM 268 : DDHOOK(6,2)= -BETA*WF*VM 269 : * 270 : DDHOOK(1,3)=DDHOOK(1,3)-BETA*UM*WM 271 : DDHOOK(2,3)=DDHOOK(2,3)-BETA*VM*WM 272 : DDHOOK(3,3)=DDHOOK(3,3)-BETA*WM*WM 273 : * 274 : DDHOOK(4,3)= -BETA*UF*WM 275 : DDHOOK(5,3)= -BETA*VF*WM 276 : DDHOOK(6,3)= -BETA*WF*WM 277 : * 278 : DDHOOK(1,4)= -BETA*UM*UF 279 : DDHOOK(2,4)= -BETA*VM*UF 280 : DDHOOK(3,4)= -BETA*WM*UF 281 : * 282 : DDHOOK(4,4)=DDHOOK(4,4)-BETA*UF*UF 283 : DDHOOK(5,4)=DDHOOK(5,4)-BETA*VF*UF 284 : DDHOOK(6,4)=DDHOOK(6,4)-BETA*WF*UF 285 : * 286 : DDHOOK(1,5)= -BETA*UM*VF 287 : DDHOOK(2,5)= -BETA*VM*VF 288 : DDHOOK(3,5)= -BETA*WM*VF 289 : * 290 : DDHOOK(4,5)=DDHOOK(4,5)-BETA*UF*VF 291 : DDHOOK(5,5)=DDHOOK(5,5)-BETA*VF*VF 292 : DDHOOK(6,5)=DDHOOK(6,5)-BETA*WF*VF 293 : * 294 : DDHOOK(1,6)= -BETA*UM*WF 295 : DDHOOK(2,6)= -BETA*VM*WF 296 : DDHOOK(3,6)= -BETA*WM*WF 297 : * 298 : DDHOOK(4,6)=DDHOOK(4,6)-BETA*UF*WF 299 : DDHOOK(5,6)=DDHOOK(5,6)-BETA*VF*WF 300 : DDHOOK(6,6)=DDHOOK(6,6)-BETA*WF*WF 301 : ENDIF 302 : * 303 : ELSE IF(IFOU.EQ.0.OR.IFOU.EQ.-1) THEN 304 : * 305 : DDHOOK(1,1)=AUX1*EP1 306 : DDHOOK(2,2)=AUX1*EP1 307 : DDHOOK(1,2)=AUX2*EP1 308 : DDHOOK(2,1)=AUX2*EP1 309 : * 310 : DDHOOK(3,3)=AUX1*EP3 311 : DDHOOK(4,4)=AUX1*EP3 312 : DDHOOK(3,4)=AUX2*EP3 313 : DDHOOK(4,3)=AUX2*EP3 314 : * 315 : * on retranche la partie deviateur 316 : * 317 : IF(ILOGEL.EQ.1) THEN 318 : XSTRS(1)=XSTRS(1)*EP1 319 : XSTRS(2)=XSTRS(2)*EP1 320 : XSTRS(3)=XSTRS(3)*EP2 321 : XSTRS(4)=XSTRS(4)*EP2 322 : * 323 : UM=(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)- 324 : & XSTRS(1)))*AUX4 325 : VM=(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)- 326 : & XSTRS(2)))*AUX4 327 : * 328 : UF=(DEUX*XSTRS(3)-XSTRS(4)+XNU*(DEUX*XSTRS(4)- 329 : & XSTRS(3)))*AUX4 330 : VF=(DEUX*XSTRS(4)-XSTRS(3)+XNU*(DEUX*XSTRS(3)- 331 : & XSTRS(4)))*AUX4 332 : * 333 : UM=UM*EP1 334 : VM=VM*EP1 335 : * 336 : UF=UF*EP3*ALPH2 337 : VF=VF*EP3*ALPH2 338 : * 339 : XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2) 340 : XXX1=XSTRS(3)*XSTRS(3)+XSTRS(4)*XSTRS(4) 341 : XXXA=XXXX*EP1+XXX1*ALPH4*EP3 342 : XXXB=XXXX*EP1+XXX1*ALPH2*EP4 343 : * 344 : YYYY=XSTRS(1)*XSTRS(2) 345 : YYY1=XSTRS(3)*XSTRS(4) 346 : YYYA=YYYY*EP1+YYY1*ALPH4*EP3 347 : YYYB=YYYY*EP1+YYY1*ALPH2*EP4 348 : * 349 : A= CINQ*XXXA - HUIT*YYYA 350 : B= CINQ*YYYA - DEUX*XXXA 351 : C= DETIER*(XXXA-YYYA) 352 : D= (A+DEUX*XNU*B)*AUX4 353 : * 354 : XNUM=TROIS*YOU*(YOU-YOUTA) 355 : DENOM=DEUX*YOUTA*C + ( YOU - YOUTA ) * D 356 : BETA=XNUM/DENOM 357 : * 358 : DDHOOK(1,1)=DDHOOK(1,1)-BETA*UM*UM 359 : DDHOOK(2,1)=DDHOOK(2,1)-BETA*VM*UM 360 : * 361 : DDHOOK(3,1)= -BETA*UF*UM 362 : DDHOOK(4,1)= -BETA*VF*UM 363 : * 364 : DDHOOK(1,2)=DDHOOK(1,2)-BETA*UM*VM 365 : DDHOOK(2,2)=DDHOOK(2,2)-BETA*VM*VM 366 : * 367 : DDHOOK(3,2)= -BETA*UF*VM 368 : DDHOOK(4,2)= -BETA*VF*VM 369 : * 370 : DDHOOK(1,3)= -BETA*UM*UF 371 : DDHOOK(2,3)= -BETA*VM*UF 372 : * 373 : DDHOOK(3,3)=DDHOOK(3,3)-BETA*UF*UF 374 : DDHOOK(4,3)=DDHOOK(4,3)-BETA*VF*UF 375 : * 376 : DDHOOK(1,4)= -BETA*UM*VF 377 : DDHOOK(2,4)= -BETA*VM*VF 378 : * 379 : DDHOOK(3,4)=DDHOOK(3,4)-BETA*UF*VF 380 : DDHOOK(4,4)=DDHOOK(4,4)-BETA*VF*VF 381 : * 382 : ENDIF 383 : ELSE 384 : IRET=0 385 : ENDIF 386 : ELSE 387 : IRET=0 388 : ENDIF 389 : * 390 : RETURN 391 : *_______________________________________________________________________ 392 : * 393 : * formulation coques epaisses 394 : *_______________________________________________________________________ 395 : * 396 : ENTRY DOHOT5(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART,TRAC,LTRAC, 397 : & IGAU,IB,MATE,MAPL,XPREC,DTPS,IFOU,LHOOK,DDHOOK,IRET) 398 : * 399 : MFR=5 400 : XXHH =XZER 401 : ALPSS=XZER 402 : SIGY =XZER 403 : ALP =XZER 404 : * 405 : IRET=1 405 : CALL ZERO(DDHOOK,LHOOK,LHOOK) 406 : * 407 : * materiau elastique isotrope plastique parfait 408 : * 409 : IF(MATE.EQ.1) THEN 410 : MPTVAL=IVAMAT 411 : MELVAL=IVAL(1) 412 : IGMN=MIN(IGAU,VELCHE(/1)) 413 : IBMN=MIN(IB ,VELCHE(/2)) 414 : YOU =VELCHE(IGMN,IBMN) 415 : * 416 : MELVAL=IVAL(2) 417 : IGMN=MIN(IGAU,VELCHE(/1)) 418 : IBMN=MIN(IB ,VELCHE(/2)) 419 : XNU =VELCHE(IGMN,IBMN) 420 : * 421 : IF (MAPL.EQ.1.OR.MAPL.EQ.3.OR.MAPL.EQ.4) THEN 422 : MELVAL=IVAL(3) 423 : IGMN=MIN(IGAU,VELCHE(/1)) 424 : IBMN=MIN(IB ,VELCHE(/2)) 425 : SIGY = VELCHE(IGMN,IBMN) 426 : * 427 : IF (MAPL.EQ.3) THEN 428 : MELVAL=IVAL(4) 429 : IGMN=MIN(IGAU,VELCHE(/1)) 430 : IBMN=MIN(IB ,VELCHE(/2)) 431 : ALP = VELCHE(IGMN,IBMN) 432 : ELSE IF (MAPL.EQ.4) THEN 433 : MELVAL=IVAL(4) 434 : IGMN=MIN(IGAU,VELCHE(/1)) 435 : IBMN=MIN(IB ,VELCHE(/2)) 436 : XXHH = VELCHE(IGMN,IBMN) 437 : ENDIF 438 : ENDIF 439 : * 440 : MPTVAL=IVACON 441 : DO 90 ICOMP=1,NSTRS 442 : MELVAL=IVAL(ICOMP) 443 : IGMN=MIN(IGAU,VELCHE(/1)) 444 : IBMN=MIN(IB ,VELCHE(/2)) 445 : XSTRS(ICOMP) = VELCHE(IGMN,IBMN) 446 : 90 CONTINUE 447 : * 448 : MPTVAL=IVARI 449 : MELVAL=IVAL(1) 450 : IGMN=MIN(IGAU,VELCHE(/1)) 451 : IBMN=MIN(IB ,VELCHE(/2)) 452 : EPS = VELCHE(IGMN,IBMN) 453 : * 454 : IF(NVART.EQ.NSTRS+1) THEN 455 : DO 100 ICOMP=1,NSTRS 456 : MELVAL=IVAL(1+ICOMP) 457 : IGMN=MIN(IGAU,VELCHE(/1)) 458 : IBMN=MIN(IB ,VELCHE(/2)) 459 : XSTRS(ICOMP)= XSTRS(ICOMP) - VELCHE(IGMN,IBMN) 460 : 100 CONTINUE 461 : ENDIF 462 : * 462 : CALL PENTE(EPS,YOU,SIGY,XXHH,ALPSS,ALP,TRAC,LTRAC,XSTRS, 463 : & NSTRS,MAPL,MFR,XPREC,YOUTA,ILOGEL) 464 : * 465 : IF(ILOGEL.EQ.-1) THEN 466 : IRET=-1 467 : RETURN 468 : ENDIF 469 : * 470 : * matrice tangente / contraintes planes 471 : * 472 : IF(IFOU.EQ.2) THEN 473 : AUX1=YOU/(UN - XNU* XNU) 474 : AUX2=XNU*AUX1 475 : AUX3=YOU*UNDEMI/(UN+XNU) 476 : AUX31=YOU*UNDEMI/(UN+XNU)/1.2D0 477 : AUX4=UNTIER/(UN-XNU*XNU) 478 : * 479 : DDHOOK(1,1)=AUX1 480 : DDHOOK(2,2)=AUX1 481 : DDHOOK(1,2)=AUX2 482 : DDHOOK(2,1)=AUX2 483 : DDHOOK(3,3)=AUX3 484 : * 485 : DDHOOK(4,4)=AUX31 486 : DDHOOK(5,5)=AUX31 487 : * 488 : * on retranche la partie deviateur 489 : * 490 : IF(ILOGEL.EQ.1) THEN 491 : U =(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)- 492 : & XSTRS(1)))*AUX4 493 : V =(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)- 494 : & XSTRS(2)))*AUX4 495 : W =XSTRS(3)/(UN+XNU) 496 : * 497 : XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2) 498 : YYYY=XSTRS(1)*XSTRS(2) 499 : ZZZZ=XSTRS(3)*XSTRS(3) 500 : * 501 : A= CINQ*XXXX - HUIT*YYYY 502 : B= CINQ*YYYY - DEUX*XXXX 503 : C= DETIER*(XXXX-YYYY)+DEUX*ZZZZ 504 : D= (A+DEUX*XNU*B)*AUX4 + SIX*ZZZZ/(UN+XNU) 505 : * 506 : XNUM=TROIS*YOU*(YOU-YOUTA) 507 : DENOM=DEUX*YOUTA*C + ( YOU - YOUTA ) * D 508 : BETA=XNUM/DENOM 509 : * 510 : DDHOOK(1,1)=DDHOOK(1,1)-BETA*U*U 511 : DDHOOK(2,1)=DDHOOK(2,1)-BETA*V*U 512 : DDHOOK(3,1)=DDHOOK(3,1)-BETA*W*U 513 : * 514 : DDHOOK(1,2)=DDHOOK(1,2)-BETA*U*V 515 : DDHOOK(2,2)=DDHOOK(2,2)-BETA*V*V 516 : DDHOOK(3,2)=DDHOOK(3,2)-BETA*W*V 517 : * 518 : DDHOOK(1,3)=DDHOOK(1,3)-BETA*U*W 519 : DDHOOK(2,3)=DDHOOK(2,3)-BETA*V*W 520 : DDHOOK(3,3)=DDHOOK(3,3)-BETA*W*W 521 : ENDIF 522 : ELSE 523 : IRET=0 524 : ENDIF 525 : ELSE 526 : IRET=0 527 : ENDIF 528 : * 529 : RETURN 530 : *_______________________________________________________________________ 531 : * 532 : * formulation coques cisaillement transverse 533 : *_______________________________________________________________________ 534 : * 535 : ENTRY DOHOT9(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART, 536 : & TRAC,LTRAC,ALPHA,EP1,IGAU,IB,MATE,MAPL, 537 : & XPREC,DTPS,IFOU,LHOOK,DDHOOK,IRET) 538 : * 539 : MFR=9 540 : XXHH=XZER 541 : SIGY=XZER 542 : ALP =XZER 543 : ALPHAP=ALPHA*SIX/EP1 544 : ALPH2=ALPHAP*ALPHAP 545 : ALPH4=ALPH2*ALPH2 546 : * 546 : CALL ZERO(DDHOOK,LHOOK,LHOOK) 547 : * 548 : * materiau elastique isotrope plastique parfait et bilineaire 549 : * 550 : IF(MATE.EQ.1) THEN 551 : MPTVAL=IVAMAT 552 : MELVAL=IVAL(1) 553 : IGMN=MIN(IGAU,VELCHE(/1)) 554 : IBMN=MIN(IB ,VELCHE(/2)) 555 : YOU =VELCHE(IGMN,IBMN) 556 : * 557 : MELVAL=IVAL(2) 558 : IGMN=MIN(IGAU,VELCHE(/1)) 559 : IBMN=MIN(IB ,VELCHE(/2)) 560 : XNU =VELCHE(IGMN,IBMN) 561 : * 562 : IF (MAPL.EQ.1.OR.MAPL.EQ.3.OR.MAPL.EQ.4) THEN 563 : MELVAL=IVAL(3) 564 : IGMN=MIN(IGAU,VELCHE(/1)) 565 : IBMN=MIN(IB ,VELCHE(/2)) 566 : SIGY = VELCHE(IGMN,IBMN) 567 : * 568 : IF (MAPL.EQ.3) THEN 569 : MELVAL=IVAL(4) 570 : IGMN=MIN(IGAU,VELCHE(/1)) 571 : IBMN=MIN(IB ,VELCHE(/2)) 572 : ALP = VELCHE(IGMN,IBMN) 573 : ELSE IF (MAPL.EQ.4) THEN 574 : MELVAL=IVAL(4) 575 : IGMN=MIN(IGAU,VELCHE(/1)) 576 : IBMN=MIN(IB ,VELCHE(/2)) 577 : XXHH = VELCHE(IGMN,IBMN) 578 : ENDIF 579 : ENDIF 580 : * 581 : MPTVAL=IVACON 582 : DO 180 ICOMP=1,NSTRS 583 : MELVAL=IVAL(ICOMP) 584 : IGMN=MIN(IGAU,VELCHE(/1)) 585 : IBMN=MIN(IB ,VELCHE(/2)) 586 : XSTRS(ICOMP) = VELCHE(IGMN,IBMN) 587 : 180 CONTINUE 588 : * 589 : MPTVAL=IVARI 590 : MELVAL=IVAL(1) 591 : IGMN=MIN(IGAU,VELCHE(/1)) 592 : IBMN=MIN(IB ,VELCHE(/2)) 593 : EPS = VELCHE(IGMN,IBMN) 594 : * 595 : IF (NVART.EQ.NSTRS+1) THEN 596 : DO 190 ICOMP=1,NSTRS 597 : MELVAL=IVAL(1+ICOMP) 598 : IGMN=MIN(IGAU,VELCHE(/1)) 599 : IBMN=MIN(IB ,VELCHE(/2)) 600 : XSTRS(ICOMP)= XSTRS(ICOMP) - VELCHE(IGMN,IBMN) 601 : 190 CONTINUE 602 : ENDIF 603 : * 603 : CALL PENTE(EPS,YOU,SIGY,XXHH,ALPHA,ALP,TRAC,LTRAC,XSTRS, 604 : & NSTRS,MAPL,MFR,XPREC,YOUTA,ILOGEL) 605 : * 606 : IF(ILOGEL.EQ.-1) THEN 607 : IRET=-1 608 : RETURN 609 : ENDIF 610 : * 611 : * matrice tangente / tridimensionnel 612 : * 613 : IF(IFOU.EQ.2) THEN 614 : AUX1=YOU/(UN - XNU* XNU) 615 : AUX2=XNU*AUX1 616 : AUX3=YOU*UNDEMI/(UN+XNU) 617 : AUX4=UNTIER/(UN-XNU*XNU) 618 : EP2=EP1*EP1/SIX 619 : EP3=EP1*EP1*EP1/DOUZE 620 : EP4=EP3/TROIS 621 : * 622 : DDHOOK(1,1)=AUX1*EP1 623 : DDHOOK(2,2)=AUX1*EP1 624 : DDHOOK(1,2)=AUX2*EP1 625 : DDHOOK(2,1)=AUX2*EP1 626 : DDHOOK(3,3)=AUX3*EP1 627 : * 628 : DDHOOK(4,4)=AUX1*EP3 629 : DDHOOK(5,5)=AUX1*EP3 630 : DDHOOK(4,5)=AUX2*EP3 631 : DDHOOK(5,4)=AUX2*EP3 632 : DDHOOK(6,6)=AUX3*EP3 633 : * 634 : DDHOOK(7,7)=AUX3*EP1/1.2D0 635 : DDHOOK(8,8)=AUX3*EP1/1.2D0 636 : * 637 : * on retranche la partie deviateur 638 : * 639 : IF(ILOGEL.EQ.1) THEN 640 : XSTRS(1)=XSTRS(1)*EP1 641 : XSTRS(2)=XSTRS(2)*EP1 642 : XSTRS(3)=XSTRS(3)*EP1 643 : XSTRS(4)=XSTRS(4)*EP2 644 : XSTRS(5)=XSTRS(5)*EP2 645 : XSTRS(6)=XSTRS(6)*EP2 646 : * 647 : UM=(DEUX*XSTRS(1)-XSTRS(2)+XNU*(DEUX*XSTRS(2)- 648 : & XSTRS(1)))*AUX4 649 : VM=(DEUX*XSTRS(2)-XSTRS(1)+XNU*(DEUX*XSTRS(1)- 650 : & XSTRS(2)))*AUX4 651 : WM=XSTRS(3)/(UN+XNU) 652 : * 653 : UF=(DEUX*XSTRS(4)-XSTRS(5)+XNU*(DEUX*XSTRS(5)- 654 : & XSTRS(4)))*AUX4 655 : VF=(DEUX*XSTRS(5)-XSTRS(4)+XNU*(DEUX*XSTRS(4)- 656 : & XSTRS(5)))*AUX4 657 : WF=XSTRS(6)/(UN+XNU) 658 : * 659 : UM=UM*EP1 660 : VM=VM*EP1 661 : WM=WM*EP1 662 : * 663 : UF=UF*EP3*ALPH2 664 : VF=VF*EP3*ALPH2 665 : WF=WF*EP3*ALPH2 666 : * 667 : XXXX=XSTRS(1)*XSTRS(1)+XSTRS(2)*XSTRS(2) 668 : XXX1=XSTRS(4)*XSTRS(4)+XSTRS(5)*XSTRS(5) 669 : XXXA=XXXX*EP1+XXX1*ALPH4*EP3 670 : XXXB=XXXX*EP1+XXX1*ALPH2*EP4 671 : * 672 : YYYY=XSTRS(1)*XSTRS(2) 673 : YYY1=XSTRS(4)*XSTRS(5) 674 : YYYA=YYYY*EP1+YYY1*ALPH4*EP3 675 : YYYB=YYYY*EP1+YYY1*ALPH2*EP4 676 : * 677 : ZZZZ=XSTRS(3)*XSTRS(3) 678 : ZZZ1=XSTRS(6)*XSTRS(6) 679 : ZZZA=ZZZZ*EP1+ZZZ1*ALPH4*EP3 680 : ZZZB=ZZZZ*EP1+ZZZ1*ALPH2*EP4 681 : * 682 : A= CINQ*XXXA - HUIT*YYYA 683 : B= CINQ*YYYA - DEUX*XXXA 684 : C= DETIER*(XXXA-YYYA)+DEUX*ZZZA 685 : D= (A+DEUX*XNU*B)*AUX4 + SIX*ZZZA/(UN+XNU) 686 : * 687 : XNUM=TROIS*YOU*(YOU-YOUTA) 688 : DENOM=DEUX*YOUTA*C + ( YOU - YOUTA ) * D 689 : BETA=XNUM/DENOM 690 : * 691 : DDHOOK(1,1)=DDHOOK(1,1)-BETA*UM*UM 692 : DDHOOK(2,1)=DDHOOK(2,1)-BETA*VM*UM 693 : DDHOOK(3,1)=DDHOOK(3,1)-BETA*WM*UM 694 : * 695 : DDHOOK(4,1)= -BETA*UF*UM 696 : DDHOOK(5,1)= -BETA*VF*UM 697 : DDHOOK(6,1)= -BETA*WF*UM 698 : * 699 : DDHOOK(1,2)=DDHOOK(1,2)-BETA*UM*VM 700 : DDHOOK(2,2)=DDHOOK(2,2)-BETA*VM*VM 701 : DDHOOK(3,2)=DDHOOK(3,2)-BETA*WM*VM 702 : * 703 : DDHOOK(4,2)= -BETA*UF*VM 704 : DDHOOK(5,2)= -BETA*VF*VM 705 : DDHOOK(6,2)= -BETA*WF*VM 706 : * 707 : DDHOOK(1,3)=DDHOOK(1,3)-BETA*UM*WM 708 : DDHOOK(2,3)=DDHOOK(2,3)-BETA*VM*WM 709 : DDHOOK(3,3)=DDHOOK(3,3)-BETA*WM*WM 710 : * 711 : DDHOOK(4,3)= -BETA*UF*WM 712 : DDHOOK(5,3)= -BETA*VF*WM 713 : DDHOOK(6,3)= -BETA*WF*WM 714 : * 715 : DDHOOK(1,4)= -BETA*UM*UF 716 : DDHOOK(2,4)= -BETA*VM*UF 717 : DDHOOK(3,4)= -BETA*WM*UF 718 : * 719 : DDHOOK(4,4)=DDHOOK(4,4)-BETA*UF*UF 720 : DDHOOK(5,4)=DDHOOK(5,4)-BETA*VF*UF 721 : DDHOOK(6,4)=DDHOOK(6,4)-BETA*WF*UF 722 : * 723 : DDHOOK(1,5)= -BETA*UM*VF 724 : DDHOOK(2,5)= -BETA*VM*VF 725 : DDHOOK(3,5)= -BETA*WM*VF 726 : * 727 : DDHOOK(4,5)=DDHOOK(4,5)-BETA*UF*VF 728 : DDHOOK(5,5)=DDHOOK(5,5)-BETA*VF*VF 729 : DDHOOK(6,5)=DDHOOK(6,5)-BETA*WF*VF 730 : * 731 : DDHOOK(1,6)= -BETA*UM*WF 732 : DDHOOK(2,6)= -BETA*VM*WF 733 : DDHOOK(3,6)= -BETA*WM*WF 734 : * 735 : DDHOOK(4,6)=DDHOOK(4,6)-BETA*UF*WF 736 : DDHOOK(5,6)=DDHOOK(5,6)-BETA*VF*WF 737 : DDHOOK(6,6)=DDHOOK(6,6)-BETA*WF*WF 738 : ENDIF 739 : ELSE 740 : IRET=0 741 : ENDIF 742 : ELSE 743 : IRET=0 744 : ENDIF 745 : * 746 : RETURN 747 : END 748 : 749 :
© Cast3M 2003 - All rights reserved.
Disclaimer