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