1 : C GERNAY SOURCE FANDEUR 13/01/16 21:15:19 7666 2 : 3 : SUBROUTINE GERNAY(WRK52,WRK53,WRK54,WRK3,IB,IGAU,NBPGAU) 4 : * 5 : *______________________________________________________________________ 6 : * 7 : * MODELE GERNAY 8 : *______________________________________________________________________ 9 : * 10 : IMPLICIT INTEGER(I-N) 11 : IMPLICIT REAL*8(A-H,O-Z) 12 : 13 : -INC CCOPTIO 14 : -INC DECHE 15 : * 16 : SEGMENT WRK3 17 : REAL*8 WORK(LW),WORK2(LW2) 18 : ENDSEGMENT 19 : * 20 : PARAMETER(UN=1.D0,DEUX=2.D0,UNDEMI=.5D0) 21 : * 22 : REAL*8 YOUN, NU, BULK3, G2, LAM, 23 : & TETA0, DTETA, TETAF, ALPH, TREF, DYDT, DNDT, 24 : & YOUN0, NU0, BULK30, G20, LAM0, 25 : & YOUNF, NUF, BULK3F, G2F, LAMF, 26 : & DELDSE(6,6), ETHERM(6), DTHERM(6), 27 : & YREF, NREF, EPSE0(6), DEPSE(6),DHOOK(6,6), 28 : & DSIG2(3,3),DEPST2(3,3),TENS(3,3),DSIG(6), 29 : & V1(3),V2(3),V3(3),V(3,3),P(3,3) 30 : 31 : REAL*8 PARAHOT3(83,1),sigma6v(6), deps6v(6),STRESS(6),DSTRAN(6) 32 : REAL*8 STRAN(6),STATEV(32),PROPS(10),DDSDDE(6,6) 33 : character*10 cmat 34 : logical lerror,lcp 35 : * 36 : * ON EXPLORE LE DECHE 37 : * 38 : NPT=1 39 : NOEL=1 40 : KERRE=0 41 : NMAT = XMAT(/1) 42 : 43 : NVARI = VAR0(/1) 44 : NSTRS = SIG0(/1) 45 : 45 : CALL ZERO(STRESS,6,1) 45 : CALL ZERO(STRAN,6,1) 45 : CALL ZERO(DSTRAN,6,1) 45 : CALL ZERO(STATEV,32,1) 45 : CALL ZERO(PARAHOT3,83,1) 46 : * 47 : * TRANSFER DE L'ETAT INITIAL, DU DEPST, ET DU MATERIAU 48 : * 49 : DO I=1,NSTRS 50 : STRESS(I) = SIG0(I) 51 : STRAN(I) = EPST0(I) 52 : DSTRAN(I)= DEPST(I) 53 : ENDDO 54 : * 55 : DO I=1,NVARI 56 : STATEV(I) = VAR0(I) 57 : ENDDO 58 : * 59 : PROPS( 1) = XMAT( 2) 60 : PROPS( 2) = XMAT( 5) 61 : PROPS( 3) = XMAT( 6) 62 : PROPS( 4) = XMAT( 7) 63 : PROPS( 5) = XMAT( 8) 64 : PROPS( 6) = XMAT( 9) 65 : PROPS( 7) = XMAT(10) 66 : PROPS( 8) = XMAT(11) 67 : PROPS( 9) = XMAT(12) 68 : PROPS(10) = XMAT( 1) 69 : 70 : C 71 : C----------------------------------------------------------------------- 72 : C Constantes de materiau 73 : C ---------------------- 74 : C PROPS(1) : NU Coefficient de Poisson 75 : c PROPS(2) : RC Resistance à la compression 76 : c PROPS(3) : RT Resistance à la traction 77 : c PROPS(4) : RB Resistance à la compression biaxiale 78 : c PROPS(5) : EPS1 Deformation au pic en compression 79 : c PROPS(6) : DILA Parametre de dilatance alpha_g 80 : c PROPS(7) : DAM1 Endommagement de compression au pic 81 : c PROPS(8) : XC Paramètre adimensionnel, rapport de l'energie de rupture 82 : c en compression dissipée avant le pic sur l'énergie totale 83 : c PROPS(9) : GT Densite d'energie de rupture en traction 84 : c PROPS(10) : YOUN Young pour le calcul de la rigidite elastique 85 : c 86 : C----------------------------------------------------------------------- 87 : C 88 : 89 : * print *,' ' 90 : * print *, ' POINT DINTEGRATION IGAU = ', IGAU 91 : * print *, ' stress', stress 92 : * print *, 'dstran', dstran 93 : * print *,' STATEV 1 à 4' , (statev(i),i=1,4) 94 : * print *,' STATEV 5 à 10 epspl ', (statev(i),i=5,10) 95 : * print *,' STATEV 11 à 16 epstr ', (statev(i),i=11,16) 96 : * print *,' STATEV 17 à 22 sig,eff,c ', (statev(i),i=17,22) 97 : * print *,' STATEV 24 à 29 sig,eff ', (statev(i),i=24,29) 98 : * print *,' STATEV 30 à 32 tmax,phi,epsth ',(statev(i),i=30,32) 99 : 100 : cmat = 'SICO_ETC3D' 101 : idimpara3 = 83 102 : c ATTENTION si idimpara3 est modifié il faut modifier aussi la dimension 103 : c de parahot3 (plus haut) 104 : lerror = .false. 105 : **** npttot3=30 106 : npttot3=1 107 : * 108 : lcp = .false. 109 : * 110 : * CAS CONTRAINTES PLANES 111 : * 112 : if (IFOUR.EQ.-2) then 113 : lcp = .true. 114 : endif 115 : 116 : 117 : * TEMPERATURES EN DEBUT ET FIN DE PAS 118 : 119 : TETA1 = ture0(1) 120 : TETA2 = turef(1) 121 : 122 : C Recuperation des constantes de materiau 123 : C 124 : PARAHOT3(2,NPT) = PROPS(1) 125 : PARAHOT3(3,NPT) = PROPS(2) 126 : PARAHOT3(4,NPT) = PROPS(3) 127 : PARAHOT3(7,NPT) = PROPS(4) 128 : PARAHOT3(5,NPT) = PROPS(5) 129 : PARAHOT3(8,NPT) = PROPS(6) 130 : PARAHOT3(9,NPT) = PROPS(7) 131 : PARAHOT3(10,NPT)= PROPS(8) 132 : PARAHOT3(11,NPT)= PROPS(9) 133 : C 134 : c remplissage des variables internes 135 : c accumulated plastic strain kappa at the beginning of the step 136 : c in tension and in compression 137 : PARAHOT3(idimpara3-37,NPT) = STATEV(1) 138 : PARAHOT3(idimpara3-36,NPT) = STATEV(2) 139 : 140 : c damage variable in tension and in compression 141 : PARAHOT3(idimpara3-41,NPT) = STATEV(3) 142 : PARAHOT3(idimpara3-40,NPT) = STATEV(4) 143 : 144 : c plastic strains 145 : do i=1,6 146 : PARAHOT3(idimpara3-25+i,NPT) = STATEV(4+i) 147 : end do 148 : 149 : c transient creep strain at the beginning of the step 150 : do i=1,6 151 : PARAHOT3(17+i,NPT) = STATEV(10+i) 152 : end do 153 : 154 : c effective stress in compression (used for transient creep strain calculation) 155 : do i=1,6 156 : PARAHOT3(23+i,NPT) = STATEV(16+i) 157 : end do 158 : do i=1,6 159 : PARAHOT3(29+i,NPT) = PARAHOT3(23+i,NPT) 160 : end do 161 : 162 : c effective stress after convergence (used for sigf3d forward calculation) 163 : do i=1,6 164 : PARAHOT3(idimpara3-7+i,NPT) = STATEV(23+i) 165 : end do 166 : 167 : c remplissage des contraintes 168 : c remplissage du vecteur contraintes et du vecteur 169 : c increment de deformation 170 : if (.not.lcp) then 171 : do i=1,6 172 : PARAHOT3(idimpara3-13+i,NPT) = STRESS(i) 173 : sigma6v(i)= STRESS(i) 174 : deps6v(i)= DSTRAN(i) 175 : end do 176 : else 177 : do i=1,4 178 : PARAHOT3(idimpara3-13+i,NPT) = STRESS(i) 179 : sigma6v(i)= STRESS(i) 180 : deps6v(i)= DSTRAN(i) 181 : end do 182 : PARAHOT3(idimpara3-8,NPT)=0.d0 183 : PARAHOT3(idimpara3-7,NPT)=0.d0 184 : sigma6v(5) = 0.d0 185 : sigma6v(6) = 0.d0 186 : deps6v(5) = 0.d0 187 : deps6v(6) = 0.d0 188 : endif 189 : 190 : c remplissage des deformations au debut du pas t 191 : c et en fin de pas 192 : if (.not.lcp) then 193 : do i=1,6 194 : PARAHOT3(idimpara3-31+i,NPT) = STRAN(i) 195 : PARAHOT3(idimpara3-19+i,NPT) = STRAN(i) + DSTRAN(i) 196 : end do 197 : else 198 : do i=1,4 199 : PARAHOT3(idimpara3-31+i,NPT) = STRAN(i) 200 : PARAHOT3(idimpara3-19+i,NPT) = STRAN(i) + DSTRAN(i) 201 : end do 202 : endif 203 : 204 : c TEMPERATURES 205 : 206 : c ******************************************************************************** 207 : c probleme pour vecteur STATEV - STATEV(30,31,32) ne passe pas d'un pas à l'autre 208 : c => il faut passer le vecteur STATEV à 32 composantes au lieu de 29 209 : c ******************************************************************************** 210 : c actualisation de la temperature au pas courant 211 : **** TEMP = TEMP + DTEMP 212 : **** PARAHOT3(idimpara3-39,NPT) = TEMP 213 : PARAHOT3(idimpara3-39,NPT) = TETA2 214 : c actualisation éventuelle de la temperature maximale atteinte 215 : **** if (TEMP.gt.STATEV(30)) STATEV(30) = TEMP 216 : if (TETA2.gt.STATEV(30)) STATEV(30) = TETA2 217 : PARAHOT3(idimpara3-38,NPT) = STATEV(30) 218 : 219 : c phi function 220 : PARAHOT3(17,NPT) = STATEV(31) 221 : 222 : c Thermal strain 223 : PARAHOT3(idimpara3,NPT) = STATEV(32) 224 : 225 : c appel a mater2 226 : NTOT = 1 227 : 227 : CALL MATER2TG (cmat,NTOT, lerror,idimpara3, parahot3, npttot3, 228 : & ddsdde, sigma6v, deps6v,lcp,NOEL,NPT,Kinc) 229 : * print *, ' sortie de mater2tg' 230 : 230 : CALL MATER3TG (cmat,npt,idimpara3,parahot3,npttot3,lcp, 231 : . NOEL,NPT) 232 : * print *, ' sortie de mater3tg' 233 : 234 : C sauvetage des resultats 235 : 236 : c remplissage des contraintes 237 : if (.not.lcp) then 238 : do i=1,6 239 : STRESS(i) = sigma6v(i) 240 : end do 241 : else 242 : do i=1,4 243 : STRESS(i) = sigma6v(i) 244 : end do 245 : endif 246 : c if ((NOEL.eq.18).and.(NPT.eq.23)) then 247 : * print *,'GERNAY CONTRAINTES EN FIN DE PAS stress = ', stress 248 : c endif 249 : 250 : c actualisation des variables internes 251 : c accumulated plastic strain kappa at the beginning of the step 252 : c in tension and in compression 253 : STATEV(1) = PARAHOT3(idimpara3-37,NPT) 254 : STATEV(2) = PARAHOT3(idimpara3-36,NPT) 255 : 256 : c damage variable in tension and in compression 257 : STATEV(3) = PARAHOT3(idimpara3-41,NPT) 258 : STATEV(4) = PARAHOT3(idimpara3-40,NPT) 259 : 260 : c plastic strains 261 : do i=1,6 262 : STATEV(4+i) = PARAHOT3(idimpara3-25+i,NPT) 263 : end do 264 : 265 : c transient creep strain at the beginning of the step 266 : do i=1,6 267 : STATEV(10+i) = PARAHOT3(17+i,NPT) 268 : end do 269 : 270 : c effective stress in compression (used for transient creep strain calculation) 271 : do i=1,6 272 : STATEV(16+i) = PARAHOT3(23+i,NPT) 273 : end do 274 : 275 : c equivalent strain 276 : STATEV(23) = STATEV(1) + STATEV(2) 277 : 278 : c effective stress after convergence (used for sigf3d forward calculation) 279 : do i=1,6 280 : STATEV(23+i) = PARAHOT3(idimpara3-7+i,NPT) 281 : end do 282 : 283 : c maximum temperature 284 : STATEV(30) = PARAHOT3(idimpara3-38,NPT) 285 : 286 : c phi function 287 : STATEV(31) = PARAHOT3(17,NPT) 288 : 289 : c Thermal strain 290 : STATEV(32) = PARAHOT3(idimpara3,NPT) 291 : 292 : c do iloc=1,NTENS 293 : do iloc=1,4 294 : test = DABS(stress(iloc)) 295 : if (test.gt.10.d20) then 296 : print *,'>>>>>>>>>>>>>>>>>>>> problem stress = ', 297 : . stress 298 : print *,'in NOEL = , NPT = ', IB , IGAU 299 : KINC = -2 300 : endif 301 : enddo 302 : if (KINC.eq.-2) then 303 : print *,'in NOEL = , NPT = ', IB , IGAU 304 : endif 305 : * 306 : * TRANSFERT DE L'ETAT FINAL 307 : * 308 : DO I=1,NSTRS 309 : SIGF(I) = STRESS(I) 310 : ENDDO 311 : * 312 : DO I=1,NVARI 313 : VARF(I) = STATEV(I) 314 : ENDDO 315 : * 316 : RETURN 317 : END 318 : 319 :
© Cast3M 2003 - All rights reserved.
Disclaimer