1 : C UMAPOL SOURCE CHAT 06/07/13 21:16:14 5488 2 : SUBROUTINE UMAPOL ( 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 = 21 : Modele 'FLUAGE' 'POLYNOMIAL' de CAST3M, INPLAS=21 19 : C RESTRICTION A LA FORMULATION MASSIVE 20 : C 21 : C Composantes de materiau 22 : C ----------------------- 23 : C PROPS ( 1) : 'YOUN' PROPS ( 5) : 'SMAX' 24 : C PROPS ( 2) : 'NU ' PROPS ( 6) : 'AF0 ' 25 : C PROPS ( 3) : 'RHO ' PROPS ( 7) : 'AF1 ' 26 : C PROPS ( 4) : 'ALPH' PROPS ( 8) : 'AF2 ' 27 : C PROPS ( 9) : 'AF3 ' 28 : C PROPS (10) : 'AF4 ' 29 : C PROPS (11) : 'AF5 ' 30 : C PROPS (12) : 'AF6 ' 31 : C Variables internes 32 : C ------------------ 33 : C STATEV( 1) : 'PXX ' STATEV(17) : 'ENXX' 34 : C STATEV( 2) : 'PYY ' STATEV(18) : 'ENYY' 35 : C STATEV( 3) : 'PZZ ' STATEV(19) : 'ENZZ' 36 : C STATEV( 4) : 'PXY ' STATEV(20) : 'GNXY' 37 : C STATEV( 5) : 'PYZ ' STATEV(21) : 'GNXZ' 38 : C STATEV( 6) : 'PZX ' STATEV(22) : 'GNYZ' 39 : C STATEV( 7) : 'VNXX' 40 : C STATEV( 8) : 'VNYY' 41 : C STATEV( 9) : 'VNZZ' 42 : C STATEV(10) : 'VNXY' 43 : C STATEV(11) : 'VNYZ' 44 : C STATEV(12) : 'VNZX' 45 : C STATEV(13) : 'EPCE' 46 : C STATEV(14) : 'EPSH' 47 : C STATEV(15) : 'LL ' 48 : C STATEV(16) : 'EPSE' 49 : C 50 : C----------------------------------------------------------------------- 51 : C Arguments de l'interface 52 : C 53 : INTEGER NTENS, NSTATV, NPROPS, 54 : & NOEL, NPT, KINC 55 : C 56 : REAL*8 STRESS(NTENS), STATEV(*), 57 : & DDSDDE(NTENS,NTENS), 58 : & STRAN(NTENS), DSTRAN(NTENS), 59 : & DTIME, 60 : & TEMP, DTEMP, PREDEF(*), DPRED(*), 61 : & PROPS(NPROPS), 62 : & COORDS(3) 63 : C 64 : C Variables locales 65 : C 66 : INTEGER NVARI 67 : PARAMETER (NVARI=16) 68 : C 69 : C Tableaux de travail 70 : C 71 : REAL*8 VAR(NVARI),VAR1(NVARI),VARP1(NVARI),VARP2(NVARI), 72 : & VAR12(NVARI),VARP3(NVARI),VARP4(NVARI),VAR13(NVARI), 73 : & SIG(8),SIG1(8),SIG12(8),SIG13(8), 74 : & DSPT(8),XX(8), 75 : & EVP1(8),EVP2(8),EVP3(8),EVP4(8), 76 : & EPSV(8),EPSV1(8),EPSV12(8),EPSV13(8) 77 : C 78 : REAL*8 EPIN0(8),DSIGT(8),VARF(NVARI),SIGF(8),EPINF(8) 79 : C 80 : C Variables scalaires 81 : C 82 : LOGICAL DTLIBR 83 : REAL*8 DT, DTLEFT, BORNE, RMAX, RMIN, DIV, FAC, 84 : & YOU, XNU, AUX0, AUX, AUX1, GEGE, 85 : & XMAX, 86 : CCCCC& TI0, TI1, TPOINT, DELTAT, TI12, FII0, FII1, FII12, 87 : & TI1, TI12, FII0, FII1, FII12, 88 : & TAU, ASIG, ERRABS, TAU2, RA, SQRA, RA1 89 : INTEGER MSOUPA, I, J, ITERO, NSSINC, NITERA, 90 : & INPLAS, MFR1, IFOURB 91 : C 92 : REAL*8 UN, DEUX, UNDEMI 93 : PARAMETER (UN=1.D0,DEUX=2.D0,UNDEMI=.5D0) 94 : C 95 : REAL*8 PRECIS 96 : C 97 : REAL*8 PROCON 98 : EXTERNAL PROCON 99 : C 100 : C------------------- Debut du code executable -------------------------- 101 : C 102 : C======================================================================= 103 : C 1 - INITIALISATIONS 104 : C Pas de temps et parametres de pilotage des iterations internes 105 : C======================================================================= 106 : C 107 : PRECIS=1.d-8 108 : DTLIBR=.TRUE. 109 : C 110 : DT = DTIME 111 : IF (DT.LT.0.0) THEN 112 : KINC = -211 113 : RETURN 114 : ENDIF 115 : IF (DT.EQ.0.0) DT = 1.e-20 116 : C 117 : DTLEFT = DT 118 : BORNE = 2.0 119 : RMAX = 1.3 120 : RMIN = 0.7 121 : DIV = 7.0 122 : FAC = 3.0 123 : C 124 : MSOUPA = 200 125 : C 126 : INPLAS = 21 127 : MFR1 = 1 128 : IFOURB = 2 129 : FII0 = 0.0D0 130 : FII1 = 0.0D0 131 : FII12 = 0.0D0 132 : TI1 = 0.0D0 133 : TI12 = 0.0D0 134 : C 135 : C======================================================================= 136 : C 2 - Prediction elastique de l'increment de contraintes 137 : C La sequence ci-dessous se substitue a l'appel a CALSIG 138 : C Le calcul des coefficients de la matrice de Hooke reprend la 139 : C sequence d'operations de HOOKIS 140 : C======================================================================= 141 : C 142 : YOU = PROPS(1) 143 : XNU = PROPS(2) 144 : C 145 : AUX0 = UN/((UN+XNU)*(UN-DEUX*XNU)) 146 : AUX = YOU*AUX0*(UN-XNU) 147 : AUX1 = YOU*AUX0*XNU 148 : GEGE = YOU*UNDEMI/(UN+XNU) 149 : C 150 : DO 10 J=1,NTENS 151 : DO 11 I=1,NTENS 152 : DDSDDE(I,J)=0.0D0 153 : 11 CONTINUE 154 : 10 CONTINUE 155 : C 156 : DDSDDE(1,1) = AUX 157 : DDSDDE(1,2) = AUX1 158 : DDSDDE(1,3) = AUX1 159 : C 160 : DDSDDE(2,1) = AUX1 161 : DDSDDE(2,2) = AUX 162 : DDSDDE(2,3) = AUX1 163 : C 164 : DDSDDE(3,1) = AUX1 165 : DDSDDE(3,2) = AUX1 166 : DDSDDE(3,3) = AUX 167 : C 168 : DDSDDE(4,4) = GEGE 169 : DDSDDE(5,5) = GEGE 170 : DDSDDE(6,6) = GEGE 171 : C 172 : DO 20 I=1,NTENS 173 : DSIGT(I)=0.0D0 174 : 20 CONTINUE 175 : DO 21 J=1,NTENS 176 : DO 22 I=1,NTENS 177 : DSIGT(I)=DSIGT(I)+DDSDDE(I,J)*DSTRAN(J) 178 : 22 CONTINUE 179 : 21 CONTINUE 180 : C 181 : C======================================================================= 182 : C 3 - Pre-traitement des deformations inelastiques au debut du pas 183 : C Passage gamma -> epsilon pour les termes extradiagonaux 184 : C======================================================================= 185 : C 186 : DO 34 J=1,3 187 : EPIN0(J)=STATEV(NVARI+J) 188 : 34 CONTINUE 189 : DO 35 J=4,6 190 : EPIN0(J)=0.5D0*STATEV(NVARI+J) 191 : 35 CONTINUE 192 : C 193 : C======================================================================= 194 : C 4 - TEST SUR XMAX MILL 8/3/91 195 : C======================================================================= 196 : C 197 : XMAX=PROPS(5) 198 : IF (XMAX.EQ.0.D0) XMAX=PROPS(1)*1.D-3 199 : C 200 : C======================================================================= 201 : C 5 - INITIALISATIONS AVANT ITERATIONS EN SOUS-INCREMENTS 202 : C======================================================================= 203 : C 204 : ITERO = 0 205 : 6543 CONTINUE 206 : C 207 : ITERO = 1 + ITERO 208 : IF ( ITERO.NE.1) THEN 209 : DTLIBR = .TRUE. 210 : PRECIS = PRECIS * 7.D0 211 : IF (ITERO.GT.3) THEN 212 : KINC = -212 213 : RETURN 214 : ENDIF 215 : ENDIF 216 : C 217 : DTLEFT = DT 218 : TAU = DTLEFT 219 : CCCCC TI0=TEMP 220 : CCCCC TI1=TEMP+DTEMP 221 : CCCCC TPOINT=DTEMP/DT 222 : ASIG = SQRT(PROCON(STRESS,STRESS,NTENS)) 223 : ERRABS = PRECIS*ASIG 224 : IF (XMAX.GT.ASIG) ERRABS = PRECIS*XMAX 225 : C 226 : DO 40 I=1,NTENS 227 : SIG(I) = STRESS(I) 228 : EPSV(I) = EPIN0(I) 229 : DSPT(I) = DSIGT(I)/DT 230 : 40 CONTINUE 231 : C 232 : DO 50 I=1,NVARI 233 : VAR(I)=STATEV(I) 234 : 50 CONTINUE 235 : C 236 : C======================================================================= 237 : C 6 - ITERATIONS EN SSINCREMENTS /FIN SI DTLEFT = 0 238 : C======================================================================= 239 : C 240 : NSSINC = 0 241 : NITERA = 0 242 : 60 CONTINUE 243 : C 244 : NSSINC = NSSINC + 1 245 : IF (NSSINC.GT.MSOUPA) THEN 246 : DTLIBR=.FALSE. 247 : GOTO 6543 248 : ENDIF 249 : C 250 : CCCCC DELTAT=TPOINT*TAU 251 : CCCCC TI1=TI0+DELTAT 251 : CALL INCRE1(TAU,SIG,EPSV,VAR,EVP1,VARP1,PROPS,NTENS,NVARI, 252 : & INPLAS,NPROPS,MFR1,FII0,FII1,TI1) 253 : C 254 : C --------------------------------------------------------------- 255 : C DEBUT DES ITERATIONS SUR TAU OPTIMAL /FIN SI RA PETIT 256 : C 257 : NITERA = 0 258 : 70 CONTINUE 259 : C 260 : NITERA = NITERA + 1 261 : C 262 : C ____________________________________________________________ 263 : TAU2=TAU*0.5D0 263 : CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP1, 264 : & VARP1,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 265 : C 266 : C ____________________________________________________________ 267 : CCCCC DELTAT=TPOINT*TAU 268 : CCCCC TI1=TI0+DELTAT 268 : CALL INCRE1(TAU,SIG1,EPSV1,VAR1,EVP2,VARP2,PROPS,NTENS, 269 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII1,TI1) 270 : DO 701 I=1,NTENS 271 : EVP2(I) = 0.5D0*(EVP1(I)+EVP2(I)) 272 : 701 CONTINUE 273 : DO 702 I=1,2*NTENS+2 274 : VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I)) 275 : 702 CONTINUE 276 : DO 703 I=2*NTENS+4,NVARI 277 : VARP2(I)= 0.5D0*(VARP1(I) + VARP2(I)) 278 : 703 CONTINUE 279 : C 280 : C ____________________________________________________________ 281 : CCCCC DELTAT=TPOINT*TAU2 282 : CCCCC TI12=TI0+DELTAT 282 : CALL ADVAN1(TAU2,SIG,EPSV,VAR,SIG12,EPSV12,VAR12,DSPT,EVP2, 283 : & VARP2,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 283 : CALL INCRE1(TAU2,SIG12,EPSV12,VAR12,EVP3,VARP3,PROPS,NTENS, 284 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12) 285 : C 286 : C ____________________________________________________________ 287 : CCCCC TI1=TI12+DELTAT 287 : CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIG13,EPSV13,VAR13,DSPT, 288 : & EVP3,VARP3,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 288 : CALL INCRE1(TAU2,SIG13,EPSV13,VAR13,EVP4,VARP4,PROPS,NTENS, 289 : & NVARI,INPLAS,NPROPS,MFR1,FII12,FII1,TI1) 290 : DO 711 I=1,NTENS 291 : EVP4(I) = 0.5D0*(EVP3(I)+EVP4(I)) 292 : 711 CONTINUE 293 : DO 712 I=1,2*NTENS+2 294 : VARP4(I)= 0.5D0*(VARP3(I) + VARP4(I)) 295 : 712 CONTINUE 296 : DO 713 I=2*NTENS+4,NVARI 297 : VARP4(I)= 0.5D0*(VARP3(I) + VARP4(I)) 298 : 713 CONTINUE 298 : CALL ADVAN1(TAU2,SIG12,EPSV12,VAR12,SIGF,EPINF,VARF,DSPT, 299 : & EVP4,VARP4,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 300 : C 301 : C ____________________________________________________________ 302 : CCCCC DELTAT=TPOINT*TAU2 303 : CCCCC TI12=TI0+DELTAT 303 : CALL INCRE1(TAU2,SIGF,EPINF,VARF,EVP4,VARP4,PROPS,NTENS, 304 : & NVARI,INPLAS,NPROPS,MFR1,FII0,FII12,TI12) 305 : DO 721 I=1,NTENS 306 : EVP2(I) = (EVP1(I)+EVP4(I))/6.D0+EVP3(I)*2.D0/3.D0 307 : 721 CONTINUE 308 : DO 722 I=1,2*NTENS+2 309 : VARP2(I)=(VARP1(I) + VARP4(I))/6.D0+VARP3(I)*2.D0/3.D0 310 : 722 CONTINUE 311 : DO 723 I=2*NTENS+4,NVARI 312 : VARP2(I)= (VARP1(I) + VARP4(I))/6.D0+VARP3(I)*2.D0/3.D0 313 : 723 CONTINUE 313 : CALL ADVAN1(TAU,SIG,EPSV,VAR,SIG1,EPSV1,VAR1,DSPT,EVP2, 314 : & VARP2,PROPS,NTENS,NVARI,IFOURB,INPLAS,MFR1) 315 : C 316 : C ____________________________________________________________ 317 : C CALCUL DU RAPPORT : ERREUR CALCULEE / ERREUR ADMISE 318 : C 319 : DO 730 I=1,NTENS 320 : XX(I) = SIGF(I)-SIG1(I) 321 : 730 CONTINUE 322 : RA = SQRT(PROCON(XX,XX,NTENS))/(ERRABS) 323 : SQRA = SQRT(RA) 324 : C 325 : C ____________________________________________________________ 326 : C TEST DE FIN D'ITERATIONS / MISE A JOUR DE TAU 327 : C DIV =7 BORNE = 2 328 : C SI SQRA>7 TAU = TAU/7 ET NOUVEL ESSAI 329 : C SI 2RMAX on vise RA = 1 368 : C Fin des boucles en ss increments si tau = DTLEFT 369 : C 370 : IF ( TAU.LT.DTLEFT ) THEN 371 : DTLEFT = DTLEFT - TAU 372 : IF ( FAC*SQRA.LT.1.D0) THEN 373 : TAU=TAU*FAC 374 : ELSE IF ( (SQRA.LT.RMIN).OR.(SQRA.GT.RMAX) ) THEN 375 : TAU=TAU/SQRA 376 : ENDIF 377 : IF (TAU.GT.DTLEFT) TAU = DTLEFT 378 : CCCCC TI0=TI1 379 : CCCCC DELTAT=TPOINT*TAU 380 : CCCCC TI1=TI0+DELTAT 381 : GOTO 60 382 : ENDIF 383 : C 384 : IF (ABS(TAU-DTLEFT).GT.(TAU/1000.)) THEN 385 : KINC = -213 386 : RETURN 387 : ENDIF 388 : C 389 : C======================================================================= 390 : C 7 - STOCKAGE DES RESULTATS AVANT SORTIE 391 : C======================================================================= 392 : C 393 : C Contraintes 394 : C 395 : DO 100 J=1,NTENS 396 : STRESS(J)=SIGF(J) 397 : 100 CONTINUE 398 : C 399 : C Variables internes 400 : C 401 : DO 110 J=1,NVARI 402 : STATEV(J)=VARF(J) 403 : 110 CONTINUE 404 : C 405 : C Deformations inelastiques 406 : C Passage epsilon -> gamma pour les termes extradiagonaux 407 : C 408 : DO 120 J=1,3 409 : STATEV(NVARI+J)=EPINF(J) 410 : 120 CONTINUE 411 : DO 121 J=4,6 412 : STATEV(NVARI+J)=2.0D0*EPINF(J) 413 : 121 CONTINUE 414 : C 415 : RETURN 416 : END 417 : 418 : 419 : 420 : 421 :
© Cast3M 2003 - All rights reserved.
Disclaimer