30 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
31 2 TIME ,TIMESTEP ,IPG ,ILAY ,IPT ,
32 3 NGL ,DMG_FLAG ,DMG_SCALE ,DFMAX ,TDEL ,
33 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
35 6 EPSP ,FWAVE_EL ,DADV ,LF_DAMMX )
41#include "implicit_f.inc"
76 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT,,LF_DAMMX
77 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
78 my_real ,
INTENT(IN) :: TIME
79 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: OFF,TIMESTEP
80 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: UPARAM
84 INTEGER ,
INTENT(OUT) ::DMG_FLAG
85 INTEGER ,
DIMENSION(*) :: FWAVE_EL
86 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
87 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: DADV,
88 . SIGNXX,SIGNYY,SIGNXY,EPSP
89 ,
DIMENSION(NEL,LF_DAMMX) ,
INTENT(INOUT) :: DFMAX
90 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: tdel,dmg_scale
91 my_real ,
DIMENSION(NEL,NUVAR)INTENT(INOUT)
97INTEGER ,
DIMENSION(7,NEL) :: MODE
98 my_real :: ,SIGT2,SIGC1,SIGC2,CSIG,FSIG12,MSIG12,MSIG23,
99 . MSIG13,ANGLE,SDEL,TMAX,RATIO,F1,F2,F3,F4,,SIG,P,F6,F7,
100 . TSIG12,XSIG12,XSIG23,DAMMX, TELEM,K2M,INSTF,K0,,K2,K3,
101 . zep669741,dtinv,km,epspref,filt,
alpha
103 zep669741 = six*em01 + six*em02 + nine*em3 + seven*em04 +
106 imodel = int(uparam(1))
119 ifail_sh = int(uparam(15))
121 dmg_flag = int(uparam(18))
122 tmod = int(uparam(19))
126 ifrwave = nint(uparam(23))
137 IF (time == zero)
then
141 IF (ifrwave > 1)
THEN
143 IF (fwave_el(i) /= 0) dadv(i) = uparam(24)
152 IF (off(i) == one .and. foff(i) == 1)
THEN
159 dtinv = timestep(i)/
max(timestep(i)**2,em20)
165 epsp(i)=(one -
alpha)*uvar(i,11) +
alpha*epsp(i)
167 IF (uvar(i,6) == zero)
THEN
171 sig = half*(signxx(i) + abs(signxx(i)))
173 . + (signxy(i)**2 + signzx(i)**2)/fsig12**2
174 dfmax(i,2) =
max(dfmax(i,2),f1)
175 dfmax(i,2) =
min(dfmax(i,2),one)
177 sig = -half*signyy(i)
178 sig = -signxx(i) + half*(sig + abs(sig))
179 sig = half*(sig + abs(sig))
181 dfmax(i,3) =
max(dfmax(i,3),f2)
182 dfmax(i,3) =
min(dfmax(i,3),one)
185 p = -third*(signxx(i) + signyy(i))
186 IF (p > 0) f3 = (p/csig)**2
187 dfmax(i,4) =
max(dfmax(i,4),f3)
188 dfmax(i,4) =
min(dfmax(i,4),one)
192 f5 = (signyz(i)/msig23)**2 + (signzx(i)/msig13)**2
194 dfmax(i,6) =
max(dfmax(i,6),f5)
195 dfmax(i,6) =
min(dfmax(i,6),one)
198 IF (signyy(i) < zero
THEN
199 xsig12 = msig12 - signyy(i)*(tan
200 xsig23 = msig23 - signyy(i)*(tan(angle))
205 sig = half*(signyy(i) + abs(signyy(i)))
207 . + (signyz(i)/xsig23)**2 + (signxy(i)/xsig12)**2
208 dfmax(i,5) =
max(dfmax(i,5),f4)
209 dfmax(i,5) =
min(dfmax(i,5),one)
211 dammx =
min(one,
max(f1,f2,f3,f4,f5))
212 dfmax(i,1) =
min(one,dammx)
213 IF (dammx >= dadv(i))
THEN
218 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
219 . abs(signxy(i)),abs(signyz(i)),abs(signzx(i)))
220 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
222 k2 = zep669741*fac*epsp(i)**2
223 k2m = zep669741*fac*km*epspref**2
224 k2 =
max(k2m,k2,em20)
225 telem = (sqrt(k1**2+4*k2*k0)-k1)/2/k2
227 IF (f1>=dadv(i)) mode(1,i) = 1
228 IF (f2>=dadv(i)) mode(2,i) = 1
229 IF (f3>=dadv(i)) mode(3,i) = 1
230 IF (f4>=dadv(i)) mode(4,i) = 1
231 IF (f5>=dadv(i)) mode(5,i) = 1
232 IF (dmg_flag == 0)
THEN
233 uvar(i,1) = signxx(i)
234 uvar(i,2) = signyy(i)
235 uvar(i,3) = signxy(i)
236 uvar(i,4) = signyz(i)
237 uvar(i,5) = signzx(i)
242 IF (uvar(i,6) > zero .AND. time > uvar(i,6) )
THEN
244 telem =
max((timestep(i)*1.0),tmax*(epspref/epsp(i))**2)
245 dmg_scale(i)= dmg_scale(i)*exp(-timestep(i)/telem)
246 ELSEIF(tmod == 2)
THEN
248 dmg_scale(i) = exp(-(time - uvar(i,6))/telem)
250 dmg_scale(i) = exp(-(time - uvar(i,6))/tmax)
252 IF (dmg_scale(i) < em02)
THEN
257 IF (dmg_flag == 0)
THEN
258 signxx(i) = uvar(i,1)*dmg_scale(i)
259 signyy(i) = uvar(i,2)*dmg_scale(i)
260 signxy(i) = uvar(i,3)*dmg_scale(i)
261 signyz(i) = uvar(i,4)*dmg_scale(i)
262 signzx(i) = uvar(i,5)*dmg_scale(i)
271 IF (off(i) == one .and. foff(i) == 1)
THEN
281 dtinv = timestep(i)/
max(timestep(i)**2,em20)
287 epsp(i)=(one -
alpha)*uvar(i,11) +
alpha*epsp(i)
289 IF (uvar(i,6) == zero)
THEN
293 sig = half*(signxx(i) + abs(signxx(i)))
295 . + (signxy(i)**2 + signzx(i)**2)/fsig12**2
296 dfmax(i,2) =
max(dfmax(i,2),f1)
297 dfmax(i,2) =
min(dfmax(i,2),one)
300 sig = half*(signyy(i) + abs(signyy(i)))
301 tsig12 = fsig12*sigt2/sigt1
303 . + (signxy(i)**2 + signyz(i)**2)/tsig12**2
304 dfmax(i,3) =
max(dfmax(i,3),f2)
305 dfmax(i,3) =
min(dfmax(i,3),one)
308 IF (signxx(i) < zero) f3 = (signxx(i)/sigc1)**2
309 dfmax(i,4) =
max(dfmax(i,4),f3)
310 dfmax(i,4) =
min(dfmax(i,4),one)
311 IF (signyy(i) < zero) f4 = (signyy(i)/sigc2)**2
312 dfmax(i,5) =
max(dfmax(i,5),f4)
313 dfmax(i,5) =
min(dfmax(i,5),one)
316 p = -third*(signxx(i) + signyy(i) )
317 IF (p > zero) f5 = (p/csig)**2
318 dfmax(i,6) =
max(dfmax(i,6),f5)
319 dfmax(i,6) =
min(dfmax(i,6),one)
322 f6 = (signxy(i)/msig12)**2
323 dfmax(i,7) =
max(dfmax(i,7),f6)
324 dfmax(i,7) =
min(dfmax(i,7),one)
327 f7 = (signyz(i)/msig23)**2 + (signzx(i)/msig13)**2
329 dfmax(i,8) =
max(dfmax(i,8),f7)
330 dfmax(i,8) =
min(dfmax(i,8),one)
332 dammx =
min(one,
max(f1,f2,f3,f4,f5,f6,f7))
333 dfmax(i,1) =
min(one,dammx)
334 IF (dammx >= dadv(i))
THEN
339 fac = hundred*
max(abs(signxx(i)),abs(signyy(i)),
340 . abs(signxy(i)),abs(signyz(i)),abs(signzx(i)))
341 k0 = fac*epspref**2*zep669741*tmax**2 + zep9*epspref*tmax
343 k2 = zep669741*fac*epsp(i)**2
344 k2m = zep669741*fac*km*epspref**2
345 k2 =
max(k2m,k2,em20)
346 telem = (sqrt(k1**2+4*k2*k0)-k1)/2/k2
349 IF (f1>=dadv(i)) mode(1,i) = 1
350 IF (f2>=dadv(i)) mode(2,i) = 1
351 IF (f3>=dadv(i)) mode(3,i) = 1
352 IF (f4>=dadv(i)) mode(
353 IF (f5>=dadv(i)) mode(5,i) = 1
354 IF (f6>=dadv(i)) mode(6,i) = 1
355 IF (f7>=dadv(i)) mode(7,i) = 1
356 IF (dmg_flag == 0)
THEN
357 uvar(i,1) = signxx(i)
358 uvar(i,2) = signyy(i)
359 uvar(i,3) = signxy(i)
360 uvar(i,4) = signyz(i)
361 uvar(i,5) = signzx(i)
366 IF (uvar(i,6) > zero .AND. time > uvar(i,6) )
THEN
369 telem =
max((timestep(i)*1.0),tmax*(epspref/epsp(i
370 dmg_scale(i)=dmg_scale(i)*exp(-timestep(i)/telem)
371 ELSEIF(tmod == 2)
THEN
373 dmg_scale(i)=exp(-(time - uvar(i,6))/telem)
375 dmg_scale(i)= exp(-(time - uvar(i,6))/tmax)
378 IF (dmg_scale(i) < em02)
THEN
383 IF (dmg_flag == 0)
THEN
384 signxx(i) = uvar(i,1)*dmg_scale(i)
385 signyy(i) = uvar(i,2)*dmg_scale(i)
386 signxy(i) = uvar(i,3)*dmg_scale(i)
387 signyz(i) = uvar(i,4)*dmg_scale(i)
388 signzx(i) = uvar(i,5)*dmg_scale(i)
391 ELSEIF (foff(i) == 0)
THEN
408 WRITE(iout ,1000) ngl(i),ipg,ilay,ipt
409 WRITE(istdo ,1000) ngl(i),ipg,ilay,ipt
410 WRITE(iout ,2000) imode,time
411 WRITE(istdo ,2000) imode,time
412 WRITE(iout ,3000) signxx(i),signyy(i),signxy(i),
413 . signyz(i),signzx(i)
414 IF (dadv(i) < one)
WRITE(iout,4000) dadv(i)
415#include "lockoff.inc"
421 1000
FORMAT(1x,
'FAILURE (HASHIN) OF SHELL ELEMENT ',i10,
422 . 1x,
',GAUSS PT',i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3)
423 2000
FORMAT(10x,
'HASHIN MODE #',i10,1x, ',time
#:',1PE12.4)
424 3000
FORMAT(10x,
'RESPONSIBLE STRESS: SIG_11= ',1pe12.4,
425 . 1x,
'SIG_22= ',1pe12.4,1x,
'SIG_12= ',1pe12.4,/,
426 . 10x,
'SIG_13= ',1pe12.4,1x,
'SIG_23= ',1pe12.4,1x)
427 4000
FORMAT(1x,
'CRITERIA REDUCTION FACTOR= ',1pe12.4)