1 : C RICJ2 SOURCE PV 11/03/07 21:18:05 6885 2 : C sub ricjoi2d 3 : C RICJOI2D SOURCE CHAT 05/01/12 22:24:09 5004 4 : SUBROUTINE RICJ2(IB,IGAU,NSTRS,SIG0,EPIN0,VAR0,NVARI, 5 : & DEPST,IFOUR,XMAT,NMATT,IVAL,DD,SIGF,DEFP,VARF,KERRE) 6 : C----------------------------------------------------------------------- 7 : C Modele RICJOI en version element joint 2D 8 : C----------------------------------------------------------------------- 9 : C Développé par : Benjamin Richard 10 : C 11 : C Supervisé par : Frederic Ragueneau 12 : C Lucas Hector Adelaide 13 : C Christian Cremona 14 : C Jean Louis Tailhan 15 : C----------------------------------------------------------------------- 16 : 17 : C 18 : C-----DECLARATION GENERALE---------------------------------------------- 19 : C 20 : IMPLICIT INTEGER(I-N) 21 : IMPLICIT REAL*8(A-H,O-Z) 22 : C 23 : C-----APPEL AUX INCLUDES------------------------------------------------ 24 : C 25 : -INC CCREEL 26 : C 27 : C-----PARAMETRES 28 : C 29 : PARAMETER(XDILAT = 80.0D0) 30 : C 31 : C-----DIMENSION--------------------------------------------------------- 32 : C 33 : DIMENSION SIG0(*),EPIN0(*),VAR0(*),DEPST(*),XMAT(*) 34 : DIMENSION DD(NSTRS,NSTRS) 35 : DIMENSION SIGF(*),DEFP(*),VARF(*) 36 : 37 : FVARLIM = 2.0D-5 38 : C 39 : C-----COMPTEUR POUR LE NOMBRE DE PASSAGE DAS LA BOUCLE 40 : C 41 : COUN = VAR0(13) 42 : C 43 : C-----ETAT PRECEDENT---------------------------------------------------- 44 : C 45 : D = VAR0(1) 46 : EPSF = VAR0(2) 47 : XEC = VAR0(3) 48 : EPST = VAR0(4) 49 : EPSN = VAR0(5) 50 : CINE = VAR0(6) 51 : 52 : EPSR = VAR0(7) 53 : IFLAG = nint(VAR0(8)) 54 : FVAR = VAR0(9) 55 : SIGM = VAR0(10) 56 : XKS = VAR0(11) 57 : XKN = VAR0(12) 58 : C 59 : C-----INITIALISATION SPECIFIQUE POUR LES VARIABLES INTERNES DIFF. DE ZERO 60 : C 61 : IF (COUN.EQ.0.0D0) THEN 62 : FVAR = 0.2D0 63 : SIGM = XMAT(13) 64 : XKS = XMAT(1) 65 : XKN = XMAT(2) 66 : ENDIF 67 : C 68 : C-----CONSTANTES MATERIAUX---------------------------------------------- 69 : C 70 : XKS0 = XMAT(1) 71 : XKN0 = XMAT(2) 72 : 73 : XAD = XMAT(5) 74 : XY0 = XMAT(6) 75 : XAL = XMAT(7) 76 : XGA = XMAT(8) 77 : XAA = XMAT(9) 78 : 79 : Q1COE = XMAT(10) 80 : Q2COE = XMAT(11) 81 : Q3COE = XMAT(12) 82 : SYCOE = XMAT(13) 83 : NCOEF = nint(XMAT(14)) 84 : KCOEF = nint(XMAT(15) ) 85 : 86 : TCCOR = XMAT(16) 87 : NGONF = nint(XMAT(17)) 88 : 88 : CALL APP2(TCCOR,YR,15) 89 : 90 : C 91 : C-----ACTUALISATION DE LA DEFORMATION----------------------------------- 92 : C 93 : EPST = EPST + DEPST(1) 94 : EPSN = EPSN + DEPST(2) 95 : 96 : IF (NGONF.EQ.1) THEN 97 : GOTO 123 98 : ENDIF 99 : 100 : C 101 : C-----CALCUL DE L ENERGIE----------------------------------------------- 102 : C 103 : EPSNP = 0.5D0*(DABS(EPSN)+EPSN) 104 : YN = 0.5D0*XKN*EPSNP*EPSNP 105 : YD = 0.5D0*XKS*EPST*EPST 106 : C 107 : C-----CALCUL DU SEUIL D ENDOMMAGEMENT----------------------------------- 108 : C 109 : XFD = XAL*YN+YD-(XY0+XEC+YR) 110 : C 111 : C-----TEST SUR LE SEUIL D ENDOMMAGEMENT--------------------------------- 112 : C 113 : IF (XFD.GT.0.0D0) THEN 114 : Dn = 1.0D0-1.0D0/(1+XAD*(XAL*YN+YD-XY0-YR)) 115 : XEC = XAL*YN+YD-XY0-YR 116 : ENDIF 117 : 118 : IF (Dn.GT.D) THEN 119 : D = Dn 120 : ENDIF 121 : 122 : IF (D.GE.1.0D0) THEN 123 : D = 0.999D0 124 : ENDIF 125 : C 126 : C-----SUBSTEPPING------------------------------------------------------- 127 : C 128 : NENTIER = 1 129 : 130 : DO IQ = 1,NENTIER 131 : 132 : EPST = VAR0(4)+DEPST(1)*(IQ/NENTIER) 133 : EPSN = VAR0(5)+DEPST(2)*(IQ/NENTIER) 134 : XSTE = XKN*EPSN 135 : C 136 : C-----FROTTEMENT--------------------------------------------------------- 137 : C 138 : SPI = D*XKS*(EPST-EPSF) 139 : 140 : CRITF = DABS(SPI-CINE)+XDILAT*0.5D0*(-DABS(XSTE)+XSTE) 141 : 142 : IF (CRITF.GT.(0.0D0)) THEN 143 : XF0 = DABS(SPI-CINE)+XDILAT*0.5D0*(-DABS(XSTE)+XSTE) 144 : XDLAM = 1.0D0 145 : 146 : DO I=1,500 147 : SEUIL = (DABS(SPI-CINE)+ 148 : & XDILAT*0.5D0*(-DABS(XSTE)+XSTE))/XF0 149 : 150 : IF ((SEUIL.LE.1.0D-5).OR.(XDLAM.LE.1.0D-10)) THEN 151 : GOTO 900 152 : ELSE 153 : XSG = DABS(SPI-CINE)/(SPI-CINE) 154 : XDLAM = (DABS(SPI-CINE)+ 155 : & XDILAT*0.5D0*(-DABS(XSTE)+XSTE))/ 156 : & (XKS*D-XSG*XGA*(-XSG+XAA*CINE)) 157 : CINE = CINE-XGA*XDLAM*(-XSG+XAA*CINE) 158 : SPI = SPI-D*XKS*XDLAM*XSG 159 : ENDIF 160 : 161 : EPSF = -SPI/(D*XKS)+EPST 162 : 163 : ENDDO 164 : ENDIF 165 : 166 : 900 CONTINUE 167 : 168 : ENDDO 169 : C 170 : C-----ANELASTICITE-------------------------------------------------------- 171 : C 172 : IF (EPSN.GT.0.0D0) THEN 173 : SIGN = (1-D)*XKN*EPSN 174 : ELSE 175 : SIGN = XKN*(EPSN-EPSR) 176 : ENDIF 177 : C 178 : C-----CONTRAINTE DUE AUX EFFETS INELASTIQUE DE LA ROUILLE----------------- 179 : C 180 : IF (EPSN.LE.0.0D0) THEN 181 : SIGR = -1.0D0*SIGN 182 : ENDIF 183 : C 184 : C-----CRITERE D ANELASTICITE DE LA ROUILLE-------------------------------- 185 : C 186 : IF (IFLAG.EQ.1) THEN 187 : GOTO 20 188 : ELSE 189 : CRIT2 = 2.0D0*Q1COE*FVAR*DCOSH(Q2COE*SIGR/2.0D0/SYCOE)- 190 : & (1.0D0+(Q3COE*FVAR)**2.0D0) 191 : ENDIF 192 : 193 : C 194 : C SI LE CRITERE EST DEPASSE ON DEMARRE LE RETURN MAPPING 195 : C 196 : IF ((CRIT2.GT.0.0D0).AND. 197 : 1 (EPSN .LE.0.0D0).AND. 198 : 2 (TCCOR.GT.0.0D0).AND. 199 : 3 (FVAR.GT.FVARLIM).AND. 200 : 4 (IFLAG.EQ.0).AND. 201 : 5 ((EPSN*DEPST(2)).GT.0.0D0)) THEN 202 : CRIT20 = CRIT2 203 : DLAM2 = 1.0D0 204 : GOTO 10 205 : ELSE IF (FVAR.EQ.FVARLIM) THEN 206 : IFLAG = 1 207 : GOTO 20 208 : ELSE 209 : GOTO 30 210 : END IF 211 : C 212 : C-----DEBUT DES ITERATIONS INTERNES 213 : C 214 : 10 DO I=1,10000 215 : C 216 : C EVALUATION DU CRITERE 217 : C 218 : CRIT2 = 2.0D0*Q1COE*FVAR*DCOSH(Q2COE*SIGR/2.0D0/SYCOE)- 219 : & (1.0D0+(Q3COE*FVAR)**2.0D0) 220 : C 221 : C TEST DE CONVERGENCE SUR LA VALEUR DU CRITERE RELATIVE 222 : C 223 : IF ((DABS(CRIT2/CRIT20).LE.CRIT2TOL).OR. 224 : & (DLAM2.LT.0.0D0).OR. 225 : & (CRIT2.LT.0.0D0)) THEN 226 : GOTO 20 227 : END IF 228 : C 229 : C CALCUL DES DERIVEES DU CRITERES 230 : C 231 : C dFr/dSIGR : DERIV21 232 : C dFr/dSIGM : DERIV22 233 : C dFr/dFVAR : DERIV23 234 : C 235 : DERIV21 = DSINH(Q2COE*SIGR/2.0D0/SIGM)* 236 : & Q1COE*Q2COE*FVAR/SIGM 237 : 238 : DERIV22 = DSINH(Q2COE*SIGR/2.0D0/SIGM)* 239 : & (-1.0D0)*Q1COE*Q2COE*FVAR*SIGR/SIGM**2.0D0 240 : 241 : DERIV23 = 2.0D0*Q1COE*DCOSH(Q2COE*SIGR/2.0D0/SIGM)- 242 : & 2.0D0*(Q3COE**2.0D0)*FVAR 243 : C 244 : C CALUL DU MODULE TANGENT COHERENTS ENTRE DSIGM ET DEPSM 245 : C 246 : ETAN = XKN/NCOEF*(SYCOE/SIGM)**(NCOEF-1.0D0) 247 : ESTA = 1.0D0/ETAN - 1.0D0/XKN 248 : ESTA = 1.0D0/ESTA 249 : C 250 : C CALCUL DU MULTIPLICATEUR DE LAGRANGE 251 : C 252 : DLAM2 = -CRIT2/(XKN*(DERIV21)**2.0D0- 253 : & DERIV23*KCOEF*FVAR*(1.0D0-FVAR)*DERIV21- 254 : & ESTA/((1.0D0-FVAR)*SIGM)*DERIV21*SIGR*DERIV22) 255 : C 256 : C ACTUALISATION DES VARIABLES FORCES 257 : C 258 : SIGR = SIGR + DLAM2 * XKN * DERIV21 259 : FVAR = FVAR - DLAM2 * KCOEF * FVAR * (1.0D0-FVAR) * DERIV21 260 : SIGM = SIGM - DLAM2 * SIGR * DERIV21 * 261 : & ESTA/(1.0D0-FVAR)/SIGM 262 : C 263 : C SECURITE SUR LA VALEUR DE FVAR (CAS OU ELLE DEVIENT TROP FAIBLE) 264 : C 265 : IF (FVAR.LE.FVARLIM) THEN 266 : FVAR = FVARLIM 267 : MODR = nint(DLAM2 * XKN * DERIV21/DEPST(2)) 268 : END IF 269 : C 270 : C -------------------------------------------- 271 : C RETURN MAPPING : FIN DES ITERATIONS INTERNES 272 : C -------------------------------------------- 273 : C 274 : END DO 275 : C 276 : C BALISE DE SORTIE DU RETURN MAPPING AVANT ACUALISATION 277 : C 278 : 20 CONTINUE 279 : C 280 : C CAS OU LA FRACTION VOLUMIQUE DES PORES EST EGALE A 0.02 281 : C 282 : IF ((FVAR.EQ.FVARLIM).AND. 283 : & (IFLAG.EQ.1)) THEN 284 : SIGR = SIGR - MODR * DEPST(2) 285 : END IF 286 : C 287 : C CALCUL DES QUANTITES RESULTATS (EPSR, VKACT ET XKN) 288 : C 289 : SIGN = -SIGR 290 : EPSR = -(EPSN - SIGR/XKN) 291 : C 292 : C BALISE DE SORTIE DU RETURN MAPPING APRES ACUALISATION 293 : C 294 : 30 CONTINUE 295 : C 296 : C ACTUALISATION DES PARAMETRES ELASTIQUES 297 : C 298 : XKNACT = 4.0D0*XKN0*XKS0*(1.0D0-FVAR)/ 299 : & (4.0D0*XKS0+3.0D0*XKN0*FVAR) 300 : XKSACT = XKS0*(1.0D0-FVAR)/ 301 : & (1.0D0+((6.0D0*XKN0+12.0D0*XKS0)/ 302 : & (9.0D0*XKN0+8.0D0*XKS0))*FVAR) 303 : 304 : XKN = XKNACT 305 : XKS = XKSACT 306 : 307 : C 308 : C-----CALCUL DES CONTRAINTES FINALES------------------------------------ 309 : C 310 : SIGF(1) = XKS*(1-D)*EPST + SPI 311 : 312 : IF (EPSN.GT.0.0D0) THEN 313 : SIGF(2) = XKN*(1-D)*EPSN 314 : ELSE 315 : SIGF(2) = XKN*(EPSN-EPSR) 316 : ENDIF 317 : 318 : C 319 : C-----STOCKAGE EN SORTIE DES VARIABLES INTERNES------------------------- 320 : C 321 : VARF(1 ) = D 322 : VARF(2 ) = EPSF 323 : VARF(3 ) = XEC 324 : VARF(6 ) = CINE 325 : VARF(7 ) = EPSR 326 : VARF(8 ) = IFLAG 327 : VARF(9 ) = FVAR 328 : VARF(10) = SIGM 329 : VARF(11) = XKSACT 330 : VARF(12) = XKNACT 331 : VARF(13) = COUN + 1 332 : 333 : 123 CONTINUE 334 : 335 : IF (NGONF.EQ.1) THEN 336 : SIGF(1) = XMAT(1)*EPST 337 : SIGF(2) = XMAT(2)*EPSN 338 : ENDIF 339 : 340 : VARF(4 ) = EPST 341 : VARF(5 ) = EPSN 342 : 343 : 344 : RETURN 345 : END 346 : 347 : 348 : 349 : 350 : 351 : 352 : 353 :
© Cast3M 2003 - All rights reserved.
Disclaimer