1 : C CMAZAR SOURCE AM 10/04/28 21:15:01 6672 2 : SUBROUTINE CMAZAR (WRK52,WRK53,WRK54,WRKK2,NSTRS1,NVARI, 3 : 1 ICARA,JDIM,IFOUR2) 4 : C MAZARS SOURCE AM 98/12/23 21:38:30 3409 5 : C 6 : C 7 : C variables en entree 8 : C 9 : C 10 : C WRK0 pointeur sur un segment deformation au pas precedent 11 : C 12 : C WRK1 pointeur sur un segment increment de deformation 13 : C 14 : C WRKK2 pointeur sur un segment variables internes au pas precedent 15 : C 16 : C WRK5 pointeur sur un segment de deformations inelastiques 17 : C 18 : C XMATER constantes du materiau 19 : C 20 : C NSTRS1 nombre de composantes dans les vecteurs des contraintes 21 : C et les vecteurs des deformations 22 : C 23 : C NVARI nombre de variables internes (doit etre egal a 2) 24 : C 25 : C NMATT nombre de constantes du materiau 26 : C 27 : C ISTEP flag utilise pour separer les etapes dans un calcul non local 28 : C ISTEP=0 -----> calcul local 29 : C ISTEP=1 -----> calcul non local etape 1 on calcule les seuils 30 : C ISTEP=2 -----> calcul non local etape 2 on continue le calcul 31 : C a partir des seuils moyennes 32 : C 33 : C Modif L.Bode - 14/10/92 34 : C Nouveaux parametres en entree 35 : C JDIM Dimension de travail 36 : C ( Coques JDIM =2 , Massifs JDIM = IDIM ) 37 : C IFOUR2 Type de formulation 38 : C ( Coques IFOUR2 = -2 => contraintes planes , 39 : C Massifs IFOUR2 = IFOUR) 40 : C 41 : C variables en sortie 42 : C 43 : C VARINF variables internes finales 44 : C 45 : C SIGMAF contraintes finales 46 : C 47 : C C. LA BORDERIE MARS 1992 48 : C declaration des variables 49 : C 50 : C 51 : IMPLICIT INTEGER(I-N) 52 : IMPLICIT REAL*8(A-H,O-Z) 53 : -INC CCOPTIO 54 : -INC DECHE 55 : * 56 : SEGMENT WRKK2 57 : REAL*8 EPSILI(NSTRS1) 58 : ENDSEGMENT 59 : C Modif L.Bode - 14/10/92 60 : SEGMENT WRK3 61 : REAL*8 EPSILO(NSTRS1) 62 : ENDSEGMENT 63 : C Definition dynamique de EPSILO 64 : C Fin modif L.Bode 65 : INTEGER NSTRS1,NVARI 66 : REAL*8 EPS33(3,3),EPSIPP(3),EPSILT(3),VALP33(3,3) 67 : REAL*8 SIGP(3),SIGPT(3),SIGPC(3),TRSIGT,TRSIGC 68 : REAL*8 YOUN,XNU,EPSD0,ACOM,BCOM,ATRA,BTRA,BETA 69 : INTEGER ISTRS,JSTRS,KCAS,IRTD 70 : REAL*8 XZERO,UN,DEUX,XPETIT 71 : REAL*8 DINI,D,DT,DC,EPSTIL,EPSTIM,ALFAT,ALFAC,GAMMA 72 : PARAMETER (XZERO=0.D0 , UN=1.D0 , DEUX=2.D0, XPETIT=1.D-12) 73 : 74 : C 75 : C 76 : C recuperation des variables initiales dans les tableaux 77 : C 78 : C 79 : N=NSTRS1 80 : CMATE = 'ISOTROPE' 81 : YOUN = XMAT(1) 82 : XNU = XMAT(2) 83 : EPSD0= XMAT(5) 84 : ACOM = XMAT(6) 85 : BCOM = XMAT(7) 86 : ATRA = XMAT(8) 87 : BTRA = XMAT(9) 88 : BETA = XMAT(10) 89 : DINI = VAR0(2) 90 : 91 : C 92 : C calcul des seuils 93 : C 94 : C 95 : C calcul de la deformation totale 96 : C 97 : SEGINI WRK3 98 : DO 100 ISTRS=1,NSTRS1 99 : EPSILO(ISTRS)=EPSILI(ISTRS)+DEPST(ISTRS) 100 : 100 CONTINUE 101 : C 102 : C calcul des deformations principales 103 : C 104 : C 105 : C on reecrit les deformations sous forme matricielle 106 : C 107 : C Modif L.Bode - 14/10/92 108 : C Rajout de IFOUR2 en argument de ENDOCA 109 : * print*,'on appelle ENDOCB' 109 : CALL ENDOCB (EPSILO,EPS33,2,IFOUR2) 110 : * print*,'apres endocb' 111 : C Fin modif L.Bode 112 : C 113 : C et on diagonalise 114 : C 115 : C Modif L.Bode - 14/10/92 116 : C Pour les elts Coques, on travaille en contraintes planes => JDIM =2 117 : C Pour les elts Massifs JDIM =IDIM 118 : * print*,'avant JACOB3' 118 : CALL JACOB3 (EPS33,JDIM,EPSIPP,VALP33) 119 : * print*,'apres JACOB3' 120 : C Fin modif L.Bode 121 : IF (ISTEP .EQ. 0 .OR. ISTEP.EQ.2) THEN 122 : C 123 : C on calcule la matrice de hooke et les contraintes ppales 124 : C 125 : CMATE = 'ISOTROPE' 126 : KCAS=1 127 : C Modif L.Bode - 14/10/92 128 : C IFOUR --> IFOUR2 dans appel DOHMAS 129 : * print*,'avant dohmas' 129 : CALL DOHMAS(XMAT,CMATE,IFOUR2,NSTRS1,KCAS,DDHOOK,IRTD) 130 : * print*,'apres dohmas' 131 : C Fin modif L.Bode 132 : DO 200 ISTRS=1,3 133 : SIGP(ISTRS)= XZERO 134 : DO 210 JSTRS=1,3 135 : SIGP(ISTRS)=SIGP(ISTRS)+DDHOOK(ISTRS,JSTRS)*EPSIPP(JSTRS) 136 : 210 CONTINUE 137 : 200 CONTINUE 138 : END IF 139 : C 140 : C on complete la deformation dans le cas des contraintes planes 141 : C 142 : C Modif L.Bode - 14/10/92 143 : C IFOUR remplace par IFOUR2 144 : IF (IFOUR2.EQ. -2) THEN 145 : EPSIPP(3)= -(EPSIPP(1) + EPSIPP(2))*XNU / (UN-XNU) 146 : END IF 147 : C Fin modif L.Bode 148 : C 149 : C on calcule le epsilontild 150 : C 151 : EPSTIL=MAX( XZERO , EPSIPP(1) )**2 + 152 : 1 MAX( XZERO , EPSIPP(2) )**2 + 153 : 2 MAX( XZERO , EPSIPP(3) )**2 154 : EPSTIL=SQRT (EPSTIL) 155 : 156 : IF (ISTEP .EQ. 0) THEN 157 : EPSTIM=EPSTIL 158 : VARF(1)=EPSTIL 159 : ELSE IF (ISTEP .EQ. 1) THEN 160 : VARF(2)=DINI 161 : VARF(1)=EPSTIL 162 : ELSE IF (ISTEP .EQ. 2) THEN 163 : EPSTIM=VAR0(1) 164 : VARF(1)=EPSTIM 165 : ELSE 166 : PRINT*,'DANS MAZARS ISTEP = 0,1,2 ET PAS ',ISTEP 167 : END IF 168 : IF ( (ISTEP .EQ. 0) .OR. (ISTEP .EQ. 2)) THEN 169 : C 170 : C on calcule l'endommagement et les contraintes 171 : C 172 : C 173 : C on calcule ALFAT ALFAC DT et DC puis D 174 : C dans le cas ou le seuil initial est depasse 175 : C 176 : IF ( EPSTIM .GT. EPSD0) THEN 177 : C 178 : C calcul de l'endommagement 179 : C 180 : C 181 : C on calcule le signe des contraintes elastiques 182 : C 183 : DO 300 ISTRS=1,3 184 : IF (SIGP(ISTRS).LT. XZERO) THEN 185 : SIGPC(ISTRS)=SIGP(ISTRS) 186 : SIGPT(ISTRS)=XZERO 187 : ELSE 188 : SIGPT(ISTRS)=SIGP(ISTRS) 189 : SIGPC(ISTRS)=XZERO 190 : END IF 191 : 300 CONTINUE 192 : TRSIGT=SIGPT(1)+SIGPT(2)+SIGPT(3) 193 : TRSIGC=SIGPC(1)+SIGPC(2)+SIGPC(3) 194 : C 195 : C on calcule les deformations dues aux contraintes positives 196 : C 197 : DO 400 ISTRS=1,3 198 : EPSILT(ISTRS)=(SIGPT(ISTRS)*(UN+XNU)-TRSIGT*XNU)/YOUN 199 : 400 CONTINUE 200 : C 201 : C on en deduit ALFAT et ALFAC 202 : C 203 : ALFAT = MAX(XZERO,EPSIPP(1))*EPSILT(1) + 204 : 1 MAX(XZERO,EPSIPP(2))*EPSILT(2) + 205 : 2 MAX(XZERO,EPSIPP(3))*EPSILT(3) 206 : ALFAT = ALFAT/(EPSTIL*EPSTIL) 207 : ALFAC = UN - ALFAT 208 : C 209 : C modification pour la bi ou tricompression 210 : C 211 : IF (TRSIGC.LT. -XPETIT .AND. TRSIGT.LT.XPETIT) THEN 212 : GAMMA=SIGPC(1)*SIGPC(1)+SIGPC(2)*SIGPC(2)+ 213 : 1 SIGPC(3)*SIGPC(3) 214 : GAMMA=-SQRT(GAMMA)/TRSIGC 215 : EPSTIM=EPSTIM*GAMMA 216 : END IF 217 : C 218 : C amelioration de la reponse en cisaillement pour beta > 1. 219 : C 220 : IF (BETA .GT. UN) THEN 221 : IF ( ALFAT .GT. XPETIT ) THEN 222 : ALFAT=ALFAT**BETA 223 : END IF 224 : IF ( ALFAC .GT. XPETIT ) THEN 225 : ALFAC=ALFAC**BETA 226 : END IF 227 : END IF 228 : 229 : C 230 : C on calcule DT et DC puis D 231 : C dans le cas ou le seuil initial est depasse 232 : C 233 : C on est oblige de verifier car on a pu multiplier par gamma 234 : C 235 : C IF (EPSTIM .GT. EPSD0) THEN 236 : C DT=UN - EPSD0*(UN-ATRA)/EPSTIM - 237 : C 1 ATRA*EXP(-BTRA*(EPSTIM-EPSD0)) 238 : C DC=UN - EPSD0*(UN-ACOM)/EPSTIM - 239 : C 1 ACOM*EXP(-BCOM*(EPSTIM-EPSD0)) 240 : C ELSE 241 : C DT=XZERO 242 : C DC=XZERO 243 : C END IF 244 : CLB 2010/01/20 245 : C trois lois d'évolution: 246 : C ATRA > 0 : loi de mazars classique 247 : C -10BTRA est alors 249 : C la déformation pour laquelle la contrainte s'annule C 250 : C 251 : IF (EPSTIM .GT. EPSD0) THEN 252 : IF (ATRA .GT. 0.D0) THEN 253 : DT=UN - EPSD0*(UN-ATRA)/EPSTIM - 254 : 1 ATRA*EXP(BTRA*(EPSD0-EPSTIM)) 255 : ELSE IF (ATRA . GT. -10.) THEN 256 : DT=UN - epsd0/epstim*EXP(BTRA*(EPSD0-EPSTIM)) 257 : ELSE 258 : IF(EPSTIM .LT. BTRA) THEN 259 : DT=UN - EPSD0*(BTRA - EPSTIM)/EPSTIM/(BTRA - EPSD0) 260 : ELSE 261 : DT=1.D0 262 : ENDIF 263 : END IF 264 : DC=UN - EPSD0*(UN-ACOM)/EPSTIM - 265 : 1 ACOM*EXP(-BCOM*(EPSTIM-EPSD0)) 266 : ELSE 267 : 268 : DT=XZERO 269 : DC=XZERO 270 : END IF 271 : D = ALFAT*DT + ALFAC*DC 272 : C 273 : C on borne la valeur de D a 0.99999.. 274 : C 275 : D=MIN ( D , UN-1.D-20 ) 276 : ELSE 277 : D=XZERO 278 : END IF 279 : C 280 : C on teste la croissance de D 281 : C 282 : D=MAX ( D , DINI ) 283 : C 284 : C on le stocke dans les variables internes finales 285 : C 286 : VARF(2)= D 287 : C 288 : C on calcule les contraintes finales 289 : C 289 : CALL MATVE1 (DDHOOK,EPSILO,NSTRS1,NSTRS1,SIGF,2) 290 : DO 500 ISTRS=1,NSTRS1 291 : SIGF(ISTRS)=SIGF(ISTRS)*(UN-D) 292 : 500 CONTINUE 293 : C 294 : C et les deformations inelastiques finales 295 : C 296 : DO 600 ISTRS=1,NSTRS1 297 : EPINF(ISTRS)=EPSILO(ISTRS)*D 298 : 600 CONTINUE 299 : 300 : END IF 301 : SEGSUP WRK3 302 : RETURN 303 : END 304 : 305 : 306 : 307 : 308 : 309 :
© Cast3M 2003 - All rights reserved.
Disclaimer