1 : C UMAPO2 SOURCE CHAT 06/07/13 21:16:08 5488 2 : SUBROUTINE UMAPO2 ( STRESS, STATEV, DDSDDE, 3 : & STRAN, DSTRAN, DTIME, 4 : & TEMP, DTEMP, PREDEF, DPRED, 5 : & NTENS, NSTATV, 6 : & PROPS, NPROPS, COORDS, 7 : & NOEL, NPT, KINC ) 8 : IMPLICIT INTEGER(I-N) 9 : IMPLICIT REAL*8(A-H,O-Z) 10 : C----------------------------------------------------------------------- 11 : C 12 : C DESCRIPTION FONCTIONNELLE : 13 : C ------------------------- 14 : C 15 : C Dependance du module Utilisateur UMAT 16 : C Appelee dans le cas suivant : 17 : C 18 : C ILOI = 22 : Modele 'FLUAGE' 'POLYNOMIAL' de CAST3M, INPLAS=21 19 : C RESTRICTION A LA FORMULATION MASSIVE 20 : C Instanciation des composantes de materiau au fur et a 21 : C mesure des iterations internes. 22 : C Le modele comprend cette fois des parametres externes. 23 : C Les composantes de materiau sont evaluees par les 24 : C memes fonctions externes que celles utilisees par 25 : C l'operateur VARI. 26 : C MODELE 'MAQUETTE' 27 : C 28 : C Composantes de materiau 29 : C ----------------------- 30 : C PROPS ( 1) : 'YOUN' PROPS ( 5) : 'SMAX' 31 : C PROPS ( 2) : 'NU ' PROPS ( 6) : 'AF0 ' 32 : C PROPS ( 3) : 'RHO ' PROPS ( 7) : 'AF1 ' 33 : C PROPS ( 4) : 'ALPH' PROPS ( 8) : 'AF2 ' 34 : C PROPS ( 9) : 'AF3 ' 35 : C PROPS (10) : 'AF4 ' 36 : C PROPS (11) : 'AF5 ' 37 : C PROPS (12) : 'AF6 ' 38 : C Variables internes 39 : C ------------------ 40 : C STATEV( 1) : 'PXX ' STATEV(17) : 'ENXX' 41 : C STATEV( 2) : 'PYY ' STATEV(18) : 'ENYY' 42 : C STATEV( 3) : 'PZZ ' STATEV(19) : 'ENZZ' 43 : C STATEV( 4) : 'PXY ' STATEV(20) : 'GNXY' 44 : C STATEV( 5) : 'PYZ ' STATEV(21) : 'GNXZ' 45 : C STATEV( 6) : 'PZX ' STATEV(22) : 'GNYZ' 46 : C STATEV( 7) : 'VNXX' 47 : C STATEV( 8) : 'VNYY' 48 : C STATEV( 9) : 'VNZZ' 49 : C STATEV(10) : 'VNXY' 50 : C STATEV(11) : 'VNYZ' 51 : C STATEV(12) : 'VNZX' 52 : C STATEV(13) : 'EPCE' 53 : C STATEV(14) : 'EPSH' 54 : C STATEV(15) : 'LL ' 55 : C STATEV(16) : 'EPSE' 56 : C 57 : C Parametres externes 58 : C ------------------- 59 : C TEMP : 'T ' 60 : C PREDEF( 1) : 'PORO' 61 : C PREDEF( 2) : 'YOGC' 62 : C PREDEF( 3) : 'ALPC' 63 : C PREDEF( 4) : 'TFIS' 64 : C PREDEF( 5) : 'TU02' 65 : C PREDEF( 6) : 'FACF' 66 : C PREDEF( 7) : 'DSIU' 67 : C PREDEF( 8) : 'DGRA' 68 : C 69 : C DTEMP : increment de 'T ' sur le pas de temps 70 : C DPRED ( 1) : increment de 'PORO' sur le pas de temps 71 : C DPRED ( 2) : increment de 'YOGC' sur le pas de temps - INUTILE 72 : C DPRED ( 3) : increment de 'ALPC' sur le pas de temps - INUTILE 73 : C DPRED ( 4) : increment de 'TFIS' sur le pas de temps 74 : C DPRED ( 5) : increment de 'TUO2' sur le pas de temps 75 : C DPRED ( 6) : increment de 'FACF' sur le pas de temps 76 : C DPRED ( 7) : increment de 'DSIU' sur le pas de temps 77 : C DPRED ( 8) : increment de 'DGRA' sur le pas de temps 78 : C 79 : C----------------------------------------------------------------------- 80 : C Arguments de l'interface 81 : C 82 : INTEGER NTENS, NSTATV, NPROPS, 83 : & NOEL, NPT, KINC 84 : C 85 : REAL*8 STRESS(NTENS), STATEV(*), 86 : & DDSDDE(NTENS,NTENS), 87 : & STRAN(NTENS), DSTRAN(NTENS), 88 : & DTIME, 89 : & TEMP, DTEMP, PREDEF(*), DPRED(*), 90 : & PROPS(NPROPS), 91 : & COORDS(3) 92 : C 93 : C Variables locales 94 : C 95 : INTEGER NVARI 96 : PARAMETER (NVARI=16) 97 : C 98 : C Tableaux de travail 99 : C 100 : REAL*8 VAR(NVARI),VAR1(NVARI),VARP1(NVARI),VARP2(NVARI), 101 : & VAR12(NVARI),VARP3(NVARI),VARP4(NVARI),VAR13(NVARI), 102 : & SIG(8),SIG1(8),SIG12(8),SIG13(8), 103 : & DSPT(8),XX(8), 104 : & EVP1(8),EVP2(8),EVP3(8),EVP4(8), 105 : & EPSV(8),EPSV1(8),EPSV12(8),EPSV13(8) 106 : C 107 : REAL*8 EPIN0(8),DSIGT(8),VARF(NVARI),SIGF(8),EPINF(8) 108 : C 109 : REAL*8 WMAT(12), WMAT2(12) 110 : C 111 : C Variables scalaires 112 : C 113 : LOGICAL DTLIBR 114 : REAL*8 DT, DTLEFT, BORNE, RMAX, RMIN, DIV, FAC, 115 : & YOU, XNU, AUX0, AUX, AUX1, GEGE, 116 : & XMAX, 117 : CCCCC& TI0, TI1, TPOINT, DELTAT, TI12, FII0, FII1, FII12, 118 : & TI1, TI12, FII0, FII1, FII12, 119 : & DTCUM, DTTAU, DTTAU2, 120 : & TAU, ASIG, ERRABS, TAU2, RA, SQRA, RA1 121 : INTEGER MSOUPA, I, J, ITERO, NSSINC, NITERA, 122 : & INPLAS, MFR1, IFOURB, IERUT 123 : C 124 : REAL*8 UN, DEUX, UNDEMI 125 : PARAMETER (UN=1.D0,DEUX=2.D0,UNDEMI=.5D0) 126 : C 127 : REAL*8 PRECIS 128 : C 129 : REAL*8 PROCON 130 : EXTERNAL PROCON 131 : C 132 : C------------------- Debut du code executable -------------------------- 133 : C 134 : C======================================================================= 135 : C 1 - INITIALISATIONS 136 : C Pas de temps et parametres de pilotage des iterations internes 137 : C======================================================================= 138 : C 139 : PRECIS=1.d-8 140 : DTLIBR=.TRUE. 141 : C 142 : DT = DTIME 143 : IF (DT.LT.0.0) THEN 144 : KINC = -221 145 : RETURN 146 : ENDIF 147 : IF (DT.EQ.0.0) DT = 1.e-20 148 : C 149 : DTLEFT = DT 150 : BORNE = 2.0 151 : RMAX = 1.3 152 : RMIN = 0.7 153 : DIV = 7.0 154 : FAC = 3.0 155 : C 156 : MSOUPA = 200 157 : C 158 : INPLAS = 21 159 : MFR1 = 1 160 : IFOURB = 2 161 : FII0 = 0.0D0 162 : FII1 = 0.0D0 163 : FII12 = 0.0D0 164 : TI1 = 0.0D0 165 : TI12 = 0.0D0 166 : C 167 : C======================================================================= 168 : C 2 - Prediction elastique de l'increment de contraintes 169 : C La sequence ci-dessous se substitue a l'appel a CALSIG 170 : C Le calcul des coefficients de la matrice de Hooke reprend la 171 : C sequence d'operations de HOOKIS 172 : C N.B. Les proprietes de materiau prises dans le vecteur PROPS sont 173 : C instanciees A LA FIN du pas 174 : C======================================================================= 175 : C 176 : YOU = PROPS(1) 177 : XNU = PROPS(2) 178 : C 179 : AUX0 = UN/((UN+XNU)*(UN-DEUX*XNU)) 180 : AUX = YOU*AUX0*(UN-XNU) 181 : AUX1 = YOU*AUX0*XNU 182 : GEGE = YOU*UNDEMI/(UN+XNU) 183 : C 184 : DO 10 J=1,NTENS 185 : DO 11 I=1,NTENS 186 : DDSDDE(I,J)=0.0D0 187 : 11 CONTINUE 188 : 10 CONTINUE 189 : C 190 : DDSDDE(1,1) = AUX 191 : DDSDDE(1,2) = AUX1 192 : DDSDDE(1,3) = AUX1 193 : C 194 : DDSDDE(2,1) = AUX1 195 : DDSDDE(2,2) = AUX 196 : DDSDDE(2,3) = AUX1 197 : C 198 : DDSDDE(3,1) = AUX1 199 : DDSDDE(3,2) = AUX1 200 : DDSDDE(3,3) = AUX 201 : C 202 : DDSDDE(4,4) = GEGE 203 : DDSDDE(5,5) = GEGE 204 : DDSDDE(6,6) = GEGE 205 : C 206 : DO 20 I=1,NTENS 207 : DSIGT(I)=0.0D0 208 : 20 CONTINUE 209 : DO 21 J=1,NTENS 210 : DO 22 I=1,NTENS 211 : DSIGT(I)=DSIGT(I)+DDSDDE(I,J)*DSTRAN(J) 212 : 22 CONTINUE 213 : 21 CONTINUE 214 : C 215 : C======================================================================= 216 : C 3 - Pre-traitement des deformations inelastiques au debut du pas 217 : C Passage gamma -> epsilon pour les termes extradiagonaux 218 : C======================================================================= 219 : C 220 : DO 34 J=1,3 221 : EPIN0(J)=STATEV(NVARI+J) 222 : 34 CONTINUE 223 : DO 35 J=4,6 224 : EPIN0(J)=0.5D0*STATEV(NVARI+J) 225 : 35 CONTINUE 226 : C 227 : C======================================================================= 228 : C 4 - TEST SUR XMAX MILL 8/3/91 229 : C======================================================================= 230 : C 231 : XMAX=PROPS(5) 232 : IF (XMAX.EQ.0.D0) XMAX=PROPS(1)*1.D-3 233 : C 234 : C======================================================================= 235 : C 5 - INITIALISATIONS AVANT ITERATIONS EN SOUS-INCREMENTS 236 : C======================================================================= 237 : C 238 : ITERO = 0 239 : 6543 CONTINUE 240 : C 241 : ITERO = 1 + ITERO 242 : IF ( ITERO.NE.1) THEN 243 : DTLIBR = .TRUE. 244 : PRECIS = PRECIS * 7.D0 245 : IF (ITERO.GT.3) THEN 246 : KINC = -222 247 : RETURN 248 : ENDIF 249 : ENDIF 250 : C 251 : DTLEFT = DT 252 : TAU = DTLEFT 253 : DTCUM = 0.0D0 254 : CCCCC TI0=TEMP 255 : CCCCC TI1=TEMP+DTEMP 256 : CCCCC TPOINT=DTEMP/DT 257 : ASIG = SQRT(PROCON(STRESS,STRESS,NTENS)) 258 : ERRABS = PRECIS*ASIG 259 : IF (XMAX.GT.ASIG) ERRABS = PRECIS*XMAX 260 : C 261 : DO 40 I=1,NTENS 262 : SIG(I) = STRESS(I) 263 : EPSV(I) = EPIN0(I) 264 : DSPT(I) = DSIGT(I)/DT 265 : 40 CONTINUE 266 : C 267 : DO 50 I=1,NVARI 268 : VAR(I)=STATEV(I) 269 : 50 CONTINUE 270 : C 271 : C======================================================================= 272 : C 6 - ITERATIONS EN SSINCREMENTS /FIN SI DTLEFT = 0 273 : C======================================================================= 274 : C 275 : NSSINC = 0 276 : NITERA = 0 277 : 60 CONTINUE 278 : C 279 : NSSINC = NSSINC + 1 280 : IF (NSSINC.GT.MSOUPA) THEN 281 : DTLIBR=.FALSE. 282 : GOTO 6543 283 : ENDIF 284 : C 285 : CCCCC DELTAT=TPOINT*TAU 286 : CCCCC TI1=TI0+DELTAT 287 : CCCCC....Materiau a TAU 288 : DTTAU = DTCUM + TAU 288 : CALL MATPO2(DTTAU,DT,TEMP,DTEMP,PREDEF,DPRED,wmat,IERUT) 289 : IF (IERUT.NE.0) THEN 290 : KINC = IERUT 291 : RETURN 292 : ENDIF 292 : CALL INCRE1(TAU,SIG,EPSV,VAR,EVP1,VARP1,wmat,NTENS,NVARI, 293 : & INPLAS,NPROPS,MFR1,FII0,FII1,TI1) 294 : C 295 : C --------------------------------------------------------------- 296 : C DEBUT DES ITERATIONS SUR TAU OPTIMAL /FIN SI RA PETIT 297 : C 298 : NITERA = 0 299 : 70 CONTINUE 300 : C 301 : NITERA = NITERA + 1 302 : C 303 : C ____________________________________________________________ 304 : TAU2=TAU*0.5D0 305 : CCCCC.......Materiau a TAU 1/2 306 : DTTAU2 = DTCUM + TAU2 306 : CALL MATPO2(DTTAU2,DT,TEMP,DTEMP,PREDEF,DPRED,wmat2,IERUT) 307 : IF (IERUT.NE.0) THEN 308 : KINC = IERUT 309 : RETURN 310 : ENDIF 310 : CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP1, 311 : & VARP1,wmat2,NTENS,NVARI,IFOURB,INPLAS,MFR1) 312 : C 313 : C ____________________________________________________________ 314 : CCCCC DELTAT=TPOINT*TAU 315 : CCCCC TI1=TI0+DELTAT 316 : CCCCC.......Materiau a TAU 317 : DTTAU = DTCUM + TAU 317 : CALL MATPO2(DTTAU,DT,TEMP,DTEMP,PREDEF,DPRED,wmat,IERUT) 318 : IF (IERUT.NE.0) THEN 319 : KINC = IERUT 320 : RETURN 321 : ENDIF 321 : CALL INCRE1(TAU,SIG1,EPSV1,VAR1,EVP2,VARP2,wmat,NTENS, 322 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII1,TI1) 323 : DO 701 I=1,NTENS 324 : EVP2(I) = 0.5D0*(EVP1(I)+EVP2(I)) 325 : 701 CONTINUE 326 : DO 702 I=1,2*NTENS+2 327 : VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I)) 328 : 702 CONTINUE 329 : DO 703 I=2*NTENS+4,NVARI 330 : VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I)) 331 : 703 CONTINUE 332 : C 333 : C ____________________________________________________________ 334 : CCCCC DELTAT=TPOINT*TAU2 335 : CCCCC TI12=TI0+DELTAT 336 : CCCCC.......Materiau a TAU 1/2 336 : CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG12,EPSV12,VAR12,DSPT,EVP2, 337 : & VARP2,wmat2,NTENS,NVARI,IFOURB,INPLAS,MFR1) 337 : CALL INCRE1(TAU2,SIG12,EPSV12,VAR12,EVP3,VARP3,wmat2,NTENS, 338 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12) 339 : C 340 : C ____________________________________________________________ 341 : CCCCC TI1=TI12+DELTAT 342 : CCCCC.......Materiau a TAU 342 : CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIG13,EPSV13,VAR13,DSPT, 343 : & EVP3,VARP3,wmat,NTENS,NVARI,IFOURB,INPLAS,MFR1) 343 : CALL INCRE1(TAU2,SIG13,EPSV13,VAR13,EVP4,VARP4,wmat,NTENS, 344 : & NVARI,INPLAS,NPROPS,MFR1,FII12,FII1,TI1) 345 : DO 711 I=1,NTENS 346 : EVP4(I) = 0.5D0*(EVP3(I)+EVP4(I)) 347 : 711 CONTINUE 348 : DO 712 I=1,2*NTENS+2 349 : VARP4(I)= 0.5D0*(VARP3(I) + VARP4(I)) 350 : 712 CONTINUE 351 : DO 713 I=2*NTENS+4,NVARI 352 : VARP4(I)= 0.5D0*(VARP3(I) + VARP4(I)) 353 : 713 CONTINUE 354 : CCCCC.......Materiau a TAU 354 : CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIGF,EPINF,VARF,DSPT, 355 : & EVP4,VARP4,wmat,NTENS,NVARI,IFOURB,INPLAS,MFR1) 356 : C 357 : C ____________________________________________________________ 358 : CCCCC DELTAT=TPOINT*TAU2 359 : CCCCC TI12=TI0+DELTAT 360 : CCCCC.......Materiau a TAU 1/2 360 : CALL INCRE1(TAU2,SIGF,EPINF,VARF,EVP4,VARP4,wmat2,NTENS, 361 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12) 362 : DO 721 I=1,NTENS 363 : EVP2(I) = (EVP1(I)+EVP4(I))/6.D0+EVP3(I)*2.D0/3.D0 364 : 721 CONTINUE 365 : DO 722 I=1,2*NTENS+2 366 : VARP2(I)=(VARP1(I) + VARP4(I))/6.D0+VARP3(I)*2.D0/3.D0 367 : 722 CONTINUE 368 : DO 723 I=2*NTENS+4,NVARI 369 : VARP2(I)= (VARP1(I) + VARP4(I))/6.D0+VARP3(I)*2.D0/3.D0 370 : 723 CONTINUE 371 : C...........Materiau a TAU 371 : CALL ADVAN1(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP2, 372 : & VARP2,wmat,NTENS,NVARI,IFOURB,INPLAS,MFR1) 373 : C 374 : C ____________________________________________________________ 375 : C CALCUL DU RAPPORT : ERREUR CALCULEE / ERREUR ADMISE 376 : C 377 : DO 730 I=1,NTENS 378 : XX(I) = SIGF(I)-SIG1(I) 379 : 730 CONTINUE 380 : RA = SQRT(PROCON(XX,XX,NTENS))/(ERRABS) 381 : SQRA = SQRT(RA) 382 : C 383 : C ____________________________________________________________ 384 : C TEST DE FIN D'ITERATIONS / MISE A JOUR DE TAU 385 : C DIV =7 BORNE = 2 386 : C SI SQRA>7 TAU = TAU/7 ET NOUVEL ESSAI 387 : C SI 2RMAX on vise RA = 1 426 : C Fin des boucles en ss increments si tau = DTLEFT 427 : C 428 : DTCUM = DTCUM + TAU 429 : IF ( TAU.LT.DTLEFT ) THEN 430 : DTLEFT = DTLEFT - TAU 431 : IF ( FAC*SQRA.LT.1.D0) THEN 432 : TAU=TAU*FAC 433 : ELSE IF ( (SQRA.LT.RMIN).OR.(SQRA.GT.RMAX) ) THEN 434 : TAU=TAU/SQRA 435 : ENDIF 436 : IF (TAU.GT.DTLEFT) TAU = DTLEFT 437 : CCCCC TI0=TI1 438 : CCCCC DELTAT=TPOINT*TAU 439 : CCCCC TI1=TI0+DELTAT 440 : GOTO 60 441 : ENDIF 442 : C 443 : IF (ABS(TAU-DTLEFT).GT.(TAU/1000.)) THEN 444 : KINC = -223 445 : RETURN 446 : ENDIF 447 : C 448 : C======================================================================= 449 : C 7 - STOCKAGE DES RESULTATS AVANT SORTIE 450 : C======================================================================= 451 : C 452 : C Contraintes 453 : C 454 : DO 100 J=1,NTENS 455 : STRESS(J)=SIGF(J) 456 : 100 CONTINUE 457 : C 458 : C Variables internes 459 : C 460 : DO 110 J=1,NVARI 461 : STATEV(J)=VARF(J) 462 : 110 CONTINUE 463 : C 464 : C Deformations inelastiques 465 : C Passage epsilon -> gamma pour les termes extradiagonaux 466 : C 467 : DO 120 J=1,3 468 : STATEV(NVARI+J)=EPINF(J) 469 : 120 CONTINUE 470 : DO 121 J=4,6 471 : STATEV(NVARI+J)=2.0D0*EPINF(J) 472 : 121 CONTINUE 473 : C 474 : RETURN 475 : END 476 : 477 : 478 : 479 : 480 :
© Cast3M 2003 - All rights reserved.
Disclaimer