1 : C HUJEUX SOURCE FANDEUR 13/01/29 21:15:55 7683 2 : SUBROUTINE HUJEUX(SIG0,NSTRS,DEPST,VAR0,NVARI,XMAT,NCOMAT,XCAR, 3 : . SIGF,VARF,DEFP,PRECIS,MFR,KERRE) 4 : C---------------------------------------------------------------------- 5 : C PLASTICITE MODELE HUJEUX 6 : C 7 : C ENTREES 8 : C SIG0(NSTRS) = CONTRAINTES INITIALES 9 : C NSTRS = NOMBRE DE CONTRAINTES 10 : C DEPST(NSTRS) = INCREMENT DE DEFORMATIONS TOTALES 11 : C VAR0(NVARI) = VARIABLES INTERNES DEBUT 12 : C VAR0(1) = EPSE 13 : C VAR0(2) = TRAP 14 : C XMAT(NCOMAT) = COMPOSANTES DE MATERIAU 15 : C XMAT(1) = YOUN 16 : C XMAT(2) = NU 17 : C XMAT(3) = RHO 18 : C XMAT(4) = ALPH 19 : C XMAT(5) = PI0 20 : C XMAT(6) = COHE 21 : C XMAT(7) = M 22 : C XMAT(8) = BETA 23 : C XMAT(9) = HUA 24 : C XMAT(10) = HUB 25 : C XMAT(11) = HUR 26 : C XMAT(12) = P1 27 : C XMAT(13) = N 28 : C XMAT(14) = E1 29 : C NCOMAT = NOMBRE DE COMPOSANTES DE MATERIAU 30 : C XCAR(ICARA) = CARACTERISTIQUES 31 : C MFR = NUMERO DE LA FORMULATION DE L'ELEMENT FINI 32 : C = 1 MASSIF 33 : C 34 : C SORTIES 35 : C SIGF(NSTRS) = CONTRAINTES FINALES 36 : C VARF(NVARI) = VARIABLES INTERNES FINALES 37 : C DEFP(NSTRS) = DEFORMATIONS PLASTIQUES 38 : C KERRE = 0 TOUT OK 39 : C 1 SI DLAMBDA NEGATIF 40 : C 2 NOMBRE MAX D ITERATIONS INTERNES DEPASSE 41 : C 21 ON NE TROUVE PAS L INTERSECTION AVEC LA SURFACE DE CHARGE 42 : C 22 SIG0 A L EXTERIEUR DE LA SURFACE DE CHARGE 43 : C 44 : C----------------------------------------------------------------------- 45 : C 46 : IMPLICIT INTEGER(I-N) 47 : IMPLICIT REAL*8(A-H,O-Z) 48 : -INC CCOPTIO 49 : C 50 : DIMENSION SIG0(*),DEPST(*),VAR0(*),XMAT(*),XCAR(*) 51 : DIMENSION SIGF(*),VARF(*),DEFP(*) 52 : DIMENSION STOT(6),XINV(2),SIGEL(6) 53 : DIMENSION DFDS(6),DGDS(6),COVNMS(1),DEFPLA(6),DDEFPL(6) 54 : * 55 : DATA ITMAX/25/ 56 : ALFAH=0.D0 57 : COVNMS(1) = 0.D0 58 : * 59 : * TEST SUR IFOUR : ON ACCEPTE 2D DP, AXI, 3D 60 : * 61 : KERRE=0 62 : IF(IFOUR.NE.0.AND.IFOUR.NE.2.AND.IFOUR.NE.-1) THEN 63 : KERRE=99 64 : RETURN 65 : ENDIF 66 : * 67 : * QUELQUES INITIALISATIONS 68 : * 69 : JEBOUC=0 70 : IIMPI0=IIMPI 71 : 2020 JEBOUC=JEBOUC+1 72 : * 73 : IF(IIMPI.EQ.48) THEN 74 : WRITE(IOIMP,77881) (XMAT(I),I=1,NCOMAT) 75 : 77881 FORMAT(1X,' XMAT=',1PE12.5/) 76 : WRITE(IOIMP,77882) (SIG0(I),I=1,NSTRS) 77 : 77882 FORMAT(1X,' SIG0 ' /(6(1X,1PE12.5))/) 78 : WRITE(IOIMP,77883) (VAR0(I),I=1,NVARI) 79 : 77883 FORMAT(1X,' VAR0 ' /(6(1X,1PE12.5))/) 80 : WRITE(IOIMP,77884) (DEPST(I),I=1,NSTRS) 81 : 77884 FORMAT(1X,' DEPST ' /(6(1X,1PE12.5))/) 82 : ENDIF 83 : * 84 : * ON RECUPERE LES CONSTANTES DU MATERIAU 85 : * 86 : YOUN = XMAT(1) 87 : YOUE1= XMAT(14) 88 : XNU = XMAT(2) 89 : PI0 = XMAT(5) 90 : COHE = XMAT(6) 91 : GM = XMAT(7) 92 : BETA = XMAT(8) 93 : HUA = XMAT(9) 94 : HUB = XMAT(10) 95 : HUR = XMAT(11) 96 : P1 = XMAT(12) 97 : ZN = XMAT(13) 98 : * 99 : * TESTS SUR LES DONNEES 100 : * 101 : IF(COHE.EQ.0.D0) COHE = 1.D-10 * PI0 102 : TRASI0 = COHE - TRACE(SIG0)/3.D0 103 : IF(TRASI0.LT.0.D0.OR.HUB.LE.0.D0) THEN 104 : KERRE=22 105 : RETURN 106 : ENDIF 107 : IF(ZN.LT.0.D0.OR.ZN.GE.1.D0) THEN 108 : KERRE=22 109 : RETURN 110 : ENDIF 111 : * 112 : E2=YOUE1/(P1**ZN) 113 : E1=E2*(TRASI0**ZN) 114 : G2=E1/(1.D0+XNU) 115 : G=G2*0.5D0 116 : UNSURE=1.D0/E1 117 : BULK2=E2/(3.D0*(1.D0-2.D0*XNU)) 118 : * 119 : * ON CALCULE LES CONTRAINTES FINALES EN ELASTIQUE 120 : * 121 : TRACEP= TRACE(DEPST) 122 : ZN1=1.D0-ZN 123 : UNSURN=1.D0/ZN1 124 : FAC= TRASI0 - (TRASI0**ZN1 - ZN1*BULK2*TRACEP)**UNSURN 125 : STOT(1)= SIG0(1)+G2*(DEPST(1)-TRACEP/3.D0) +FAC 126 : STOT(2)= SIG0(2)+G2*(DEPST(2)-TRACEP/3.D0) +FAC 127 : STOT(3)= SIG0(3)+G2*(DEPST(3)-TRACEP/3.D0) +FAC 128 : STOT(4)= SIG0(4)+G*DEPST(4) 129 : IF(IFOUR.EQ.2) THEN 130 : STOT(5)= SIG0(5)+G*DEPST(5) 131 : STOT(6)= SIG0(6)+G*DEPST(6) 132 : ELSE 133 : STOT(5)= 0.D0 134 : STOT(6)= 0.D0 135 : ENDIF 136 : * 137 : IF(IIMPI.EQ.48) THEN 138 : WRITE(IOIMP,77875) TRACEP 139 : 77875 FORMAT(1X,' TRACEP = ',1PE12.5/) 140 : WRITE(IOIMP,77886) (STOT(I),I=1,NSTRS) 141 : 77886 FORMAT(1X,' STOT ' /(6(1X,1PE12.5))/) 142 : ENDIF 143 : * 144 : * ON CALCULE LE CRITERE 145 : * 146 : PI= (PI0+COHE)*EXP(-BETA*VAR0(2)) - COHE 147 : IF(HUA.EQ.0.D0) THEN 148 : XKSI=1.D0+HUR 149 : ELSE 150 : XKSI=VAR0(1)/(HUA+VAR0(1)) + HUR 151 : ENDIF 151 : CALL HUJCRI(STOT,PI,XKSI,XMAT,XINV,Y,SELAS) 152 : * 153 : IF(IIMPI.EQ.48) THEN 154 : WRITE(IOIMP,77887) XINV(1),XINV(2),Y,SELAS,PI,XKSI 155 : 77887 FORMAT(1X,' XINV(1)= ',1PE12.5,2X,'XINV(2)= ',1PE12.5, 156 : . 2X,'Y= ',1PE12.5,2X,'SELAS= ',1PE12.5,2X,'PI= ',1PE12.5/ 157 : . 2X,'KSI=',1PE12.5/) 158 : ENDIF 159 : * 160 : PETI=1.1D00*PRECIS*Y 161 : ZERO=0.D0 161 : CALL EPSPRE(Y,ZERO,PETI,ITRY) 162 : IF(ITRY.EQ.0.AND.Y.GT.ZERO) GO TO 4 163 : * 164 : * SORTIE ELASTIQUE 165 : * 166 : VARF(1)=VAR0(1) 167 : VARF(2)=VAR0(2) 168 : DO 3 IBA=1,NSTRS 169 : SIGF(IBA)=STOT(IBA) 170 : DEFP(IBA)=0.D0 171 : 3 CONTINUE 172 : IF(IIMPI.EQ.48) THEN 173 : WRITE(IOIMP,77003) 174 : 77003 FORMAT(1X,' SORTIE ELASTIQUE ' /) 175 : ENDIF 176 : RETURN 177 : * 178 : * ECOULEMENT PLASTIQUE 179 : * 180 : 4 CONTINUE 181 : ITER =0 182 : DEPS =0.D0 183 : DEPSI=0.D0 183 : CALL SHIFTD(STOT,SIGEL,6) 183 : CALL ZDANUL(DEFPLA,6) 184 : * 185 : * ------------------------------- 186 : * | LES ITERATIONS INTERNES | 187 : * ------------------------------- 188 : 555 CONTINUE 189 : ITER=ITER+1 190 : IF(IIMPI.EQ.48) THEN 191 : WRITE(IOIMP,77888) ITER 192 : 77888 FORMAT(1X,' >>>>>>>>>>> HUJEUX - ITER =',I4/) 193 : ENDIF 194 : * 194 : CALL HUJFLO(IFOUR,SIGEL,XINV,PI,XKSI,XMAT,DFDS,DFDPI, 195 : . DFDKSI,DGDS,HV,HQ) 196 : IF(IIMPI.EQ.48) THEN 197 : WRITE(IOIMP,77889) (DFDS(IJ),IJ=1,NSTRS) 198 : 77889 FORMAT(1X,' DFDS '/(6(1X,1PE12.5))/) 199 : WRITE(IOIMP,77899) (DGDS(IJ),IJ=1,NSTRS) 200 : 77899 FORMAT(1X,' DGDS '/(6(1X,1PE12.5))/) 201 : WRITE(IOIMP,77890) DFDPI,DFDKSI,HV,HQ 202 : 77890 FORMAT(1X,' DFDPI= ',1PE12.5,2X,'DFDKSI= ',1PE12.5/ 203 : . 1X,' HV=',1PE12.5,2X,'HQ=',1PE12.5/) 204 : ENDIF 205 : * 206 : * CALCUL DE D*DGDS 207 : * 208 : ABSI=ABS(COHE-XINV(1)) 209 : BULKGT=(BULK2*(ABSI**ZN) - G2/3.D0)*TRACE(DGDS) 210 : STOT(1)=G2*DGDS(1)+BULKGT 211 : STOT(2)=G2*DGDS(2)+BULKGT 212 : STOT(3)=G2*DGDS(3)+BULKGT 213 : STOT(4)=G*DGDS(4) 214 : IF(IFOUR.EQ.2) THEN 215 : STOT(5)=G*DGDS(5) 216 : STOT(6)=G*DGDS(6) 217 : ELSE 218 : STOT(5)=0.D0 219 : STOT(6)=0.D0 220 : ENDIF 221 : * 222 : IF(IIMPI.EQ.48) THEN 223 : WRITE(IOIMP,77891) (STOT(IJ),IJ=1,NSTRS) 224 : 77891 FORMAT(1X,' D*DFDS '/(6(1X,1PE12.5))/) 225 : ENDIF 226 : * 227 : DFTDDG=SDOT(NSTRS,DFDS,1,STOT,1) 228 : DEPSI=Y/(DFTDDG - DFDPI*HV - DFDKSI*HQ +1.D-20) 229 : DEPS = DEPS+DEPSI 230 : IF(IIMPI.EQ.48) THEN 231 : WRITE(IOIMP,77892) DEPSI,DEPS 232 : 77892 FORMAT(1X,' DEPSI=',1PE12.5,2X,'DEPS=',1PE12.5/) 233 : ENDIF 234 : IF(DEPS.LT.0.D0) GO TO 6 235 : * 236 : * ON INCREMENTE 237 : * 238 : DO 66 I=1,NSTRS 239 : DEFPLA(I)=DEFPLA(I)+DGDS(I)*DEPSI 240 : STOT(I)=DEPST(I)-DEFPLA(I) 241 : 66 CONTINUE 242 : IF(IFOUR.NE.2) THEN 243 : DEFPLA(5)=0.D0 244 : DEFPLA(6)=0.D0 245 : STOT(5)=0.D0 246 : STOT(6)=0.D0 247 : ENDIF 248 : * 249 : * DEVIATEUR DE DEFPLA 250 : * 251 : DO 67 I=1,6 252 : IF(I.LE.3) THEN 253 : DDEFPL(I)=DEFPLA(I)-TRACE(DEFPLA)/3.D0 254 : ELSE 255 : DDEFPL(I)=DEFPLA(I) 256 : ENDIF 257 : 67 CONTINUE 258 : IF(IIMPI.EQ.48) THEN 259 : WRITE(IOIMP,77991) (DEFPLA(IJ),IJ=1,NSTRS) 260 : 77991 FORMAT(1X,' DEFPLA '/(6(1X,1PE12.5))/) 261 : WRITE(IOIMP,73991) (DDEFPL(IJ),IJ=1,NSTRS) 262 : 73991 FORMAT(1X,' DDEFPL '/(6(1X,1PE12.5))/) 263 : ENDIF 264 : * 265 : TRACEP= TRACE(STOT) 266 : FAC = TRASI0 - (TRASI0**ZN1 - ZN1*BULK2*TRACEP)**UNSURN 267 : SIGEL(1)= SIG0(1)+G2*(STOT(1)-TRACEP/3.D0) +FAC 268 : SIGEL(2)= SIG0(2)+G2*(STOT(2)-TRACEP/3.D0) +FAC 269 : SIGEL(3)= SIG0(3)+G2*(STOT(3)-TRACEP/3.D0) +FAC 270 : SIGEL(4)= SIG0(4)+G*STOT(4) 271 : IF(IFOUR.EQ.2) THEN 272 : SIGEL(5)= SIG0(5)+G*STOT(5) 273 : SIGEL(6)= SIG0(6)+G*STOT(6) 274 : ELSE 275 : SIGEL(5)= 0.D0 276 : SIGEL(6)= 0.D0 277 : ENDIF 278 : * 279 : PI= (PI0+COHE)*EXP(-BETA*(VAR0(2)+TRACE(DEFPLA))) - COHE 280 : EPSE=VONEPS(DDEFPL,1,ALFAH,COVNMS)+VAR0(1) 281 : IF(HUA.EQ.0.D0) THEN 282 : XKSI=1.D0+HUR 283 : ELSE 284 : XKSI=EPSE/(HUA+EPSE) + HUR 285 : ENDIF 286 : * 287 : * TEST DE CONVERGENCE 288 : * 288 : CALL HUJCRI(SIGEL,PI,XKSI,XMAT,XINV,Y,SELAS) 289 : STST=ABS(Y/SELAS) 290 : * 291 : IF(IIMPI.EQ.48) THEN 292 : WRITE(IOIMP,77893) (SIGEL(IJ),IJ=1,NSTRS) 293 : 77893 FORMAT(1X,' NEW SIG '/(6(1X,1PE12.5))/) 294 : WRITE(IOIMP,77894) PI,Y,SELAS,STST 295 : 77894 FORMAT(1X,' PI= ',1PE12.5,2X,'Y= ',1PE12.5,2X, 296 : . 'SELAS= ',1PE12.5,2X,'STST= ',1PE12.5/) 297 : ENDIF 298 : * 299 : IF(STST.LE.PRECIS) GO TO 8 300 : IF(ITER.GT.ITMAX) GO TO 7 301 : GO TO 555 302 : * 303 : 6 CONTINUE 304 : KERRE=1 305 : GO TO 9 306 : 7 CONTINUE 307 : KERRE=2 308 : 9 CONTINUE 309 : IF (JEBOUC.EQ.1) THEN 310 : IIMPI=48 311 : GO TO 2020 312 : ELSE 313 : IIMPI=IIMPI0 314 : ENDIF 315 : * 316 : 8 CONTINUE 317 : * 318 : * REMPLISSAGE 319 : * 320 : VARF(1)=EPSE 321 : VARF(2)=VAR0(2)+TRACE(DEFPLA) 322 : DO 12 IBA=1,NSTRS 323 : SIGF(IBA)=SIGEL(IBA) 324 : DEFP(IBA)=DEFPLA(IBA) 325 : 12 CONTINUE 326 : * 327 : IF(IIMPI.EQ.48) THEN 328 : WRITE(IOIMP,77895) (STOT(IJ),IJ=1,NSTRS) 329 : 77895 FORMAT(1X,' DEF_ELA '/(6(1X,1PE12.5))/) 330 : WRITE(IOIMP,77896) (DEFP(IJ),IJ=1,NSTRS) 331 : 77896 FORMAT(1X,' DEF_PLA '/(6(1X,1PE12.5))/) 332 : WRITE(IOIMP,77897) VARF(1),VARF(2) 333 : 77897 FORMAT(1X,' VARF(1)= ',1PE12.5,2X,'VARF(2)= ',1PE12.5/) 334 : ENDIF 335 : * 336 : 1000 RETURN 337 : END 338 : 339 : 340 : 341 :
© Cast3M 2003 - All rights reserved.
Disclaimer