Download umapo2.eso

Back to the list

   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