Download umapli.eso

Back to the list

   1 : C UMAPLI    SOURCE    CHAT      05/01/13    03:58:05     5004           
   2 :       SUBROUTINE UMAPLI ( 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 =  5 : Modele 'PLASTIQUE' 'ISOTROPE' de CAST3M, INPLAS=5
  19 : C                 RESTRICTION A LA FORMULATION MASSIVE
  20 : C
  21 : C     Composantes de materiau
  22 : C     -----------------------
  23 : C     PROPS ( 1) : 'YOUN'
  24 : C     PROPS ( 2) : 'NU  '
  25 : C
  26 : C     Courbe de traction : pour 1 =< I =< LTRAC
  27 : C
  28 : C     PROPS ( 2+2*I-1) : 'Eiii'   iii formatage I3 de la valeur de I
  29 : C     PROPS ( 2+2*I  ) : 'Siii'
  30 : C
  31 : C     Variables internes
  32 : C     ------------------
  33 : C     STATEV( 1) : 'EPSE'
  34 : C
  35 : C     STATEV( 2) : 'ENXX'
  36 : C     STATEV( 3) : 'ENYY'
  37 : C     STATEV( 4) : 'ENZZ'
  38 : C     STATEV( 5) : 'GNXY'
  39 : C     STATEV( 6) : 'GNXZ'
  40 : C     STATEV( 7) : 'GNYZ'
  41 : C
  42 : C-----------------------------------------------------------------------
  43 : C     Arguments de l'interface
  44 : C
  45 :       INTEGER       NTENS, NSTATV, NPROPS,
  46 :      &              NOEL, NPT, KINC
  47 : C
  48 :       REAL*8        STRESS(NTENS), STATEV(*),
  49 :      &              DDSDDE(NTENS,NTENS),
  50 :      &              STRAN(NTENS), DSTRAN(NTENS),
  51 :      &              DTIME,
  52 :      &              TEMP, DTEMP, PREDEF(*), DPRED(*),
  53 :      &              PROPS(NPROPS),
  54 :      &              COORDS(3)
  55 : C
  56 : C     Variables locales
  57 : C
  58 : C     Tableaux de travail
  59 : C
  60 :       REAL*8     SIG(130), EPS(130)
  61 :       REAL*8     S(8), SX(8), DS(8), DSIG(8), SPHER1(8), DSPHER1(8),
  62 :      &           DDEPSE(8), F(8), W1(8), W2(8), SIGB(8), Z1(8)
  63 : C
  64 :       REAL*8     TRAC(260), DSIGT(8), WORK(1)
  65 : C
  66 : C     Variables scalaires
  67 : C
  68 :       INTEGER    MFR1, IFOURB, I, J, LTRAC, IBI, NITER, ITRY
  69 : C
  70 :       REAL*8     YUNG, XNU, ALFAH, EP1, EPST, AUX0, AUX, AUX1, GEGE,
  71 :      &           SI, SEQ, PHI, PETI, PHI0, SI0, RR,
  72 :      &           COEF, PENTE, RP, C, DENOM, DELTA, DMU, DP, DR,
  73 :      &           APHI, APHI0, TEST
  74 : C
  75 :       REAL*8     UN, DEUX, UNDEMI
  76 :       PARAMETER (UN=1.D0,DEUX=2.D0,UNDEMI=.5D0)
  77 : C
  78 :       REAL*8     PRECIS
  79 :       DATA       PRECIS/1.e-8/
  80 : C
  81 :       REAL*8     VONMIS0
  82 :       EXTERNAL   VONMIS0
  83 : C
  84 : C------------------- Debut du code executable --------------------------
  85 : C
  86 : C=======================================================================
  87 : C 1 - INITIALISATIONS
  88 : C=======================================================================
  89 : C
  90 : C     Indicateurs de modelisation pour les dependances issues de CAST3M
  91 : C     + constantes geometriques (initialisations arbitraires)
  92 : C
  93 :       MFR1   = 1
  94 :       IFOURB = 2
  95 : C
  96 :       ALFAH=1.D0
  97 :       EP1=0.D0
  98 : C
  99 : C     Tableaux de travail
 100 : C
 101 :       DO 100 I=1,NTENS
 102 :          S(I)=0.D0
 103 :          SPHER1(I)=0.D0
 104 :  100  CONTINUE
 105 : C
 106 : C     Recuperation des constantes de materiau
 107 : C
 108 :       YUNG=PROPS(1)
 109 :       XNU=PROPS(2)
 110 : C
 111 : C     Recuperation de la courbe de traction
 112 : C
 112 :       CALL CRBTRA(PROPS,NPROPS,TRAC,LTRAC,KINC)
 113 :       IF (KINC.LT.0) RETURN
 114 :       DO 101 I=1,LTRAC
 115 :          SIG(I)=TRAC(2*I-1)
 116 :          EPS(I)=TRAC(2*I)
 117 :  101  CONTINUE
 118 : C
 119 : C     Recuperation des variables internes (deformations plastiques)
 120 : C
 121 :       EPST=STATEV(1)
 122 : C
 123 : C=======================================================================
 124 : C 2 - Prediction elastique des contraintes
 125 : C     Calcul de l'increment de contraintes conforme a CALSIG
 126 : C     Calcul des coefficients de la matrice de Hooke conforme a HOOKIS
 127 : C=======================================================================
 128 : C
 129 :       AUX0 = UN/((UN+XNU)*(UN-DEUX*XNU))
 130 :       AUX  = YUNG*AUX0*(UN-XNU)
 131 :       AUX1 = YUNG*AUX0*XNU
 132 :       GEGE = YUNG*UNDEMI/(UN+XNU)
 133 : C
 134 :       DO 200 J=1,NTENS
 135 :          DO 201 I=1,NTENS
 136 :             DDSDDE(I,J)=0.0D0
 137 :  201     CONTINUE
 138 :  200  CONTINUE
 139 : C
 140 :       DDSDDE(1,1) = AUX
 141 :       DDSDDE(1,2) = AUX1
 142 :       DDSDDE(1,3) = AUX1
 143 : C
 144 :       DDSDDE(2,1) = AUX1
 145 :       DDSDDE(2,2) = AUX
 146 :       DDSDDE(2,3) = AUX1
 147 : C
 148 :       DDSDDE(3,1) = AUX1
 149 :       DDSDDE(3,2) = AUX1
 150 :       DDSDDE(3,3) = AUX
 151 : C
 152 :       DDSDDE(4,4) = GEGE
 153 :       DDSDDE(5,5) = GEGE
 154 :       DDSDDE(6,6) = GEGE
 155 : C
 156 :       DO 210 I=1,NTENS
 157 :          DSIGT(I)=0.0D0
 158 :  210  CONTINUE
 159 :       DO 211 J=1,NTENS
 160 :          DO 212 I=1,NTENS
 161 :             DSIGT(I)=DSIGT(I)+DDSDDE(I,J)*DSTRAN(J)
 162 :  212     CONTINUE
 163 :  211  CONTINUE
 164 : C
 165 :       DO 220 I=1,NTENS
 166 :          S(I)=STRESS(I)+DSIGT(I)
 167 :          SIGB(I)=S(I)
 168 :          SX(I)=S(I)-SPHER1(I)
 169 :  220  CONTINUE
 170 : C
 171 : C=======================================================================
 172 : C 3 - Calcul de la limite elastique SI
 173 : C=======================================================================
 174 : C
 174 :       CALL TRACTI(SI,EPST,SIG,EPS,LTRAC,2,IBI)
 175 :       IF (IBI.EQ.1) THEN
 176 :          KINC = -511
 177 :          RETURN
 178 :       ENDIF
 179 : C
 180 : C=======================================================================
 181 : C 4 - Calcul de la contrainte equivalente SEQ
 182 : C=======================================================================
 183 : C
 184 :       SEQ=VONMIS0(SX,NTENS,MFR1,IFOURB,EP1,ALFAH)
 185 : C
 186 : C=======================================================================
 187 : C 5 - Verification du critere de plasticite
 188 : C     Demarrage des iterations internes le cas echeant
 189 : C=======================================================================
 190 : C
 191 :       PHI=SEQ-SI
 192 :       NITER=0
 193 :       PETI=1.1D0*0.5D0*PRECIS*SEQ
 193 :       CALL EPSPRE(SEQ,SI,PETI,ITRY)
 194 : C
 195 : C     SI ON NE PLASTIFIE PAS avec la prediction elastique => ON SORT
 196 : C     L'etat de contraintes est determine par la prediction elastique
 197 : C     Les variables internes (deformations plastiques) sont inchangees
 198 : C
 199 :       IF ( (ITRY.EQ.1).OR.(SEQ.LE.SI) ) THEN
 200 :          DO 500 I=1,NTENS
 201 :             STRESS(I)=S(I)
 202 :  500     CONTINUE
 203 :          RETURN
 204 :       ENDIF
 205 : C
 206 : C     SINON : ON PLASTIFIE DONC DEMARRAGE DES ITERATIONS INTERNES
 207 : C
 208 : C     Initialisations complementaires
 209 : C
 210 :       PHI0=PHI
 211 :       SI0=SI
 212 :       RR=0.D0
 213 : C
 214 :       DO 510 I=1,NTENS
 215 :          DSIG(I)=0.D0
 216 :          DSPHER1(I)=0.D0
 217 :  510  CONTINUE
 218 : C
 219 : C        _______________________________________________________________
 220 : C        Demarrage des iterations internes (bloc REPETER)
 221 : C
 222 :   10     NITER=NITER+1
 223 : C
 224 : C        Calcul de W1=DF/D(SIGMA)
 225 : C
 226 :          F(1)=(2.D0*SX(1)-SX(2)-SX(3))/3.D0
 227 :          F(2)=(2.D0*SX(2)-SX(1)-SX(3))/3.D0
 228 :          F(3)=(2.D0*SX(3)-SX(1)-SX(2))/3.D0
 229 :          DO 1010 I=4,NTENS
 230 :             F(I)=SX(I)
 231 : 1010     CONTINUE
 232 :          DO 1011 I=1,3
 233 :             W1(I)=1.5D0*F(I)/SEQ
 234 :             Z1(I)=W1(I)
 235 : 1011     CONTINUE
 236 :          DO 1012 I=4,NTENS
 237 :             W1(I)=3.D0*F(I)/SEQ
 238 :             Z1(I)=1.5D0*F(I)/SEQ
 239 : 1012     CONTINUE
 240 : C
 241 :          DO 1020 I=1,NTENS
 242 :             W2(I)=0.D0
 243 :             DO 1021 J=1,NTENS
 244 :                W2(I)=W2(I)+DDSDDE(I,J)*W1(J)
 245 : 1021        CONTINUE
 246 : 1020     CONTINUE
 247 : C
 248 :          COEF=0.D0
 249 :          DO 1030 I=1,NTENS
 250 :             COEF=COEF+W1(I)*W2(I)
 251 : 1030     CONTINUE
 252 : C
 252 :          CALL TRACTI(PENTE,EPST,SIG,EPS,LTRAC,1,IBI)
 253 :          IF (IBI.EQ.1) THEN
 254 :             KINC = -512
 255 :             RETURN
 256 :          ENDIF
 257 : C
 258 :          RP=PENTE
 259 :          C=0.D0
 260 :          DENOM=COEF+C+RP
 261 :          DELTA=PHI/DENOM
 262 :          DMU=C*DELTA/SEQ
 263 : C
 264 :          DO 1040 I=1,NTENS
 265 :             DSIG(I)=-DELTA*W2(I)
 266 :             DSPHER1(I)=DMU*SX(I)
 267 : 1040     CONTINUE
 268 :          DP=DELTA
 269 :          DR=RP*DP
 270 : C
 271 :          RR=RR+DR
 272 :          EPST=EPST+DP
 273 :          DO 1050 I=1,NTENS
 274 :             S(I)=S(I)+DSIG(I)
 275 :             SPHER1(I)=SPHER1(I)+DSPHER1(I)
 276 :             SX(I)=S(I)-SPHER1(I)
 277 : 1050     CONTINUE
 278 :          SEQ=VONMIS0(SX,NTENS,MFR1,IFOURB,EP1,ALFAH)
 279 : C
 280 : C        Test de convergence
 281 : C        Calcul de la nouvelle valeur de PHI
 282 : C
 282 :          CALL TRACTI(SI,EPST,SIG,EPS,LTRAC,2,IBI)
 283 :          PHI=SEQ-SI
 284 : C
 285 :          PETI=1.E-7
 286 :          APHI=ABS(PHI)
 287 :          APHI0=ABS(PHI0)
 288 :          TEST=PETI*APHI0
 289 : C
 290 :          IF (NITER.GT.50) THEN
 291 :             KINC = -513
 292 :             RETURN
 293 :          ENDIF
 294 : C
 295 : C        SI ON A CONVERGE : on calcule l'etat final, on stocke les
 296 : C        resultats et on sort
 297 : C
 298 :          IF (APHI.LE.TEST) THEN
 299 : C
 300 :             DO 1060 I=1,NTENS
 301 :                DS(I)=S(I)-SIGB(I)
 302 : 1060        CONTINUE
 302 :             CALL EPSIG0(DS,DDEPSE,MFR1,IFOURB,YUNG,XNU,WORK,NTENS)
 303 :             STATEV(1)=EPST
 304 :             DO 1070 I=1,NTENS
 305 :                STRESS(I)=S(I)
 306 :                STATEV(1+I)=STATEV(1+I)-DDEPSE(I)
 307 : 1070        CONTINUE
 308 : C
 309 : C        SINON : on itere
 310 : C
 311 :          ELSE
 312 :             GOTO 10
 313 :          ENDIF
 314 : C
 315 : C        _______________________________________________________________
 316 : C        Fin des iterations internes
 317 : C
 318 :       RETURN
 319 :       END
 320 :  
 321 :  
 322 :  

© Cast3M 2003 - All rights reserved.
Disclaimer