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