Download umagat.eso

Back to the list

   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