30 . NEL ,IPG ,IPT ,NUPARAM ,NUVAR ,UPARAM ,
31 . UVAR ,PLA ,OFF ,THKLY ,OFFG ,
32 . SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
33 . THK ,DMG ,NPTR ,NPTS ,NPTT ,BUFLY ,
34 . TIME ,VARNL ,FAILURE )
39#include "implicit_f.inc"
46 INTEGER NEL,IPG,IPT,NUPARAM,NUVAR,NPTR,NPTS,NPTT,IR,IS,IT
49 my_real,
DIMENSION(NUPARAM),
INTENT(IN) ::
51 my_real,
DIMENSION(NEL),
INTENT(IN) ::
52 . sigoxx,sigoyy,sigoxy,sigoyz,sigozx
53 my_real ,
DIMENSION(NEL),
INTENT(INOUT) ::
54 . pla,off,offg,thk,varnl,dmg,thkly
55 my_real ,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) ::
57 TYPE(buf_lay_) :: BUFLY
63 INTEGER I,K,II,IGURSON,ITER,NITER,NINDX,INDEX(NEL),NICE
66 . CDR,KDR,HARD,YLD0,,BVOCE,
67 . Q1,Q2,ED,AN,EPN,KW,FR,FC,F0,NNU
69 . sigvm,yld2i,omega,fcosh,fsinh,dsdrdj2,dsdrdj3,normsig,
70 . dj3dsxx,dj3dsyy,dj3dsxy,dj3dszz,dj3dsyz,dj3dszx,
71 . normxx,normyy,normxy,normzz,normyz,normzx,
72 . sdpla,dphi_dtrsig,sig_dfdsig,dphi_dsig
73 my_real,
DIMENSION(NEL) ::
74 . trsig,sxx,syy,sxy,szz,syz,szx,sigm,j2,j3,sigdr,
75 . yld,trdfds,fdr,d,triax,ft,fs,fg,fn,fsh,dezz
76 . dlam_nl,plap_nl,dpla_nl,pla_nl,etat
99 nice = nint(uparam(11))
108 igurson = nint(uparam(30))
123 IF (igurson == 2)
THEN
128 pla_nl(i) = uvar(i,7)
130 pla_nl(i) = uvar(i,6)
132 IF (off(i) == one)
THEN
133 dpla_nl(i) =
max(varnl(i),zero)
134 pla_nl(i) = pla_nl(i) + dpla_nl(i)
140 uvar(i,7) = pla_nl(i)
142 uvar(i,6) = pla_nl(i)
145 IF ((nptr==1).AND.(npts==1))
THEN
148 IF (ipg == nptr*npts)
THEN
152 varnl(i) = varnl(i) + (bufly%LBUF(ir,is,ipt)%PLA(i))/(nptr*npts)
159 ELSEIF (igurson == 3)
THEN
169 pla_nl(i) = uvar(i,7)
176 pla_nl(i) = uvar(i,6)
181 IF (off(i) == one)
THEN
182 dpla_nl(i) =
max(varnl(i),zero)
183 pla_nl(i) = pla_nl(i) + dpla_nl(i)
189 yld(i) = yld0 + hard*pla(i) + qvoce*(one-exp(-bvoce*pla(i)))
196 trsig(i)= sigoxx(i) + sigoyy(i)
197 sigm(i) = -trsig(i) * third
198 sxx(i) = sigoxx(i) + sigm(i)
199 syy(i) = sigoyy(i) + sigm(i)
204 j2(i) = half*(sxx(i)**2 + syy(i)**2 + szz(i)**2 )
205 . + sxy(i)**2 + syz(i)**2 + szx(i)**2
206 j3(i) = sxx(i) * syy(i) * szz(i)
207 . + sxy(i) * syz(i) * szx(i) * two
208 . - sxx(i) * syz(i)**2
209 . - syy(i) * szx(i)**2
210 . - szz(i) * sxy(i)**2
212 fdr(i) = j2(i)**3 - cdr*(j3(i)**2)
213 IF (fdr(i) > zero)
THEN
214 sigdr(i) = kdr * exp((one/six)*log(fdr(i)))
219 IF (sigdr(i)>zero)
THEN
220 triax(i) = (trsig(i)*third)/sigdr(i)
224 IF (trsig(i)<zero)
THEN
231 IF (yld(i)>zero)
THEN
232 yld2i = one / yld(i)**2
233 dphi_dsig = two * sigdr(i) * yld2i
234 fsinh = sinh(q2*etat(i)*trsig(i)/(yld(i)*two))
235 dphi_dtrsig = q1*q2*etat(i)*fs(i)*fsinh/yld(i)
244 normsig = sqrt(sigoxx(i)*sigoxx(i)
245 . + sigoyy(i)*sigoyy(i)
246 . + two*sigoxy(i)*sigoxy(i)
247 . + two*sigoyz(i)*sigoyz(i)
248 . + two*sigozx(i)*sigozx(i))
251 IF (normsig>zero)
THEN
252 fdr(i) = (j2(i)/(normsig**2))**3 - cdr*((j3(i)/(normsig**3))**2)
253 dphi_dfdr = dphi_dsig*kdr*(one/six)*exp(-(five/six)*log(fdr(i)))
254 dsdrdj2 = dphi_dfdr*three*(j2(i)/(normsig**2))**2
255 dsdrdj3 = -dphi_dfdr*two*cdr*(j3(i)/(normsig**3))
257 dj3dsxx = two_third*(syy(i)*szz(i)-syz(i)**2)/(normsig**2)
258 . - third*(sxx(i)*szz(i)-szx(i)**2)/(normsig**2)
259 . - third*(sxx(i)*syy(i)-sxy(i)**2)/(normsig**2)
260 dj3dsyy = - third*(syy(i)*szz(i)-syz(i)**2)/(normsig**2)
261 . + two_third*(sxx(i)*szz(i)-szx(i)**2)/(normsig**2)
262 . - third*(sxx(i)*syy(i)-sxy(i)**2)/(normsig**2)
263 dj3dszz = - third*(syy(i)*szz(i)-syz(i)**2)/(normsig**2)
264 . - third*(sxx(i)*szz(i)-szx(i)**2)/(normsig**2)
265 . + two_third*(sxx(i)*syy(i)-sxy(i)**2)/(normsig**2)
266 dj3dsxy = two*(sxx(i)*sxy(i) + sxy(i)*syy(i) + szx(i)*syz(i))/(normsig**2)
267 dj3dsyz = two*(sxy(i)*szx(i) + syy(i)*syz(i) + syz(i)*szz(i))/(normsig**2)
268 dj3dszx = two*(sxx(i)*szx(i) + sxy(i)*syz(i) + szx(i)*szz(i))/(normsig
270 normxx = dsdrdj2*sxx(i)/normsig + dsdrdj3*dj3dsxx + dphi_dtrsig
271 normyy = dsdrdj2*syy(i)/normsig + dsdrdj3*dj3dsyy + dphi_dtrsig
272 normzz = dsdrdj2*szz(i)/normsig + dsdrdj3*dj3dszz + dphi_dtrsig
273 normxy = two*dsdrdj2*sxy(i)/normsig + dsdrdj3*dj3dsxy
274 normyz = two*dsdrdj2*syz(i)/normsig + dsdrdj3*dj3dsyz
275 normzx = two*dsdrdj2*szx(i)/normsig + dsdrdj3*dj3dszx
276 trdfds(i) = normxx + normyy + normzz
277 sig_dfdsig = sigoxx(i)*normxx + sigoyy(i)*normyy
278 . + sigoxy(i)*normxy + sigoyz(i)*normyz + sigozx(i)*normzx
291 IF (sig_dfdsig>zero)
THEN
292 dlam_nl(i) = ((one - ft(i))*yld(i)*dpla_nl(i))/sig_dfdsig
296 IF (time == zero)
THEN
297 IF (sig_dfdsig>em01)
THEN
298 dlam(i) = (yld(i)*pla(i))/sig_dfdsig
299 dezz(i) = -nnu*dlam(i)*(normxx + normyy) - dlam(i)*normzz
304 IF ((sig_dfdsig>em01).AND.(dlam_nl(i)>zero))
THEN
305 dezz(i) = dezz(i) + nnu*dlam_nl(i)*(normxx + normyy) + dlam_nl(i)*normzz
309 IF ((ft(i)>zero).AND.(ft(i)<fr).AND.(trdfds(i)>zero))
THEN
310 fg(i) = fg(i) + (one-ft(i))*dlam_nl(i)*trdfds(i)
312 fg(i) =
max(fg(i),zero)
315 IF ((pla_nl(i) >= ed).AND.(ft(i)<fr))
THEN
317 IF (triax(i)>=zero)
THEN
318 fn(i) = fn(i) + an*dpla_nl(i)
320 ELSEIF ((triax(i)<zero).AND.(triax(i)>=-third))
THEN
321 fn(i) = fn(i) + an*
max(one + three*triax(i),zero)*dpla_nl(i)
324 fn(i) =
max(fn(i),zero)
327 IF ((sigdr(i) > zero).AND.(ft(i)>zero).AND.(ft(i)<fr))
THEN
328 sigvm = sqrt(
max(em20,three*(j2(i)/(normsig**2))))
329 omega = one - ((twenty7 *(j3(i)/(normsig**3)))/(two*(sigvm**3)))**2
330 omega =
max(omega,zero)
331 omega =
min(omega,one)
333 . + sxy(i)*normxy+syz(i)*normyz+ szx(i)*normzx)
335 fsh(i) = fsh(i) + kw*omega*ft(i)*(sdpla/sigdr(i))
337 fsh(i) =
max(fsh(i),zero)
340 ft(i) = f0 + fg(i) + fn(i) + fsh(i)
341 ft(i) =
min(ft(i),fr)
342 IF (ft(i) >= fr)
THEN
343 IF (off(i)==one) off(i) = zero
344 IF (.NOT.failure) failure = .true.
351 fs(i) = fc + (one/q1 - fc) * (ft(i)-fc)/(fr-fc)
353 fs(i) =
min(fs(i),one/q1)
362 uvar(i,5) =
min(ft(i),fr)
363 uvar(i,6) =
min(fs(i),one/q1)
364 uvar(i,7) = pla_nl(i)
369 uvar(i,4) =
min(ft(i),fr)
370 uvar(i,5) =
min(fs(i),one/q1)
371 uvar(i,6) = pla_nl(i)
376 IF ((nptr==1).AND.(npts==1))
THEN
379 thk(i) = thk(i) + dezz(i)*thk(i)*off(i)
384 bufly%LBUF(ir,is,ipt)%THK(i) = thk(i)
389 thkly(i) = thkly(i) + dezz(i)*thkly(i)*off(i)
390 IF (ipg == nptr*npts)
THEN
395 varnl(i) = varnl(i) + (bufly%LBUF(ir,is,ipt)%PLA(i))/(nptr*npts)
396 thk(i) = thk(i) + (bufly%LBUF(ir,is,ipt)%THK(i))/(nptr*npts)
406 IF ((nptr == 1).AND.(npts == 1))
THEN
413 IF (off(i)>zero) offg(i) = one
417 IF ((ipg == 1).AND.(ipt == 1))
THEN
425 IF (bufly%LBUF(ir,is,it)%OFF(i)>zero) offg(i) = one