29 1 NEL ,NUPARAM ,NUVAR ,JSMS ,TIME ,TIMESTEP,
30 2 UPARAM ,UVAR ,AREA ,EPSD ,OFF ,OFFL ,
31 3 EPSZZ ,EPSYZ ,EPSZX ,DEPSZZ ,DEPSYZ ,DEPSZX ,
32 4 SIGNZZ ,SIGNYZ ,SIGNZX ,STIFM ,DMELS ,DMG ,
33 5 PLA_N ,PLA_T ,IPG ,NFAIL ,NGL )
37#include "implicit_f.inc"
45 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,JSMS,IPG
46 INTEGER ,
INTENT(OUT) :: NFAIL
47 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
48 ,
INTENT(IN) :: TIME,TIMESTEP
49 my_real ,
DIMENSION(NEL) :: OFF,OFFL,PLA_N,PLA_T,AREA,DMELS,
50 . epszz,epsyz,epszx,depszz,depsyz,depszx,signzz,signyz,signzx
51 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: dmg
52 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: epsd,stifm
53 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
54 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
58 INTEGER :: II,IEL,IORDER1,IORDER2,IFAIL1,IFAIL2,ICRIT,NINDXF,NINDXD
59 INTEGER ,
DIMENSION(NEL) :: INDXF,INDXD
60 my_real :: RHO0,E,G,GC1_INI,GC2_INI,GC1_INF,GC2_INF,RATG1,RATG2
64 my_real,
DIMENSION(NEL) :: yld_n,yld_t,gc_n,gc_t,epsm1,epsm2,epsmf,
65 . cosg,sing,epsn,epst,epsm,epsn1,epsn2,epst1,epst2,epsp,
109 dtinv = one / (
max(timestep, em20)
114 pla_n(:nel) = uvar(:nel,1)
115 pla_t1(:nel) = uvar(:nel,2)
116 pla_t2(:nel) = uvar(:nel,3)
119 et2 = epsyz(iel)**2 + epszx(iel)**2
120 epsn(iel) =
max(epszz(iel), zero)
121 epst(iel) = sqrt(et2)
122 epsm(iel) = sqrt(et2 + epsn(iel)**2)
128 IF (uvar(iel,5) == zero)
THEN
129 epsdot = sqrt(depsyz(iel)**2 + depszx(iel)**2 + depszz(iel)**2)
130 epsdot = epsdot * dtinv / thick
131 epsp(iel) = alpha *epsdot + alphai * uvar(iel,4)
132 epsd(iel) = epsp(iel)
133 uvar(iel,4) = epsp(iel)
135 epsp(iel) = uvar(iel,4)
143 IF (sigb1 > zero)
THEN
144 IF (iorder1 == 1)
THEN
146 IF (epsp(iel) > rate1)
THEN
147 yld_n(iel) = siga1 + sigb1*log(epsp(iel)/rate1)
150 ELSE IF (iorder1 == 2)
THEN
152 IF (epsp(iel) > rate1)
THEN
153 yld_n(iel) = siga1 + sigb1*log(epsp(iel)/rate1)**2
159 IF (sigb2 > zero)
THEN
160 IF (iorder2 == 1)
THEN
162 IF (epsp(iel) > rate2)
THEN
163 yld_t(iel) = siga2 + sigb2*log(epsp(iel)/rate2)
166 ELSE IF (iorder2 == 2)
THEN
168 IF (epsp(iel) > rate2)
THEN
169 yld_t(iel) = siga2 + sigb2*log(epsp(iel)/rate2)**2
179 IF (gc1_inf > zero)
THEN
182 IF (epsp(iel) > zero)
THEN
183 gc_n(iel) = gc1_ini + (gc1_inf-gc1_ini)*exp(-ratg1/epsp(iel))
188 IF (gc2_inf > zero)
THEN
191 IF (epsp(iel) > zero)
THEN
192 gc_t(iel) = gc2_ini + (gc2_inf-gc2_ini)*exp(-ratg2/epsp(iel))
198 epsn1(iel) = yld_n(iel) / e
199 epst1(iel) = yld_t(iel) / g
204 IF (ifail1 == 1)
THEN
206 epsn2(iel) = epsn1(iel) + fg1 * gc_n(iel)/yld_n(iel)
210 epsn2(iel) = (epsn1(iel) + two*fg1*gc_n(iel
216 epst2(iel) = epst1(iel) + fg2 * gc_t(iel)/yld_t(iel)
220 epst2(iel) = (epst1(iel) + two*fg2*gc_t(iel) / yld_t(iel)) / (fg2 + one)
228 IF (epst(iel) == zero)
THEN
229 epsm1(iel) = epsn1(iel)
230 epsm2(iel) = epsn2(iel)
231 ELSE IF (epsn(iel) == zero)
THEN
232 epsm1(iel) = epst1(iel)
233 epsm2(iel) = epst2(iel)
235 beta = epst(iel) / epsn(iel)
236 fact1 = sqrt((one+beta**2) /(epst1(iel)**2 + (beta*epsn1(iel))**2))
237 fact2 = sqrt((one+beta**2) /(epst2(iel)**2 + (beta*epsn2(iel))**2))
238 epsm1(iel) = epsn1(iel)*epst1(iel)*fact1
239 epsm2(iel) = epsn2(iel)*epst2(iel)*fact2
241 IF (epsm(iel) > epsm1(iel)) uvar(iel,5) = one
245 IF (epst(iel) == zero)
THEN
246 epsm1(iel) = epsn1(iel)
247 epsm2(iel) = epsn2(iel)
248 ELSE IF (epsn(iel) == zero)
THEN
249 epsm1(iel) = epst1(iel)
250 epsm2(iel) = epst2(iel)
252 beta = epst(iel) / epsn(iel)
253 IF (beta*epsn1(iel) > epst1(iel))
THEN
254 epsm1(iel) = epst1(iel)*sqrt
256 epsm1(iel) = epsn1(iel)*sqrt(one + beta**2)
258 IF (beta*epsn2(iel) > epst2(iel))
THEN
261 epsm2(iel) = epsn2(iel)*sqrt(one + beta**2)
264 IF (epsm(iel) > epsm1(iel)) uvar(iel,5
271 IF (epsn(iel) == zero)
THEN
274 ELSE IF (epst(iel) == zero)
THEN
277 ELSE IF (epsm(iel) > zero)
THEN
278 cosg(iel) = epszz(iel) / epsm(iel)
279 sing(iel) = epst(iel) / epsm(iel)
281 IF (epsm(iel) > zero)
THEN
282 dm = epsm1(iel) - epsm2(iel)
283 bb = epsm1(iel)*(e*gc_t(iel)*cosg(iel)**2 + g*gc_n(iel)*sing(iel)**2)
284 epsmf(iel) = dm + two*gc_t(iel)*gc_n(iel) / bb
291 dm = epsm(iel) - epsm2(iel)
292 IF (off(iel) > zero .and. dm > zero)
THEN
293 IF (uvar(iel,6) == zero)
THEN
297 dam = dm /
max((epsmf(iel) - epsm2(iel)), em20)
298 dam =
max(dam, uvar(iel,6))
300 dmg(iel) =
max(dmg(iel), dam)
301 dmg(iel) =
min(dmg(iel), one)
302 IF (off(iel)*offl(iel) == one .and. epsm(iel) > epsmf(iel))
THEN
313 IF (off(iel)*offl(iel) == one)
THEN
314 dpn = epsn(iel) - epsm1(iel)*cosg(iel)
316 pla_n(iel) =
max(dpn, pla_n(iel))
317 uvar(iel,1) = pla_n(iel)
319 dpt1 = epsyz(iel) - pla_t1(iel)
320 dpt2 = epszx(iel) - pla_t2(iel)
321 dpt = sqrt(dpt1**2 + dpt2**2)
322 IF (dpt > epsm1(iel)*sing(iel))
THEN
323 pla_t1(iel) = pla_t1(iel) + depsyz(iel)
324 pla_t2(iel) = pla_t2(iel) + depszx(iel)
325 uvar(iel,2) = pla_t1(iel)
326 uvar(iel,3) = pla_t2(iel)
327 pla_t(iel) = sqrt(pla_t1(iel)**2 + pla_t2(iel)**2)
335 signzz(iel) = e * (epszz(iel) - pla_n(iel))*(one-dmg(iel))*off(iel)
336 signyz(iel) = g * (epsyz(iel) - pla_t1(iel))*(one-dmg(iel))*off(iel)
337 signzx(iel) = g * (epszx(iel) - pla_t2(iel))*(one-dmg(iel))*off(iel)
339 uvar(iel,7) = epsn(iel)
340 uvar(iel,8) = epst(iel)
341 uvar(iel,9) = epsm(iel)
342 uvar(iel,10) = epsm1(iel)
343 uvar(iel,11) = epsm1(iel)
344 uvar(iel,12) = epsmf(iel)
348 IF (idtmins==2 .AND. jsms/=0)
THEN
349 dtb = (dtmins/dtfacs)**2
351 dmels(iel)=
max(dmels(iel),half*dtb*stf*area(iel)*off(iel))
354 stifm(1:nel) = stifm(1:nel) + stf*area(1:nel)*off(1:nel)
360 WRITE(iout ,1000) ngl(iel),ipg,epsm(iel)
361#include "lockoff.inc"
369 WRITE(iout ,2000) ngl(iel),ipg,epsm(iel)
370 WRITE(istdo,2100) ngl(iel),ipg,epsm(iel),time
371#include "lockoff.inc"
375 1000
FORMAT(5x,
'START DAMAGE COHESIVE ELEMENT ',i10,
376 .
' INTEGRATION POINT',i2,
', MIXED MODE STRAIN=',1pe16.9)
377 2000
FORMAT(5x,
'FAILURE COHESIVE ELEMENT ',i10,
378 .
' INTEGRATION POINT',i2,
', MIXED MODE STRAIN='
379 2100
FORMAT(5x,
'FAILURE COHESIVE ELEMENT ',i10,
380 .
' INTEGRATION POINT',i2,
', MIXED MODE STRAIN=',1pe16.
381 .
' AT TIME ',1pe16.9)
subroutine sigeps116(nel, nuparam, nuvar, jsms, time, timestep, uparam, uvar, area, epsd, off, offl, epszz, epsyz, epszx, depszz, depsyz, depszx, signzz, signyz, signzx, stifm, dmels, dmg, pla_n, pla_t, ipg, nfail, ngl)