32 1 NEL ,UPARAM ,NUPARAM ,UVAR ,NUVAR ,
33 2 TIME ,NGL ,IPT ,DPLA ,PLA ,
34 3 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
35 4 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
36 5 DFMAX ,NFUNC ,IFUNC ,ALDT ,FOFF ,
37 6 IPG ,DMG_FLAG ,DMG_SCALE,NPF ,TF )
41#include "implicit_f.inc"
49#include "tabsiz_c.inc"
53 INTEGER,
INTENT(IN) ::
54 . NEL ,NUPARAM,NUVAR ,IPT ,NFUNC ,
55 . IPG ,NGL(NEL),IFUNC(NFUNC)
56 my_real,
INTENT(IN) ::
57 . ,UPARAM(NUPARAM),DPLA(NEL) ,PLA(NEL),
58 . ALDT(NEL),EPSXX(NEL) ,EPSYY(NEL),
59 . epsxy(nel),epsyz(nel) ,epszx(nel)
63 INTEGER,
INTENT(INOUT) ::
65 my_real,
INTENT(INOUT) ::
66 . UVAR(NEL,NUVAR),DFMAX(NEL),DMG_SCALE(NEL) ,
67 . SIGNXX(NEL),SIGNYY(NEL),SIGNXY(NEL),SIGNYZ(NEL),
72 INTEGER,
INTENT(IN) :: NPF(SNPC)
73 my_real,
INTENT(IN) :: TF(STF)
80 INTEGER I,J,NINDX,INST,DINIT,IFORM
81 INTEGER,
DIMENSION(MVSIZ) :: INDX
83 . c1 ,c2 ,c3 ,c4 ,c5 ,c6 ,
84 . n_val ,softexp,ref_len,reg_scale,dam_sf,max_dam
86 . lambda ,dydx ,fac(nel),dc(nel),p ,svm ,
87 . triax ,cos3theta,lodep ,epsfail,e12 ,s1 ,
88 . s2 ,q ,emaj ,emin ,beta ,
alpha ,
89 . equa1 ,equa2 ,e1 ,eps_c ,dinst(nel),epfmin,
101 iform = nint(uparam(7))
102 dinit = nint(uparam(8))
105 inst = nint(uparam(11))
109 reg_scale = uparam(15)
113 IF (inst > 0) dmg_flag = 1
117 IF (uvar(1,1) == zero) uvar(1:nel,1) = one
118 IF (uvar(1,3) == zero)
THEN
119 IF (ifunc(1) > 0)
THEN
121 lambda = aldt(i)/ref_len
122 uvar(i,3) = finter(ifunc(1),lambda,npf,tf,dydx
123 uvar(i,3) = uvar(i,3)*reg_scale
143 IF (time == zero .AND. isigi /= 0 .AND. dinit > 0)
THEN
145 IF (pla(i) > zero)
THEN
148 s1 = half*(epsxx(i) + epsyy(i))
149 s2 = half*(epsxx(i) - epsyy(i))
150 q = sqrt(s2**2 + e12**2)
154 beta = emin/
max(emaj,em20)
155 beta =
max(-one,beta)
156 beta =
min( one,beta)
158 triax = (one/sqrt(three))*((one + beta)/sqrt(one + beta + beta**2))
159 IF (triax < -two_third) triax = -two_third
160 IF (triax > two_third) triax = two_third
162 cos3theta = -half*twenty7*triax*(triax**2 - third)
163 IF (cos3theta < -one ) cos3theta = -one
164 IF (cos3theta > one ) cos3theta = one
165 lodep = one - two*acos
167 epsfail = c1 + c2*triax + c3*lodep + c4*(triax**2) +
168 . c5*(lodep**2) + c6*triax*lodep
169 epsfail = epsfail*fac(i)
170 epsfail =
max(epfmin,epsfail)
172 dfmax(i) = pla(i)/
max(epsfail,em6)
173 dfmax(i) = dfmax(i)*dam_sf
174 dfmax(i) =
min(max_dam,dfmax(i))
176 IF (inst > 0 .AND. triax > em10)
THEN
178 alpha = (two*beta + one)/(two + beta)
182 e1 = (two*(two-
alpha)*equa1/
max(equa2,em20))*n_val
183 eps_c = e1*sqrt(four*third*(one + beta + beta**2))
186 dinst(i) = pla(i)/
max(eps_c,em20)
209 IF (foff(i) /= 0 .AND. dpla(i) > zero)
THEN
212 p = third*(signxx(i) + signyy(i))
214 svm = signxx(i)**2 + signyy(i)**2 - signxx(i)*signyy(i) +
216 svm = sqrt(
max(svm,zero))
217 triax = p/
max(em20,svm)
218 IF (triax < -two_third) triax = -two_third
219 IF (triax > two_third) triax = two_third
222 cos3theta = -half*twenty7*triax*(triax**2 - third)
223 IF (cos3theta < -one ) cos3theta = -one
224 IF (cos3theta > one ) cos3theta = one
225 lodep = one - two*acos(cos3theta)/pi
228 epsfail = c1 + c2*triax + c3*lodep + c4*(triax**2) +
229 . c5*(lodep**2) + c6*triax*lodep
230 epsfail = epsfail*fac(i)
231 epsfail =
max(epfmin,epsfail)
234 dfmax(i) = dfmax(i) + dpla(i)/
max(epsfail,em20)
235 dfmax(i) =
min(dfmax(i),one)
240 IF (dinst(i) < one .AND. triax > em10)
THEN
242 delta = three*(triax**2)*(four - nine*(triax**2))
243 denom = two*(three*(triax**2)-one)
244 denom = sign(
max(abs(denom),em20),denom)
245 beta = ((two - three*(triax**2))-sqrt(delta))/denom
246 beta =
max(-one,beta)
247 beta =
min( one,beta)
249 alpha = (two*beta + one)/(two + beta)
253 e1 = (two*(two-
alpha)*equa1/
max(equa2,em20))*n_val
254 eps_c = e1*sqrt(four*third*(one + beta + beta**2))
258 dinst(i) =
max(dinst(i),pla(i)/
max(eps_c,em20))
260 dinst(i) = dinst(i) + dpla(i)/
max(eps_c,em20)
262 dinst(i) =
min(dinst(i),one)
265 IF (dinst(i) >= one)
THEN
273 IF (dfmax(i) >= one)
THEN
287 IF (dfmax(i) >= dc(i))
THEN
288 IF (dc(i) < one)
THEN
289 dmg_scale(i) = one - ((dfmax(i)-dc(i))/
max(one-dc(i),em20))**softexp
306 WRITE(iout, 1000) ngl(i),ipg,ipt,time
307 WRITE(istdo,1000) ngl(i),ipg,ipt,time
308#include "lockoff.inc"
312 1000
FORMAT(1x,
'FOR SHELL ELEMENT NUMBER el#',i10,
313 .
' FAILURE (SYAZWAN) AT GAUSS POINT ',i3,
' LAYER ',i3,
314 .
' AT TIME :',1pe12.4)
subroutine fail_syazwan_c(nel, uparam, nuparam, uvar, nuvar, time, ngl, ipt, dpla, pla, signxx, signyy, signxy, signyz, signzx, epsxx, epsyy, epsxy, epsyz, epszx, dfmax, nfunc, ifunc, aldt, foff, ipg, dmg_flag, dmg_scale, npf, tf)