1 : C UMAGAT SOURCE STRU 07/05/31 21:15:29 5744 2 : SUBROUTINE UMAGAT ( 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 = 7 : Modele 'VISCOPLASTIQUE' 'GATT_MONERIE' de CAST3M, 19 : C INPLAS=107 20 : C RESTRICTION A LA FORMULATION MASSIVE 21 : C 22 : C Composantes de materiau 23 : C ----------------------- 24 : C PROPS ( 1) : 'YOUN' 25 : C PROPS ( 2) : 'NU ' 26 : C PROPS ( 3) : 'RHO ' 27 : C PROPS ( 4) : 'ALPH' 28 : C PROPS ( 5) : 'R ' 29 : C PROPS ( 6) : 'DG ' 30 : C PROPS ( 7) : 'K1 ' 31 : C PROPS ( 8) : 'M1 ' 32 : C PROPS ( 9) : 'Q1 ' 33 : C PROPS (10) : 'N1 ' 34 : C PROPS (11) : 'K2 ' 35 : C PROPS (12) : 'M2 ' 36 : C PROPS (13) : 'Q2 ' 37 : C PROPS (14) : 'N2 ' 38 : C PROPS (15) : 'OMEG' 39 : C PROPS (16) : 'Q ' 40 : C PROPS (17) : 'H ' 41 : C PROPS (18) : 'BETA' 42 : C PROPS (19) : 'K ' 43 : C PROPS (20) : 'A ' 44 : C PROPS (21) : 'Q3 ' 45 : C PROPS (22) : 'N3 ' 46 : C PROPS (23) : 'ADEN' 47 : C PROPS (24) : 'KGON' 48 : C PROPS (25) : 'POR0' 49 : C PROPS (26) : 'BUMI' 50 : C PROPS (27) : 'EFIS' 51 : C PROPS (28) : 'DG0 ' 52 : C PROPS (29) : 'CR1 ' 53 : C PROPS (30) : 'CR2 ' 54 : C PROPS (31) : 'CR3 ' 55 : C PROPS (32) : 'CR ' 56 : C PROPS (33) : 'KP ' 57 : C PROPS (34) : 'AP ' 58 : C PROPS (35) : 'BP ' 59 : C PROPS (36) : 'QP ' 60 : C PROPS (37) : 'VISQ' (non utilise mais c'est la premiere comp. fac. pour gatt.eso) 61 : C PROPS (38) : 'TYPE' 62 : C PROPS (39) : 'COMP' 63 : C PROPS (40) : 'DYN ' 64 : C 65 : C Variables internes 66 : C ------------------ 67 : C STATEV( 1) : 'EPSE' 68 : C STATEV( 2) : 'PORO' 69 : C STATEV( 3) : 'BU ' 70 : C STATEV( 4) : 'TETA' 71 : C STATEV( 5) : 'EPSD' 72 : C STATEV( 6) : 'EPSG' 73 : C 74 : C STATEV( 7) : 'ENXX' 75 : C STATEV( 8) : 'ENYY' 76 : C STATEV( 9) : 'ENZZ' 77 : C STATEV(10) : 'GNXY' 78 : C STATEV(11) : 'GNXZ' 79 : C STATEV(12) : 'GNYZ' 80 : C 81 : C Parametres externes 82 : C ------------------- 83 : C TEMP : 'T ' 84 : C PREDEF(1) : 'DFIS' 85 : C 86 : C----------------------------------------------------------------------- 87 : C Arguments de l'interface 88 : C 89 : INTEGER NTENS, NSTATV, NPROPS, 90 : & NOEL, NPT, KINC 91 : C 92 : REAL*8 STRESS(NTENS), STATEV(*), 93 : & DDSDDE(NTENS,NTENS), 94 : & STRAN(NTENS), DSTRAN(NTENS), 95 : & DTIME, 96 : & TEMP, DTEMP, PREDEF(*), DPRED(*), 97 : & PROPS(NPROPS), 98 : & COORDS(3) 99 : C 100 : C Variables locales 101 : C 102 : INTEGER NVARI 103 : PARAMETER (NVARI=6) 104 : C 105 : C Tableaux de travail 106 : C 107 : REAL*8 VAR(NVARI),VAR1(NVARI),VARP1(NVARI),VARP2(NVARI), 108 : & VAR12(NVARI),VARP3(NVARI),VARP4(NVARI),VAR13(NVARI), 109 : & SIG(8),SIG1(8),SIG12(8),SIG13(8), 110 : & DSPT(8),XX(8), 111 : & EVP1(8),EVP2(8),EVP3(8),EVP4(8), 112 : & EPSV(8),EPSV1(8),EPSV12(8),EPSV13(8) 113 : C 114 : REAL*8 EPIN0(8),DSIGT(8),VARF(NVARI),SIGF(8),EPINF(8) 115 : C 116 : C Variables scalaires 117 : C 118 : LOGICAL DTLIBR 119 : REAL*8 DT, DTLEFT, BORNE, RMAX, RMIN, DIV, FAC, 120 : & T0, TF, FI0, FIF, 121 : & YOU, XNU, AUX0, AUX, AUX1, GEGE, 122 : & XMAX, 123 : & TI0, TI1, TPOINT, DELTAT, TI12, 124 : & FII0, FII1, FPOINT, DELTAF, FII12, 125 : & VARPBU, 126 : & TAU, ASIG, ERRABS, TAU2, RA, SQRA, RA1 127 : INTEGER MSOUPA, I, J, ITERO, NSSINC, NITERA, 128 : & INPLAS, MFR1, IFOURB 129 : C 130 : REAL*8 UN, DEUX, UNDEMI 131 : PARAMETER (UN=1.D0,DEUX=2.D0,UNDEMI=.5D0) 132 : C 133 : REAL*8 PRECIS 134 : C 135 : REAL*8 PROCON 136 : EXTERNAL PROCON 137 : C 138 : C------------------- Debut du code executable -------------------------- 139 : C 140 : C======================================================================= 141 : C 1 - INITIALISATIONS 142 : C Pas de temps, parametres de pilotage des iterations internes, 143 : C parametres du modele 144 : C======================================================================= 145 : C 146 : PRECIS=1.d-8 147 : DTLIBR=.TRUE. 148 : C 149 : DT = DTIME 150 : IF (DT.LT.0.0) THEN 151 : KINC = -71 152 : RETURN 153 : ENDIF 154 : IF (DT.EQ.0.0) DT = 1.e-20 155 : C 156 : DTLEFT = DT 157 : BORNE = 2.0 158 : RMAX = 1.3 159 : RMIN = 0.7 160 : DIV = 7.0 161 : FAC = 3.0 162 : C 163 : MSOUPA = 200 164 : C 165 : INPLAS = 107 166 : MFR1 = 1 167 : IFOURB = 2 168 : C 169 : T0 = TEMP 170 : TF = T0 + DTEMP 171 : FI0 = PREDEF(1) 172 : FIF = FI0 + DPRED(1) 173 : C 174 : C======================================================================= 175 : C 2 - Prediction elastique de l'increment de contraintes 176 : C La sequence ci-dessous se substitue a l'appel a CALSIG 177 : C Le calcul des coefficients de la matrice de Hooke reprend la 178 : C sequence d'operations de HOOKIS 179 : C======================================================================= 180 : C 181 : YOU = PROPS(1) 182 : XNU = PROPS(2) 183 : C 184 : AUX0 = UN/((UN+XNU)*(UN-DEUX*XNU)) 185 : AUX = YOU*AUX0*(UN-XNU) 186 : AUX1 = YOU*AUX0*XNU 187 : GEGE = YOU*UNDEMI/(UN+XNU) 188 : C 189 : DO 10 J=1,NTENS 190 : DO 11 I=1,NTENS 191 : DDSDDE(I,J)=0.0D0 192 : 11 CONTINUE 193 : 10 CONTINUE 194 : C 195 : DDSDDE(1,1) = AUX 196 : DDSDDE(1,2) = AUX1 197 : DDSDDE(1,3) = AUX1 198 : C 199 : DDSDDE(2,1) = AUX1 200 : DDSDDE(2,2) = AUX 201 : DDSDDE(2,3) = AUX1 202 : C 203 : DDSDDE(3,1) = AUX1 204 : DDSDDE(3,2) = AUX1 205 : DDSDDE(3,3) = AUX 206 : C 207 : DDSDDE(4,4) = GEGE 208 : DDSDDE(5,5) = GEGE 209 : DDSDDE(6,6) = GEGE 210 : C 211 : DO 20 I=1,NTENS 212 : DSIGT(I)=0.0D0 213 : 20 CONTINUE 214 : DO 21 J=1,NTENS 215 : DO 22 I=1,NTENS 216 : DSIGT(I)=DSIGT(I)+DDSDDE(I,J)*DSTRAN(J) 217 : 22 CONTINUE 218 : 21 CONTINUE 219 : C 220 : C======================================================================= 221 : C 3 - Pre-traitement des deformations inelastiques au debut du pas 222 : C Passage gamma -> epsilon pour les termes extradiagonaux 223 : C======================================================================= 224 : C 225 : DO 34 J=1,3 226 : EPIN0(J)=STATEV(NVARI+J) 227 : 34 CONTINUE 228 : DO 35 J=4,6 229 : EPIN0(J)=0.5D0*STATEV(NVARI+J) 230 : 35 CONTINUE 231 : C 232 : C======================================================================= 233 : C 4 - AFFECTATION DE XMAX 234 : C======================================================================= 235 : C 236 : XMAX=PROPS(1)*1.D-3 237 : C 238 : C======================================================================= 239 : C 5 - INITIALISATIONS AVANT ITERATIONS EN SOUS-INCREMENTS 240 : C======================================================================= 241 : C 242 : ITERO = 0 243 : 6543 CONTINUE 244 : C 245 : ITERO = 1 + ITERO 246 : IF ( ITERO.NE.1) THEN 247 : DTLIBR = .TRUE. 248 : PRECIS = PRECIS * 7.D0 249 : IF (ITERO.GT.3) THEN 250 : KINC = -72 251 : RETURN 252 : ENDIF 253 : ENDIF 254 : C 255 : DTLEFT = DT 256 : TAU = DTLEFT 257 : TI0=T0 258 : TI1=TF 259 : TPOINT=(TF-T0)/DT 260 : FII0=FI0 261 : FII1=FIF 262 : FPOINT=(FIF-FI0)/DT 263 : ASIG = SQRT(PROCON(STRESS,STRESS,NTENS)) 264 : ERRABS = PRECIS*ASIG 265 : IF (XMAX.GT.ASIG) ERRABS = PRECIS*XMAX 266 : C 267 : DO 40 I=1,NTENS 268 : SIG(I) = STRESS(I) 269 : EPSV(I) = EPIN0(I) 270 : DSPT(I) = DSIGT(I)/DT 271 : 40 CONTINUE 272 : C 273 : DO 50 I=1,NVARI 274 : VAR(I)=STATEV(I) 275 : 50 CONTINUE 276 : C 277 : C======================================================================= 278 : C 6 - ITERATIONS EN SSINCREMENTS /FIN SI DTLEFT = 0 279 : C======================================================================= 280 : C 281 : NSSINC = 0 282 : NITERA = 0 283 : 60 CONTINUE 284 : C 285 : NSSINC = NSSINC + 1 286 : IF (NSSINC.GT.MSOUPA) THEN 287 : DTLIBR=.FALSE. 288 : GOTO 6543 289 : ENDIF 290 : C 291 : DELTAT=TPOINT*TAU 292 : TI1=TI0+DELTAT 293 : DELTAF=FPOINT*TAU 294 : FII1=FII0+DELTAF 294 : CALL INCRE1(TAU,SIG,EPSV,VAR,EVP1,VARP1,PROPS,NTENS,NVARI, 295 : & INPLAS,NPROPS,MFR1,FII0,FII1,TI1) 296 : C 297 : C --------------------------------------------------------------- 298 : C DEBUT DES ITERATIONS SUR TAU OPTIMAL /FIN SI RA PETIT 299 : C 300 : NITERA = 0 301 : 70 CONTINUE 302 : C 303 : NITERA = NITERA + 1 304 : C 305 : C ____________________________________________________________ 306 : TAU2=TAU*0.5D0 306 : CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP1, 307 : & VARP1,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 308 : C 309 : C ____________________________________________________________ 310 : DELTAT=TPOINT*TAU 311 : TI1=TI0+DELTAT 312 : DELTAF=FPOINT*TAU 313 : FII1=FII0+DELTAF 314 : VAR1(3)=VAR(3) 314 : CALL INCRE1(TAU,SIG1,EPSV1,VAR1,EVP2,VARP2,PROPS,NTENS, 315 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII1,TI1) 316 : DO 701 I=1,NTENS 317 : EVP2(I) = 0.5D0*(EVP1(I)+EVP2(I)) 318 : 701 CONTINUE 319 : VARPBU=VARP2(3) 320 : DO 702 I=1,NVARI 321 : VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I)) 322 : 702 CONTINUE 323 : C 324 : C ____________________________________________________________ 325 : DELTAT=TPOINT*TAU2 326 : TI12=TI0+DELTAT 327 : DELTAF=FPOINT*TAU2 328 : FII12=FII0+DELTAF 328 : CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG12,EPSV12,VAR12,DSPT,EVP2, 329 : & VARP2,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 330 : VAR12(3)=VAR(3) 330 : CALL INCRE1(TAU2,SIG12,EPSV12,VAR12,EVP3,VARP3,PROPS,NTENS, 331 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12) 332 : C 333 : C ____________________________________________________________ 334 : TI1=TI12+DELTAT 335 : FII1=FII12+DELTAF 335 : CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIG13,EPSV13,VAR13,DSPT, 336 : & EVP3,VARP3,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 336 : CALL INCRE1(TAU2,SIG13,EPSV13,VAR13,EVP4,VARP4,PROPS,NTENS, 337 : & NVARI,INPLAS,NPROPS,MFR1,FII12,FII1,TI1) 338 : DO 711 I=1,NTENS 339 : EVP4(I) = 0.5D0*(EVP3(I)+EVP4(I)) 340 : 711 CONTINUE 341 : DO 712 I=1,NVARI 342 : VARP4(I)= 0.5D0*(VARP3(I) + VARP4(I)) 343 : 712 CONTINUE 343 : CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIGF,EPINF,VARF,DSPT, 344 : & EVP4,VARP4,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 345 : C 346 : C ____________________________________________________________ 347 : DELTAT=TPOINT*TAU2 348 : TI12=TI0+DELTAT 349 : DELTAF=FPOINT*TAU2 350 : FII12=FII0+DELTAF 351 : VARF(3)=VAR(3) 351 : CALL INCRE1(TAU2,SIGF,EPINF,VARF,EVP4,VARP4,PROPS,NTENS, 352 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12) 353 : DO 721 I=1,NTENS 354 : EVP2(I) = (EVP1(I)+EVP4(I))/6.D0+EVP3(I)*2.D0/3.D0 355 : 721 CONTINUE 356 : DO 722 I=1,NVARI 357 : VARP2(I)=(VARP1(I) + VARP4(I))/6.D0+VARP3(I)*2.D0/3.D0 358 : 722 CONTINUE 359 : VARP2(3)=VARPBU 359 : CALL ADVAN1(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP2, 360 : & VARP2,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 361 : VARF(3)=VAR1(3) 362 : C 363 : C ____________________________________________________________ 364 : C CALCUL DU RAPPORT : ERREUR CALCULEE / ERREUR ADMISE 365 : C 366 : DO 730 I=1,NTENS 367 : XX(I) = SIGF(I)-SIG1(I) 368 : 730 CONTINUE 369 : RA = SQRT(PROCON(XX,XX,NTENS))/(ERRABS) 370 : SQRA = SQRT(RA) 371 : C 372 : C ____________________________________________________________ 373 : C TEST DE FIN D'ITERATIONS / MISE A JOUR DE TAU 374 : C DIV =7 BORNE = 2 375 : C SI SQRA>7 TAU = TAU/7 ET NOUVEL ESSAI 376 : C SI 2RMAX on vise RA = 1 415 : C Fin des boucles en ss increments si tau = DTLEFT 416 : C 417 : IF ( TAU.LT.DTLEFT ) THEN 418 : DTLEFT = DTLEFT - TAU 419 : IF ( FAC*SQRA.LT.1.D0) THEN 420 : TAU=TAU*FAC 421 : ELSE IF ( (SQRA.LT.RMIN).OR.(SQRA.GT.RMAX) ) THEN 422 : TAU=TAU/SQRA 423 : ENDIF 424 : IF (TAU.GT.DTLEFT) TAU = DTLEFT 425 : TI0=TI1 426 : DELTAT=TPOINT*TAU 427 : TI1=TI0+DELTAT 428 : FII0=FII1 429 : DELTAF=FPOINT*TAU 430 : FII1=FII0+DELTAF 431 : GOTO 60 432 : ENDIF 433 : C 434 : IF (ABS(TAU-DTLEFT).GT.(TAU/1000.)) THEN 435 : KINC = -73 436 : RETURN 437 : ENDIF 438 : C 439 : C======================================================================= 440 : C 7 - STOCKAGE DES RESULTATS AVANT SORTIE 441 : C======================================================================= 442 : C 443 : C Contraintes 444 : C 445 : DO 100 J=1,NTENS 446 : STRESS(J)=SIGF(J) 447 : 100 CONTINUE 448 : C 449 : C Variables internes 450 : C 451 : DO 110 J=1,NVARI 452 : STATEV(J)=VARF(J) 453 : 110 CONTINUE 454 : C 455 : C Deformations inelastiques 456 : C Passage epsilon -> gamma pour les termes extradiagonaux 457 : C 458 : DO 120 J=1,3 459 : STATEV(NVARI+J)=EPINF(J) 460 : 120 CONTINUE 461 : DO 121 J=4,6 462 : STATEV(NVARI+J)=2.0D0*EPINF(J) 463 : 121 CONTINUE 464 : C 465 : RETURN 466 : END 467 :
© Cast3M 2003 - All rights reserved.
Disclaimer